certificate code-signing xbap

certificate - ¿Qué sucede cuando un certificado de firma de código expira?



code-signing xbap (6)

Estoy considerando comprar un certificado de firma de código de VeriSign o Thawte para firmar un XBAP. Mi pregunta es esta: ¿qué sucede cuando ese certificado expira? $ 299 y $ 599 son precios bastante elevados para certificados de 1 año / 2 años, y si tengo que entregarles a mis clientes una compilación recién firmada cada vez que expire mi certificado, entonces me ocuparé de la molestia de crear mi propio certificado para ahora.

Lo que no me gusta de crear mi propio certificado es la dificultad de distribuirlo a todas las máquinas cliente que usarán mi XBAP. Mi aplicación solo se usará en una LAN, así que supongo que siempre podría usar Windows Installer para instalar mi certificado casero (aunque no estoy seguro de cómo hacerlo, ¿alguien tiene alguna idea?).

Esto realmente no sería un problema si estuviera entregando una aplicación de confianza parcial, pero mi aplicación necesita permisos de la Web, ya que estará hablando con los servicios de WCF, por lo que es en ese área gris entre confianza parcial y plena confianza, y sin una certificado, recibo ese divertido mensaje de confianza no otorgada cuando trato de cargar mi XBAP.

¿Algunas ideas?


Lo que debe hacer si planea usarlo en un entorno cerrado (LAN) es configurar su propia CA. Las versiones de Windows Server incluyen una Autoridad de certificación fácil de usar, pero aún más fácil es configurar una CA mínima mediante la demoCA proporcionada por openssl , que consta de varias secuencias de comandos. Puede ejecutar openssl demoCA en Cygwin en Windows o de forma nativa . Esta demoCA consta de varios scripts perl / bash que llaman a los comandos de openssl para generar solicitudes, firmar certificados / crls, etc.

Cuando tiene su propia CA, lo que necesita instalar es su certificado raíz de CA, por lo que no habrá más problemas para actualizar los certificados de usuario, ya que el certificado de CA se mantendrá igual. Normalmente, un certificado de CA debe durar de 5 a 10 años, pero puede configurar todo lo que quiera (recuerde que es su propia CA).

El certificado de CA se instalará en cada máquina cliente. Si su aplicación confía en la seguridad del sistema de Windows, debe instalarse en el almacén de claves de IExplorer Certificate Authorities. Si utiliza una aplicación Java, debe distribuir el certificado de CA dentro del almacén de claves Java que utiliza.


Si se asegura de agregar una marca de tiempo al firmar los binarios, no tendrá que volver a firmarlos cuando caduque el certificado. Simplemente agregue "/ t http://timestamp.verisign.com/scripts/timstamp.dll " a la línea de comando de signtool y la firma digital siempre se marcará como válida a menos que se revoque el certificado y se confíe en la CA.

Los certificados de firma de código de razón son tan caros que alguien tiene que verificar que eres quien dices ser. En mi caso, verificaron la dirección y el número de teléfono, y me llamaron por teléfono. Los certificados de Comodo parecen ser un poco más baratos.


Tenga cuidado con los certificados con el conjunto WTD_LIFETIME_SIGNING_FLAG: Significa (a pesar de lo que suponga suponer del nombre) que un programa firmado con el certificado no es válido después de que expira el certificado, aunque el programa no haya cambiado y el certificado sea válido cuando fue firmada.

Esto también afecta las actualizaciones, ya que incluso si el cliente marca la casilla para confiar en todos los programas de su empresa, si su programa de actualización no está firmado con el mismo certificado (o ese certificado expira), entonces la confianza falla.

Desde: http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx

Procesamiento de marca de tiempo con Semántica de firma de por vida

Las aplicaciones o las autoridades de certificación que no desean que las firmas con sello de tiempo puedan verificar con éxito por un período indefinido de tiempo tienen dos opciones:

• Establezca el OID del firmador de por vida en el certificado de firma del editor.

