Я использую следующий командный файл, который повторяется не более 300 раз. Есть два аргумента:% 1 - это путь к папке, содержащей пакетный файл, файл pfx и signtool.exe. % 2 - это полный путь к подписываемому файлу. Вы можете вызвать это в событии post build в вашей визуальной студии с помощью чего-то вроде call "$ (SolutionDir) thirdparty \ signed \ sign.bat" "$ (SolutionDir) thirdparty \ signed" "$ (TargetPath)" Я изменил этот командный файл на использовать разные серверы временных меток на каждой итерации. В настоящее время он использует Comodo, Verisign, GlobalSign и Starfield. Надеюсь, это окончательный сценарий подписи;)
@echo off
REM create an array of timestamp servers...
set SERVERLIST=(http://timestamp.comodoca.com/authenticode http://timestamp.verisign.com/scripts/timestamp.dll http://timestamp.globalsign.com/scripts/timestamp.dll http://tsa.starfieldtech.com)
REM sign the file...
%1\signtool.exe sign /f %1\comodo.pfx /p videodigital %2
set timestampErrors=0
for /L %%a in (1,1,300) do (
for %%s in %SERVERLIST% do (
REM try to timestamp the file. This operation is unreliable and may need to be repeated...
%1\signtool.exe timestamp /t %%s %2
REM check the return value of the timestamping operation and retry a max of ten times...
if ERRORLEVEL 0 if not ERRORLEVEL 1 GOTO succeeded
echo Signing failed. Probably cannot find the timestamp server at %%s
set /a timestampErrors+=1
)
REM wait 2 seconds...
choice /N /T:2 /D:Y >NUL
)
REM return an error code...
echo sign.bat exit code is 1. There were %timestampErrors% timestamping errors.
exit /b 1
:succeeded
REM return a successful code...
echo sign.bat exit code is 0. There were %timestampErrors% timestamping errors.
exit /b 0
Я также поместил http://timestamp.comodoca.com в список надежных сайтов (спасибо Винсу). Я думаю, что это может быть важным шагом. Я обновил корневые сертификаты и на ПК.
%%a
Переменная никогда не используется. Есть ли опечатка в цикле for или в комментарии?/p
пароля * .pfx.Я не уверен, должен ли сервер временных меток принадлежать корневому ЦС или нет.
Мы используем http://timestamp.comodoca.com/authenticode (и имеем сертификат Comodo Authenticode), но на самом деле имеем аналогичную проблему, поскольку их сервер, кажется, иногда выдает ошибку или время ожидания. Мы подписываем как часть ночной (или по запросу) сборки на нашем сервере непрерывной интеграции только для сборок Release (не для сборок Debug).
Я обошел это (в основном) двумя способами:
Между тем, сбои сборки, вызванные проблемами с сервером временных меток, выросли с одного или двух раз в неделю до практически никогда.
EDIT: у меня есть задача MSBuild, которая делает это (а также считывает пароль сертификата, хранящийся вне репозитория ) на https://gist.github.com/gregmac/4cfacea5aaf702365724
источник
Он отлично работает, заменяя URL-адрес временной метки verisign одним из следующих:
http://timestamp.comodoca.com/authenticode
http://www.trustcenter.de/codesigning/timestamp
источник
Служба отметок времени VeriSign предоставляется бесплатно. Возможно, поэтому его надежность менее чем достаточна; они не выделяют бюджет на обслуживание!
Однозначно это большая проблема. Потеря времени из-за неудачных сборок из-за ошибок с временными метками кода - растущая проблема в индустрии разработки программного обеспечения. Конечно, вы можете написать сложный скрипт для чередования, пока не найдете рабочий сервер отметок времени ... но на самом деле?
Мы должны требовать лучшего. Мы много платим за эти сертификаты.
Обратите внимание, что позже я обнаружил, что альтернативные серверы с отметками времени, о которых мало кто слышал, можно было использовать в периоды, когда Verisign и Comodo не работают (обычно это происходит в рабочее время в рабочие дни).
источник
Можно использовать любой сервер меток времени: недавно я переключился с сервера меток времени моего эмитента на Verisign, так как обнаружил, что сервер GlobalSign ненадежен. Кроме того, Thawte не запускает свой собственный сервер временных меток, но рекомендует людям использовать Verisign.
источник
Обычно вы можете использовать любую службу отметки времени, которую хотите. Хотя большинство центров сертификации предоставляют услугу отметки времени. Примеры
timestamp.verisign.com был официально EOL в конце 2019 года, чтобы получить дополнительную информацию, я отвечу на вопрос ниже.
http-timestamp-verisign-com-scripts-timstamp-dll-недоступно
источник
У меня такая же проблема. Сервер verisign иногда был недоступен для некоторых файлов, которые я пытался подписать (но другие файлы в той же сборке были правильно подписаны).
Обычно я пытаюсь повторить попытку, и это работает, но сегодня нет.
Поэтому после некоторых бесполезных исследований в Интернете я попытался поместить http: //*.verisign.com в сайты доверенных зон, и он работает ... Наконец, я не знаю, была ли у сервера проблема и теперь работает, или я сделал правильно, посмотрю в ближайшие дни я думаю. Надеюсь, это может помочь другим, которые заблокированы.
Конфигурация сервера: Windows server 2003 sp2, IE8, усиленная безопасность на.
источник
Вы можете использовать Jsign вместо signtool для подписи и отметки времени ваших сборок, он поддерживает переключение на альтернативные службы отметок времени.
Синтаксис командной строки выглядит так:
Вы также можете настроить количество попыток (с
--tsretries
) и задержку между попытками (с--tsretrywait
).источник