Я пытаюсь подписать исполняемый файл с помощью Microsoft signtool.exe
Закрытый ключ находится в HSM и не может быть удален. Поэтому мне пришлось получить часть сертификата "publi c" в файле .cer и использовать приведенную ниже команду для подписи
signtool.exe sign /v /f .\SigningCert.pem /csp "HSM Key Storage Provider" /k "KEYID" /tr http://timestamp.digicert.com /fd sha256 /td sha256 .\App.exe
Поскольку машина, которую я использовал для подписи, не имела промежуточного сертификата добавленный в Windows доверенное хранилище, подписанный исполняемый файл не может быть проверен.
SignTool Error: WinVerifyTrust returned error: 0x800B010A
A certificate chain could not be built to a trusted root authority.
При этом я использовал нижеприведенную команду для добавления промежуточного сертификата, используя /ac
switch
signtool.exe sign /v /f .\SigningCert.pem /csp "HSM Key Storage Provider" /k "KEYID" /ac .\Intermediate.pem /tr http://timestamp.digicert.com /fd sha256 /td sha256 .\App.exe
Исполняемый файл может быть проверен правильно. Пока все хорошо.
Теперь, если моя цепочка сертификатов имеет более одного промежуточного сертификата, как я могу добавить их в подписи?
Пример цепочки:
Leaf Cert -> Intermediate 1 -> Intermediate 2 -> Root Cert
Я попытался объединить все промежуточные сертификаты в один файл pem и использовать его с ключом /ac
. Очевидно, Signtool берет только первый сертификат из файла pem и игнорирует остальные.
Кроме того, если я хочу добавить кросс-сертификаты от Microsoft помимо моих промежуточных сертификатов, как бы я добавил их?
Насколько я читаю, я могу поместить все сертификаты в файл pfx и использовать его с signtool. Но, как я уже говорил, у меня нет доступа к закрытому ключу. Я не думаю, что создание файла pfx - это вариант для меня.