Альтернативные службы timestamping для Authenticode

Мы выполняем подписи кода и отметки времени для всех наших производственных сборок. Иногда (обычно, когда мы приближаемся к RTM (!)) Сервер timestamp в Verisign ( " http://timestamp.verisign.com/scripts/timstamp.dll" ) решает перейти в автономном режиме с перерывами.

Что нам делать в этом случае?

  • Должен ли сервер timestamp размещаться ваш корневой центр сертификации?
  • Есть ли другие серверы timestamp, размещенные в сети, которые мы могли бы использовать вместо Verisign, если их сервер не работает? Предложения по другим высокодоступным и бесплатным альтернативам приветствуются:)

Ответ 1

Я использую следующий пакетный файл, который занимает максимум 300 раз. Есть два аргумента,% 1 - путь к папке, содержащей пакетный файл, файл pfx и signtool.exe. % 2 - полный путь к подписанному файлу. Вы можете называть это в событии post post build на Visual Studio с чем-то вроде вызова "$ (SolutionDir) thirdparty\signature\sign.bat" "$ (SolutionDir) thirdparty\подписания" "$ (TargetPath)" Я изменил этот командный файл, чтобы использовать разные серверы timestamp на каждой итерации. В настоящее время он использует Comodo, Verisign, GlobalSign и Starfield. Надеюсь, это The Ultimate Signing Script;)

@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 в надежные сайты (спасибо Винсу). Я думаю, что это может быть важным шагом. Я также обновил корневые сертификаты на ПК.

Ответ 2

Я не уверен, что сервер timestamp должен принадлежать корневому CA или нет.

Мы используем http://timestamp.comodoca.com/authenticode (и имеем сертификат подлинности Comodo), но на самом деле имеют аналогичную проблему, поскольку их сервер, кажется, дает время от времени или время. Мы подписываем как часть ночной (или по требованию) сборки на нашем сервере непрерывной интеграции только для версий Release (не для сборки Debug).

Я обошел это (главным образом) двумя способами:

  • Если вызов функции signtool.exe завершается неудачно, он снова пытается (сразу) дважды
  • Строка script используется для подписывания каждого exe за один шаг (и у нас есть несколько частей нашего продукта), и теперь он делает один за другим - занимает немного больше времени, но с меньшей вероятностью может потерпеть неудачу

Между ними, сбои сборки, вызванные проблемами сервера timestamp, ушли от раз или два раза в неделю до практически никогда.

EDIT: у меня есть задача MSBuild, которая делает это (а также читает пароль сертификата, хранящийся вне репозитория), в https://gist.github.com/gregmac/4cfacea5aaf702365724

Ответ 4

Можно использовать любой сервер timestamp: недавно я переключился с сервера timestamp моего эмитента на Verisign, так как обнаружил, что сервер GlobalSign ненадежен. Кроме того, Thawte не запускает собственный сервер timestamp, но рекомендует людям использовать Verisign's.

Ответ 5

Услуга временного обозначения VeriSign бесплатна. Возможно, это может быть причиной того, что надежность меньше, чем адекватная; они не дают ему обслуживание бюджета!

Определенно это большая проблема. Потерянное время из-за неудачных сборок от ошибок временного штампа кода является растущей проблемой в отрасли разработки программного обеспечения. Конечно, вы можете написать сложный script для вращения, пока не найдете сервер штамповки рабочего времени.. но, действительно?

Мы должны требовать улучшения. Мы платим LOT за эти сертификаты.

Обратите внимание, что позже я обнаружил, что альтернативные серверы с временными метками, о которых мало кто слышал, подходят для использования в периоды, когда Verisign и Comodo не работают (обычно это происходит в рабочее время в рабочие дни).

Ответ 6

У меня была та же проблема. сервер verisign некогда был недоступен для некоторых файлов, которые я пытался подписать (но другие файлы в одной сборке были правильно подписаны).

Я обычно повторяю, и он работает, но сегодня, никоим образом.

Итак, после некоторых неосновательных исследований в Интернете я попытался поместить http://*.verisign.com в сайты надежной зоны, и он работает... Наконец, я не знаю, возникла ли у сервера проблема, и теперь работает, или если я поступаю правильно, увижу в ближайшие дни, я думаю. Надеюсь, это может помочь другим, которые заблокированы.

Конфигурация сервера: Windows Server 2003 sp2, IE8, повышенная безопасность.