Как я могу указать адрес электронной почты при подписании бинарного файла?
Я использую Signtool, чтобы применить цифровую подпись к различным .exe
/.dll
файлы. Однако просмотр подписанных файлов в проводнике Windows показывает, что адрес электронной почты не задан, как на этом скриншоте (я никоим образом не связан с "Paramount Software UK Ltd." - эти снимки экрана - только первый результат, который я найден через гугл):
Тем не менее, я также видел другие скриншоты, показывающие, что каким-то образом можно определить адрес электронной почты (даже если это поддельный, как в этом случае):
Можно ли установить этот адрес электронной почты через signtool
или это действительно свойство самого сертификата (т.е. его необходимо указывать при покупке сертификата)?
2 ответа
Свойство электронной почты, из которого оно извлечено emailAddress
в subject distinguished name
поле вашего сертификата.
Вы можете сделать тест с использованием openssl для создания собственного сертификата (затем вы можете сгенерировать CSR
с emailAddress
и отправить в центр сертификации для создания действительного сертификата конечного объекта). Чтобы проверить это, вы можете сделать следующие шаги:
Создайте самоподписанный сертификат, используя следующую openssl
команда
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
Затем вам будет предложено ввести следующие параметры (все для предмета сертификата):
Чтобы избежать этой подсказки, вы можете напрямую указать subject
в предыдущей команде, используя -subj
следующим образом:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -subj "/C=ES/ST=58/L=Barcelona/O=yourOrgName/OU=yourDept/CN=yourAppName/emailAddress=myEmail@test.com"
Теперь вы можете создать p12
(или же pfx
) из сгенерированного ключа и сертификации с помощью следующей команды:
openssl pkcs12 -export -out myTestWithMail.pfx -inkey key.pem -in cert.pem
Теперь у вас есть p12
(myTestWithMail.pfx), который вы можете использовать для подписи exe
или же dll
используя следующее signtool
команда. Например я подписываю notepad++.exe
(как в примерах, на которые вы ссылаетесь в своем вопросе):
signtool.exe sign /f C:\Users\Albert\myTestWithMail.pfx /p 1234 "C:\Program Files (x86)\Notepad++\notepad++.exe"
Обратите внимание, что /f
для пути вашего ключа подписи, и /p
пароль для вашего ключа
Теперь вы можете увидеть письмо в файле, который вы подписываете:
Итак, наконец, если вам нужен сертификат от центра сертификации, вы должны сгенерировать CSR
указав emailAddress
например, используя openssl
команда:
openssl req -new -newkey rsa:2048 -nodes -out yourAppName.csr -keyout yourAppName.key -subj "/C=ES/ST=58/L=Barcelona/O=yourOrgName/OU=yourDept/CN=yourAppName/emailAddress=myEmail@test.com"
Или в качестве альтернативы без указания -subj
Параметр и введите правильные значения для отличительного имени субъекта, когда будет предложено:
openssl req -new -newkey rsa:2048 -nodes -out yourAppName.csr -keyout yourAppName.key
Надеюсь это поможет,
Краткий ответ: Да, адрес электронной почты является частью сертификата, и нет, вы не можете указать его при подписании двоичного файла.
Длинный ответ: @albciff указал, как создать сертификат, с которым связан адрес электронной почты, но, похоже, вам не повезло, если вы купили сертификат у Thawte; мой коллега задал этот точный вопрос технической поддержке нашего поставщика сертификатов (Thawte), который ответил:
При регистрации на сертификат подписи кода используемый адрес электронной почты не является частью процесса проверки. К сожалению, поскольку электронное письмо не является частью процесса проверки, оно не будет включено в свойства подписанного кода.
Кроме того, служба технической поддержки направила нас к этой статье в "Центре знаний Thawte", в которой объясняется:
Адрес электронной почты всегда отображается как "недоступен" при просмотре свойств подписанного кода. Это связано с тем, что сертификат подтверждает организацию, но не требует информации об адресе электронной почты организации. Таким образом, мы проверили организацию, но не подтвердили адрес электронной почты. Это никоим образом не уменьшает ценность или полезность вашего идентификатора.
Таким образом, адрес электронной почты не только является частью сертификата, но и то, можете ли вы связать адрес электронной почты с сертификатом, также зависит от того, кто выпустил сертификат.