Как я могу указать адрес электронной почты при подписании бинарного файла?

Я использую Signtool, чтобы применить цифровую подпись к различным .exe/.dll файлы. Однако просмотр подписанных файлов в проводнике Windows показывает, что адрес электронной почты не задан, как на этом скриншоте (я никоим образом не связан с "Paramount Software UK Ltd." - эти снимки экрана - только первый результат, который я найден через гугл):

Снимок экрана проводника Windows с деталями подписи без адреса электронной почты

Тем не менее, я также видел другие скриншоты, показывающие, что каким-то образом можно определить адрес электронной почты (даже если это поддельный, как в этом случае):

Снимок экрана проводника Windows с информацией о подписи, включая адрес электронной почты

Можно ли установить этот адрес электронной почты через 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", в которой объясняется:

Адрес электронной почты всегда отображается как "недоступен" при просмотре свойств подписанного кода. Это связано с тем, что сертификат подтверждает организацию, но не требует информации об адресе электронной почты организации. Таким образом, мы проверили организацию, но не подтвердили адрес электронной почты. Это никоим образом не уменьшает ценность или полезность вашего идентификатора.

Таким образом, адрес электронной почты не только является частью сертификата, но и то, можете ли вы связать адрес электронной почты с сертификатом, также зависит от того, кто выпустил сертификат.

Другие вопросы по тегам