Добавьте промежуточные сертификаты в подписи в signtool - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь подписать исполняемый файл с помощью 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 - это вариант для меня.

...