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

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

URL-адрес RFC 3161 для Symantec/Verisign:

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

Если вы все еще используете старый URL http://timestamp.geotrust.com/tsa и он не работает (апрель 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 с URL-адресом временной метки RFC 3161: sha256timestamp.ws.symantec.com/sha256/timestamp< /а> - person Jem Tucker; 17.03.2016