2010-05-20 14 views
95

Realizamos la firma de código y la marca de tiempo para todas nuestras construcciones de producción. Ocasionalmente (generalmente cuando estamos a punto de RTM (!)), El servidor de la marca de tiempo en Verisign ("http://timestamp.verisign.com/scripts/timstamp.dll") decide desconectarse de manera intermitente.Servicios alternativos de sellado de tiempo para Authenticode

¿Qué deberíamos hacer en este caso?

  • ¿El servidor de marca de tiempo que deban alojarse por la entidad de certificación raíz?
  • ¿Hay algún otro servidor de marca de tiempo alojado en la red que podamos usar en lugar de Verisign si su servidor está inactivo? Sugerencias para otra altamente disponibles y gratuitos alternativas son bienvenidos :)

Respuesta

13

no estoy seguro de si el servidor de marca de tiempo tiene que ser propiedad de la entidad emisora ​​raíz o no.

Usamos http://timestamp.comodoca.com/authenticode (y tenemos un certificado de autentificación de Comodo) pero en realidad tenemos un problema similar, ya que su servidor parece dar un error o tiempo de espera ocasionalmente. Hacemos la firma como parte de una compilación nocturna (o bajo demanda) en nuestro servidor de integración continua para compilaciones de Release solamente (no para compilaciones de Depuración).

llegué alrededor de este (en su mayoría) de dos maneras:

  • Si la llamada a signtool.exe falla, intenta otra vez (inmediatamente) dos veces más
  • La escritura de la estructura utilizada para firmar todos los exe en un paso (y tenemos varios como parte de nuestro producto), y ahora lo hace uno por uno - tarda un poco más, pero es menos probable que falle

Entre estos, construir fallos causados ​​por problemas en el servidor de marca de hora han pasado de ser una o dos veces a la semana a virtualmente nunca.

EDIT: Tengo una tarea de MSBuild que hace esto (así como reads a certificate password stored outside the repository) en https://gist.github.com/gregmac/4cfacea5aaf702365724

6

Cualquier servidor de marca de tiempo se pueden utilizar: Recientemente he pasado desde el servidor de marca de tiempo de mi emisor de Verisign desde que descubrí que el servidor de GlobalSign era no fidedigno. Además, Thawte no ejecuta su propio servidor de marca de tiempo sino recommend personas para usar Verisign.

+1

Bueno, Thawte es Verisign, entonces. –

+0

... que es Symantec ... –

3

Tuve el mismo problema. El servidor verisign no era alcanzable en algún momento para algunos archivos que intenté firmar (pero otros archivos en la misma versión se firmaron correctamente).

Normalmente vuelvo a intentarlo y funciona, pero hoy, de ninguna manera.

Así que después de algunas investigaciones inútiles en Internet traté de poner http: //*.verisign.com en sitios de zona de confianza y funciona ... Finalmente, no sé si el servidor tuvo un problema y ahora funciona o si hice lo correcto, lo veré en los próximos días, creo. Espero que ayude a otros que están bloqueados.

La configuración del servidor: Windows Server 2003 sp2, IE8, seguridad mejorada activada.

+0

Probablemente es una coincidencia ya que encuentro que el sitio simplemente se abruma y se cae. Puede verlo durante el horario laboral pico a menudo. –

9

Funciona bien mediante la sustitución de la marca de tiempo url VeriSign por uno de los siguientes:

http://timestamp.comodoca.com/authenticode
http://www.trustcenter.de/codesigning/timestamp

+1

Parece sellado de tiempo ya no está disponible a partir trustcenter.de:. ​​ "Symantec Todos los productos y servicios proporcionados por TC TrustCenter GmbH ya no están disponibles todas las cuestiones relativas a este deben ser dirigidas a: Symantec TC TrustCenter 24/7 Soporte telefónico Teléfono: + 1-800-579-2848 o + 1-520-477-3104 " – Valdimar

75

uso el archivo por lotes después de lo cual los bucles de un máximo de 300 veces. Hay dos argumentos,% 1 es la ruta a una carpeta que contiene el archivo por lotes, el archivo pfx y signtool.exe. % 2 es la ruta completa al archivo que se está firmando. Puede invocar esto en su evento visual build post de creación con algo como "$ (SolutionDir) thirdparty \ signing \ sign.bat" "$ (SolutionDir) thirdparty \ signing" "$ (TargetPath)" He modificado este archivo por lotes utilizar diferentes servidores de marca de tiempo en cada iteración. Actualmente utiliza Comodo, Verisign, GlobalSign y Starfield. Esperemos que este es el guión de firma Último;)

@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 

También puse http://timestamp.comodoca.com en los sitios de confianza (gracias Vince). Creo que ese puede ser un paso importante. Actualicé los certificados raíz en la PC también.

+0

" choice "tiene un problema relacionado con el idioma, entonces uso: choice/C yn/n/t 2/dy> NUL – Lars

+0

Usando una secuencia de comandos similar que había escrito, descubrí un problema en el sentido de que si CUALQUIER comando devolvía un valor distinto de cero, MSBuild consideraría tal error y, por lo tanto, declararía que el proyecto había fallado. Mi script primero intentó ver si la firma era necesaria. Todavía estoy trabajando en ello. ¿Tuviste tantos problemas? Un segundo nivel de abstracción puede resolverlo, supongo. –

+1

Solo estoy creando aquí. Sé que esta es una respuesta antigua. Pero esta secuencia de comandos es "casi" perfecta, por lo que me gustaría introducir mi cambio. Cuando el script se ejecuta como un evento posterior a la construcción. Si falla una marca de tiempo, pero la siguiente marca de tiempo es exitosa, la compilación sigue fallando porque MSBuild supervisa los sucesos de signtool.exe y ve una falla, por lo tanto cree que es un error. He tenido que pasar esto dentro de VS2012 y desde una máquina de construcción. Mi solución es cambiar la marca de tiempo para que se abstraiga en otro cmd para que MSBuild no pueda espiar como tal: start/wait "Sign Tool"/D "% 1" "signtool.exe" timestamp/t %% s% 2 – Skintkingle

6

El servicio de sellado de tiempo de VeriSign es gratuito. Tal vez sea por eso que su confiabilidad es menos que adecuada; ¡no le dan un presupuesto de mantenimiento!

Definitivamente este es un problema grande. El desperdicio de tiempo debido a las compilaciones fallidas a causa de las fallas en la marca de tiempo del código es un problema creciente en la industria del desarrollo de software. Claro, puede escribir un guión complejo para rotar, hasta que encuentre un servidor de sellado de tiempo de trabajo ... ¿pero realmente?

Deberíamos exigir algo mejor. Pagamos MUCHO por estos certificados.

Tenga en cuenta que más tarde encontré servidores de marca de tiempo alternativos de los que pocos sabían que podían usar en periodos en los que Verisign y Comodo están caídos (generalmente durante horas de trabajo en días laborables).

Cuestiones relacionadas