Как включить весь путь сертификации при подписании кода с помощью signtool? - PullRequest
9 голосов
/ 04 июля 2011

Как я могу включить весь путь сертификации при подписании кода с использованием signtool?

Более старые версии signtool будут включать весь путь сертификации в цифровую подпись.Как и сейчас, если я подпишу исполняемый файл с signtool:

signtool.exe" sign /v /f avatar.pfx -t "http://timestamp.verisign.com/scripts/timstamp.dll" app.exe

, подпись недействительна:

enter image description here

Это связано с тем, что нет пути сертификации:

enter image description here

Двоичные файлы, подписанные с помощью более старой версии signtool, работали нормально:

enter image description here

Как мне указать в signcode включить полный путь сертификации при подписании?

Как правильно подписать двоичный файл?


Обновление : версия SignTool 6.1.7600.16385:

enter image description here

См. Также

Ответы [ 3 ]

9 голосов
/ 05 июля 2011

Используйте /ac и передайте имя файла .cer, к которому относится ваш сертификат (для Verisign он назывался MSCV-VSClass3.cer, когда я проверял последний раз при подписании кода ядра или другого специального кода).

signtool.exe sign /v /f "Avatar.pfx" 
      /ac "Thawte Code Signing CA - G2.cer" 
      -t "http://timestamp.verisign.com/scripts/timstamp.dll" app.exe

Это должно быть предоставлено вашим CA.Обычно MS предлагает пакеты для различных ЦС, которые она принимает в Windows.

См .:

В любом случае,Насколько мне известно, это требуется только для кода ядра и других специфических вещей (например, Windows Security Center).

2 голосов
/ 13 августа 2013

Если вы используете Thawte, тогда скачайте их primaryca.cer.

Загрузите в файл primaryca.cer и подпишите файл с помощью:

signtool sign /f certificate.pfx /p PASSWORD /ac primaryca.cer APP.exe.

Должно работать.

0 голосов
/ 07 июня 2019

Документация для подписи аутентичного кода

  • Формат подписи переносимого исполняемого кода Windows Authenticode (.docx ? )

говорит, что структура PKCS # 7 SignedData ...

... содержит сертификат подписавшего и любые промежуточные сертификаты, но обычно не содержит корневого сертификата.

Однако, как я обнаружил в некоторой части «DOH!»В данный момент signtool.exe должен иметь возможность найти сертификаты для их включения.

Конечный сертификат предоставляется в командной строке.Но идентификация остальных сертификатов в цепочке не включает в себя, где найти сертификаты.Signtool проверяет хранилище системных сертификатов, поэтому, если они там находятся, они добавляются в двоичный файл.Если они не найдены, signtool только помещает листовой сертификат в подписанный двоичный файл.

Обратите внимание, что если промежуточные сертификаты не находятся в подписанном двоичном файле, но находятся в системном хранилище сертификатов системы, проверяющей подпись,двоичный файл все равно пройдет проверку, потому что цепочка может быть разрешена.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...