11

У меня есть два сертификата подписи кода (один 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).

Возможно ли такое, возможно?

+0

Ну, рад знать, что я не одинок в своей потребности в этом ... – vcsjones

+0

Пробовали ли вы '/ тд sha256/тр ...' вместо '/ т ... 'для второй подписи? –

ответ

12

Для аутентификации под аутентификацией SHA-2 требуется сервер отметки времени 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

+0

Благодарим вас за объяснение «почему это не работает», другие ответы, которые я прочитал, пропустили эту часть. Чтобы заставить его работать, просто замените '/ t http: // timestamp.verisign.com/scripts/timestamp.dll' на'/tr http: // timestamp.geotrust.com/tsa'. –

+1

Сервер GeoTrust по-прежнему использует дайджест SHA1 для отметки времени, а что еще хуже, их цепочка сертификатов завершается в корневом сертификате с помощью дайджеста MD5. Если вам нужен дайджест SHA256 для метки времени, используйте http://timestamp.globalsign.com/?signature=sha2 в качестве URL-адреса (указание/td SHA256 тоже не повредит). –

+4

URL-адрес SHA-256 с RFC 3161: http://sha256timestamp.ws.symantec.com/sha256/timestamp –

Смежные вопросы