Как я могу подписать управление ActiveX с сертификатом подписания кода и быть проверенным издателем?
-
26-09-2019 - |
Вопрос
Я пытаюсь подписать элемент управления ActiveX с сертификатом подписания кода, выданный Thawte. Я смог успешно подписать контроль с помощью SignTool.exe.
Когда я смотрю на свойства файла, он говорит: «Сертификат в подписи не может быть проверен».
Когда я рассматриваю сертификат, он говорит, что «Windows не имеет достаточно информации, чтобы проверить сертификат».
На вкладке «Кертификационные пути» она говорит: «Эмитент этого сертификата не может быть найден».
В Internet Explorer сертификат признан подписанным, но пользователь получает предупреждения о том, что издатель не проверяется.
Я попробовал создать один файл PFX, содержащий мой сертификат вместе с корневым и промежуточным сертификатами, которые цепят для моего сертификата разработчика Thawte, а затем повторно подписать элемент управления с использованием этого файла PFX. Нет кости.
Какие-либо предложения?
Решение
Вопрос на самом деле содержит правильную процедуру - выполните подпись с помощью файла PFX, который содержит корневой сертификат, промежуточный сертификат, сертификат разработчика и закрытый ключ. Также используйте сервер Timestamp. Моя проблема заключалась в том, что у меня был неправильный корневой сертификат, включенный в мой PFX, поэтому сертификат, используемый для подписания, не может церовать обратно к корню.
По запросу, вот информация о том, как создать файл PFX. The 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
В RetSepect я мог бы сохранить время с использованием Signcode.exe aka Мастер подписи кода (который, я думаю, является частью .NET SDK), который использует файлы .spc и .pvk напрямую.