Как се кодира правилно двоен знак с клеймо за време?

Имам два сертификата за подписване на код (един SHA-1, един SHA-256), които бих искал да приложа към един и същ файл. Опитах се да добавя сертификата SHA-256, но това не успя:

:: Signs with the SHA-1 certificate
signtool sign /sha1 8f52fa9db30525dfabb35b08bd1966693a30eccf /t http://timestamp.verisign.com/scripts/timestamp.dll my_app_here.exe
:: Signs with the SHA-2 certificate
signtool sign /sha1 8b0026ecbe5bf245993b26e164f02e1313579e47 /as /t http://timestamp.verisign.com/scripts/timestamp.dll my_app_here.exe

Това се проваля с грешката:

Done Adding Additional Store
SignTool Error: SignedCode::Sign returned error: 0x80070057
        The parameter is incorrect.
SignTool Error: An error occurred while attempting to sign: my_app_here.exe

Ако премахна URL адреса на клеймото за време от втората команда, подписването завършва успешно, но подписът SHA-2 няма клеймо за време. (Дали съм поставил времеви печат върху първия подпис няма ефект)

Намерението тук е да се позволи на някой да провери приложението с по-силния сертификат, ако е на операционна система, която поддържа това, но да се избегне неуспешно валидиране на операционни системи, които не поддържат по-силните сертификати (Vista, XP).

Възможно ли е изобщо такова нещо?


person Billy ONeal    schedule 16.12.2013    source източник
comment
Е, радвам се да знам, че не съм сам в нуждата си от това...   -  person vcsjones    schedule 19.12.2013
comment
Опитахте ли /td sha256 /tr ... вместо /t ... за втория подпис?   -  person Thomas Weller    schedule 04.02.2014


Отговори (1)


Подписването на SHA-2 Authenticode изисква RFC 3161 сървър за клеймо за време. URL адресът timestamp.verisign.com не работи за това.

RFC 3161 URL за Symantec/Verisign е:

http://sha256timestamp.ws.symantec.com/sha256/timestamp

Ако все още използвате по-стария http://timestamp.geotrust.com/tsa URL адрес и се проваля (април 2017 г.), трябва да го актуализирате до горния. GeoTrust, подобно на Verisign, вече е част от Symantec.

източник:

https://knowledge.verisign.com/support/code-signing-support/index?page=content&id=SO5820

person mike    schedule 07.12.2014
comment
Благодаря ви, че обяснихте защо не работи, други отговори, които прочетох, пропускат тази част. За да работи, просто заменете /t http://timestamp.verisign.com/scripts/timestamp.dll с /tr http://timestamp.geotrust.com/tsa. - person James L.; 28.07.2015
comment
Сървърът на GeoTrust все още използва SHA1 дайджест за клеймо за време и което е още по-лошо, тяхната верига от сертификати завършва в основен сертификат с MD5 дайджест. Ако искате обобщение на SHA256 за клеймото за време, използвайте timestamp.globalsign.com/?signature=sha2 като URL (посочването на /td SHA256 също не вреди). - person Igor Levicki; 11.01.2016
comment
SHA-256 с RFC 3161 URL адрес за времево клеймо е sha256timestamp.ws.symantec.com/sha256/timestamp - person Jem Tucker; 17.03.2016