2013-08-30 3 views
20

Нам нужно двойное знакомство с нашими двоичными файлами с SHA1 и SHA2 с помощью signtool.exe, наш сертификат поддерживает 256-бит SHA2.signtool без двойного знака SHA2 и SHA1 с отметками времени

Использование SignTool в Windows 8 SDK в:

например:

SignTool.exe знак/а/Fd SHA256/т http://timestamp.verisign.com/scripts/timstamp.dll/ф "certificate.pfx"/р XXXXXXX "File.dll"

(где ХХХХХХЙ наш пароль для сертификата)

завершается с ошибкой скрытой:

SignTool ошибка: SignedCode :: Знамение возвращаемая ошибка: 0x80070057 Параметр неверный. Ошибка SignTool: при попытке подписания произошла ошибка: file.dll

Подписание без отметки времени работает под подпиской индивидуально, так как SHA1 или SHA256 работает, но нам нужно сделать двойной знак, и представьте, что у вас нет метки времени, нет ,

Я пробовал 32- и 64-разрядные версии signtool.exe, пробовал его на машине Win7 и Win8 и пытался играть с параметрами командной строки, но безрезультатно. Кто-нибудь ударил по этой проблеме раньше?

ответ

2

Попробуйте использовать

signtool.exe sign /as /fd sha256 /tr http://timestamp.geotrust.com /td sha256 /f certificate.pfx /p XXXXXX file.dll 

/тр для RFC3161 временных меток,/тд, очевидно, для хэш использовать.

1

Я также получаю вышеуказанную ошибку, однако он работает с утилитой osslsigncode при использовании опции «-н»:

osslsigncode sign -pkcs12 cert1.pfx -h sha1 -t http://timestamp.verisign.com/scripts/timestamp.dll -in original.exe -out intermediate.exe 
osslsigncode sign -pkcs12 cert2.pfx -nest -h sha1 -t http://timestamp.verisign.com/scripts/timestamp.dll -in intermediate.exe -out final.exe 

Официальный проект для Unix, однако я залетела моя windows fork ,

15

Я пытался сделать это точно, и нашел следующее трюк. Этот подход основан на использовании двух сертификатов Authenticode, один для SHA-1 и другого для SHA-256, чтобы гарантировать, что файлы приняты как действительные для Windows Vista и Windows Server 2008, которые не поддерживают подписку на сертификат SHA-256 даже если используется алгоритм SHA-1:

signtool.exe sign /sha1 SHA1_Thumprint /v /d "FileDescription" /du "CompanyURL" /fd sha1 /tr http://timestamp.comodoca.com/rfc3161 /td sha1 "FileName.dll" 
signtool.exe sign /sha1 SHA256_Thumprint /as /v /d "FileDescription" /du "CompanyURL" /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 "FileName.dll" 

Обратите внимание, что отпечатки, SHA-1 явно определены для каждого шага, подписавшего с помощью переключателя /sha1 и /as используется для добавления Ша-256 подписи. В противном случае подпись SHA-256 переопределит подпись SHA-1.

Другой, который я нашел в процессе, состоял в том, что только DLL и EXE поддерживают двоичные подписи. Установщики MSI этого не делают.

Обновлено 29/12/15:

Формат/SHA-256 отпечатка SHA-1 представляет собой 40-символьная шестнадцатеричная верхний регистр строка без пробелов.Например:

signtool.exe sign /sha1ABCDEFABCDEF/as /v /d "FileDescription" /du "CompanyURL" /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 "FileName.dll" 

Обновлено 30/12/2015

Чтобы подписать MSI-файл с сертификатом SHA-256, но с SHA-1 хэш использовать команду, подобную ниже:

signtool.exe sign /sha1 SHA256_Thumprint /v /d "FileDescription" /du "CompanyURL" /t http://timestamp.comodoca.com/authenticode "FileName.msi" 
+0

это значит, нужно купить два разных сертификата? или достаточно ли скопировать и переименовать? –

+1

Да, к сожалению (если кто не знает лучше). Я не смог получить сертификат SHA-256, используемый для генерации сигнатуры SHA-1, которая будет принята как действительная на Windows Server 2008. –

+1

Любой шанс, который вы могли бы обновить * в формате * отпечатка? Простое копирование строки из certmgr.msc не работает. – EricLaw

2

Добавление к martin_costello ответа, XP и Vista не поддерживают временную метку RFC. Вам нужно использовать параметр/t для подписей sha1.

signtool.exe sign /sha1 SHA1_Thumprint /v /d "FileDescription" /du "CompanyURL" /fd sha1 /t http://timestamp.verisign.com/scripts/timestamp.dll "FileName.dll" 
signtool.exe sign /sha1 SHA256_Thumprint /as /v /d "FileDescription" /du "CompanyURL" /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 "FileName.dll" 
10

Я знаю, что это немного устарело, но я приземлился в этой теме, и, возможно, кто-то еще будет.

Это будет работать, если вы подписываете первый с SHA1, а затем с SHA256:

signtool.exe sign /f cert_file.pfx /t http://timestamp.comodoca.com/authenticode /p cert_password 
signtool.exe sign /f cert_file.pfx /as /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 /p cert_password 

Он работал, используя один и тот же сертификат в обоих подписей. Я использовал signtool из Windows 10 SDK, не знаю, будет ли он работать с предыдущими версиями.

+2

Спасибо, это помогло! Он работал для меня и с помощью MIS, используя signtool Windows 8.1 SDK, пока я делал это в этом порядке. MSI показывает, что доверяют Windows 2008. –

+0

[This] (http://support.ksoftware.net/support/solutions/articles/215805-the-truth-about-sha1-sha-256-and-code-signing-certificates -) говорит: «Обратите внимание, что для этого вам нужна версия 6.3 для Signtool.Он поставляется с Windows 8.1 SDK ». – Legolas

0

Я думаю, this link имеет несколько хороших указателей. Некоторые из них упоминаются в ответе martin_costello, но в этой статье приводится более подробная информация. В частности:

  • «Двойное подписание и включение файла дайджеста SHA1» возможно, если вы сначала подписываете SHA1 и используете/как для SHA256. Он работает только с signtool v6.3 из SDK Windows 8.1 (или позже).
  • Двойное подписание с надписью «FULL SHA1», необходимое для версии Windows до XP sp3, требует 2 разных сертификата.

(я не проверял все это сам, хотя.)

4

Вопрос на самом деле способ проще.

Проблема с сервером отметки времени.

Вместо использования SignTool.exe с этим

/t http://timestamp.comodoca.com 

Вы должны использовать его, как это для SHA1

/tr http://timestamp.comodoca.com /td sha1 

И SHA256

/tr http://timestamp.comodoca.com/?td=sha256 /td sha256 
Смежные вопросы