Si el certificado de firma del editor contiene el OID del firmador de por vida además del OID de firma de código PKIX, la firma se vuelve inválida cuando expira el certificado de firma del editor, incluso si la firma tiene marca de tiempo. El OID del signatario de por vida se define de la siguiente manera:

szOID_KP_LIFETIME_SIGNING 1.3.6.1.4.1.311.10.3.13

• Establezca WTD_LIFETIME_SIGNING_FLAG en la estructura WINTRUST_DATA cuando llame a WinVerifyTrust.

Si un llamador de WinVerifyTrust establece WTD_LIFETIME_SIGNING_FLAG en la estructura WINTRUST_DATA y el certificado de firma del editor ha caducado, WinVerifyTrust informa que la firma no es válida incluso si la firma tiene marca de tiempo.

Si un editor revoca un certificado de firma de código que contiene el OID de firma de por vida o un llamador de WinVerifyTrust establece WTD_LIFETIME_SIGNING_FLAG en la estructura WINTRUST_DATA, WinVerifyTrust informa que la firma es válida si se cumplen las dos condiciones siguientes:

• La firma fue marcada con fecha y hora antes de la fecha de revocación.

• El certificado de firma aún se encuentra dentro de su período de validez. Una vez que expira el período de validez, la firma deja de ser válida.

Por ejemplo: https://forum.startcom.org/viewtopic.php?f=15&t=2215&p=6827&hilit=lifetime+signing#p6827

Ese es un problema serio con los certificados StartSSL. No me sorprende que haya limitaciones en un certificado que cuesten tan poco, pero enterrar esta limitación en la letra pequeña o en una publicación antigua en el foro en lugar de dejarlo en claro en la descripción del producto es un mal negocio. Pueden arreglarlo en el futuro, y otros pueden tener o no la misma limitación, por lo que un correo electrónico para verificar antes de gastar podría ser prudente.

¿Adivina quién no supo preguntar? LOL ... oh bueno, vive y aprende.


Los certificados de firma de código no se "administran", lo que significa que no se actualizan ellos mismos ... es probable que tenga que comprar uno nuevo una vez que caduque.

Puede configurar una Autoridad de Certificación (CA), apegarse a una CA basada en Windows si es una tienda solo para Windows, de lo contrario recomendaría Linux con algo parecido a DogTag Certificate System .

Tenga en cuenta que si crea su propia CA, deberá exportar el certificado CA público e instalarlo (para que sea confiable como una CA raíz) en cualquier servidor que ejecute código / scripts firmado por un certificado de firma de código emitido por ese CALIFORNIA. Esto es mucho, mucho más barato (¿gratis?) En comparación con pagar un certificado cada X años, sin mencionar los otros certs que podría emitir por diversos motivos / usos.


Si marca la hora de su código mientras el certificado es válido, el efecto es que sus certificados caducados son buenos.

De las preguntas frecuentes sobre el Certificado de firma de código Thawte :

¿Por cuánto tiempo puedo usar un Certificado de firma de código?

  • Los certificados de firma de código son válidos por 1 o 2 años, dependiendo del ciclo de vida que elijas al comprar el certificado. Tenga en cuenta: para Microsoft® Authenticode® (multiusos), también debe marcar su código firmado para evitar que su código expire cuando expire su certificado.

¿El código con marca de tiempo es válido después de que expira un certificado de firma de código?

  • Microsoft® Authenticode® (multiusos) le permite marcar su código firmado por tiempo. La marca de tiempo garantiza que el código no caducará cuando expire el certificado porque el navegador valida la marca de tiempo. El servicio de sellado de tiempo se proporciona cortesía de VeriSign. Si usa el servicio de sellado de tiempo cuando firma el código, se envía un hash de su código al servidor de VeriSign para registrar una marca de tiempo para su código. El software de un usuario puede distinguir entre el código firmado con un certificado caducado que no debe ser confiable y el código que se firmó con un Certificado que era válido en el momento en que se firmó el código pero que posteriormente ha expirado.

Debe evitar colocar marcas de tiempo en el proceso de firma o en la marca de tiempo mientras se encuentre dentro de la validez del certificado. Herramientas como Sign PE y otras te permiten controlar estos parámetros