2009-05-26 11 views
10

Estaba leyendo What happens when a code signing certificate expires - Stack Overflow y me preguntaba por una respuesta más sólida. La respuesta proporcionada fue más acerca de la configuración de su propia CA. Incluso con su propia CA, tendrá que lidiar con certificados de código vencidos.¿Cómo puedo evitar tener que volver a firmar mi código cada 1 o 2 años?

Si firmó el código sin utilizar un servicio de sellado de tiempo, después de que el certificado caduque, su código ya no será confiable y, dependiendo de la configuración de seguridad, no se podrá ejecutar. Tendrá que volver a firmar todo su código con un nuevo certificado, o con un certificado renovado, cada 1 o 2 años.

La marca de tiempo de confianza (digital) permite que la firma digital sea válida incluso después de que el certificado haya expirado. Debería volver a firmar el código con el nuevo certificado solo si ha realizado cambios.

¿Esto suena todo correcto? Si es así, necesito recomendaciones sobre qué servicio de sellado de tiempo usar, preferiblemente de alguien que realmente haya usado uno. También me gustaría saber si hay alguna solución interna, similar a ser su propia CA.

En este momento esto se aplica a los scripts de PowerShell, pero eventualmente tendré el mismo problema con otro código.

actualización: Ejemplo de cómo firmar una escritura de PS con una marca de tiempo (se puede hacer un script para esto):

Set-AuthenticodeSignature -filepath "D:\Projects\A Sample\MyFile.ps1" 
    -cert gci cert:\CurrentUser\My -codesigning 
    | where -Filter {$_.FriendlyName -eq "Thawte Code Signing"} 
    -IncludeChain All 
    -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll" 

Entonces, para ver el Certificado y TimeStamper firmante, puede hacerlo esto:

Get-AuthenticodeSignature MyFile.ps1 | fl * 

se le da al sujeto (CN, OU, etc.), Emisor, antes/después de las fechas, y huellas dactilares, tanto para su cert cert y del TimeStamper. También recibe un mensaje que indica el estado de la firma.

Respuesta

9

Será mejor que seleccione uno de los proveedores de certificados de confianza (Verisign, Thawte, Comodo, etc.). Esto le permite firmar su software sin que el usuario confíe explícitamente en su CA raíz privada. Hemos usado Verisign y Thawte, Comodo e incluso GoDaddy con sello de tiempo sin problemas con el software que deja de ser válido incluso años después de que expira el certificado.

+3

+1: Idea general: utilice un proveedor de confianza mundial. –

+0

Con Verisign y Thawte, ¿también tiene marca de tiempo? Sin la marca de tiempo, ¿algunos sistemas no se quejarían de la expiración del certificado y no ejecutarían su código? – Bratch

+0

@Bratch: Sí, debe usar su servidor de marca de tiempo. Nunca lo publicamos sin él, así que no puedo comentar sobre aplicaciones que no tienen marca de tiempo. –

8

El sellado de tiempo es un servicio gratuito; en realidad, solo se trata de un proveedor de confianza que verifica que firmó el archivo en un momento determinado. El servicio de marca de tiempo de Verisign es el estándar. El último ejemplo en la ayuda para Set-AuthenticodeSignature demuestra cómo usarlo.

Lee Holmes [MSFT] de Windows PowerShell Desarrollo Microsoft Corporation

+0

Sí, ahí está en el Ejemplo 3, el parámetro -TimeStampServer. Ahora todo lo que necesito hacer es seleccionar uno, y descubrir si puedo usarlo con una CA interna. Puede que necesite hacer lo que Paul Alexander sugirió anteriormente y obtener uno externo. Al menos de esa manera sé que el servicio de sellado de tiempo funcionará con mi certificado. – Bratch

-1

realmente no se puede escapar de tener que renunciar código de tiempo. La ventaja de ejecutar su propia CA es que puede optar por emitir sus certificaciones de firma de código con tiempos de vida más largos que los predeterminados, lo que le permite esperar más tiempo antes de tener que renunciar a nada. La desventaja es, por supuesto, tener que lidiar con otro servicio o servidor (su CA).

Cuestiones relacionadas