Я пытаюсь подписать элемент управления ActiveX с сертификатом для подписывания кода, выпущенным Thawte. Я смог успешно подписать управление с помощью signtool.exe.
Когда я смотрю на свойства файла, это говорит, что "Сертификат в подписи не может быть проверен".
Когда я просматриваю сертификат, он говорит, что "Windows не имеет достаточной информации для проверки сертификата".
На вкладке пути сертификации это говорит, что "Выпускающий этого сертификата не может быть найден".
В Internet Explorer сертификат распознан, как подписано, но пользователь получает предупреждения, что издатель не проверяется.
Я попытался создать единственный файл PFX, содержащий мой сертификат наряду с корневыми и промежуточными сертификатами что цепочка к моему сертификату разработчика Thawte и затем отставка управления с помощью этого файл PFX. Провал.
Какие-либо предложения?
Вопрос содержит правильную процедуру - сделайте подпись с помощью PFX файла, который содержит корневой сертификат, промежуточный сертификат, сертификат разработчика и закрытый ключ. Также используйте сервер временных меток. Моя проблема заключалась в том, что я включил в PFX неправильный корневой сертификат, поэтому сертификат, используемый для подписи, не мог быть привязан к корню.
По запросу, вот информация о том, как создать файл PFX. cert2spc и pvk2pfx, которые я использую ниже, также находятся в SDK платформы.
cert2spc certpath1.cer certpath2.cer certpath3.cer codesign.spc
Где список .cer файлов включает корневой, промежуточный и сертификат подписи кода, а codesign.spc является выходным файлом. Затем:
pvk2pfx -pvk privkey.pvk -spc codesign.spc
Запуск pvk2pfx таким образом запускает мастер, который запрашивает парольную фразу закрытого ключа, местоположение выходного файла и парольную фразу для выходного файла.
Наконец, signtool выполняет фактическую подпись кода:
signtool sign /f my_certificates.pfx /p my_passphrase /t http://timestamp.verisign.com/scripts/timstamp.dll my_activex_control.ocx
Оглядываясь назад, я мог бы сэкономить время, используя signcode.exe aka мастер подписи кода (который, как я думаю, является частью .NET SDK), который использует .spc и .pvk файлы напрямую.