start que ejemplo descargar chrome archivos abrir java jar code-signing java-web-start jar-signing

ejemplo - ¿Por qué Java Web Start dice que un archivo jar firmado no está firmado?



jnlp windows 10 (3)

Java Web Start (JWS) dice que no puede iniciar mi aplicación porque el archivo jar no está firmado:

Error: Unsigned application requesting unrestricted access to system Unsigned resource: .../dynaccn.jar

Pero el archivo jar está firmado:

$ jarsigner -keystore ... dynaccn.jar idv $ jar tf dynaccn.jar META-INF/MANIFEST.MF META-INF/IDV.SF META-INF/IDV.RSA META-INF/ edu/ edu/ucar/ edu/ucar/unidata/ edu/ucar/unidata/dynaccn/ App$1.class ... $ jarsigner -verbose -certs -verify dynaccn.jar 28325 Tue Aug 17 09:41:58 MDT 2010 META-INF/MANIFEST.MF 28404 Tue Aug 17 09:41:58 MDT 2010 META-INF/IDV.SF 2880 Tue Aug 17 09:41:58 MDT 2010 META-INF/IDV.RSA 0 Tue Aug 17 09:41:58 MDT 2010 META-INF/ 0 Mon Aug 16 10:10:34 MDT 2010 edu/ 0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/ 0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/unidata/ 0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/unidata/dynaccn/ ... sm 486 Mon Aug 16 10:10:34 MDT 2010 App$1.class X.509, CN=University Corporation for Atmospheric Research, OU=UNIDATA, O=University Corporation for Atmospheric Research, L=Boulder, ST=Colorado, C=US [certificate will expire on 2/6/11 4:59 PM] X.509, CN=Thawte Code Signing CA, O=Thawte Consulting (Pty) Ltd., C=ZA [certificate is valid from 8/5/03 6:00 PM to 8/5/13 5:59 PM] [KeyUsage extension does not support code signing] X.509, [email protected], CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA [certificate is valid from 7/31/96 6:00 PM to 12/31/20 4:59 PM] [CertPath not validated: null] ... jar verified. Warning: This jar contains entries whose signer certificate''s KeyUsage extension doesn''t allow code signing. This jar contains entries whose signer certificate will expire within six months. This jar contains entries whose certificate chain is not validated. This jar contains signed entries that''s not signed by alias in this keystore.

y tanto JWS como mi navegador tienen un certificado para "Thawte Premium Server CA".

El problema ocurre incluso si el caché JWS y el área de descarga del navegador están vacíos.

No creo que el mensaje "KeyUsage" sea relevante porque 1) se usa la misma cadena de certificados para otra aplicación que se lance exitosamente; y 2) la documentación que he leído indica que la CA firmada por Thawte Code solo se usa para verificar el certificado UNIDATA y no para firmar el código.

Mi entorno es Linux 2.6.27.41-170.2.117.fc10.x86_64, Firefox 3.6.8 (i686) y Java 1.7.0-ea.

¿Por qué no se lanzará esta aplicación?

ACTUALIZACIÓN: descubrí que la aplicación se inicia si el atributo "base de código" en el archivo JNLP hace referencia a un directorio local, pero no si hace referencia a una URL que se encuentra detrás de la autenticación de usuario. En el último caso, javaws (1) interpreta la página web de autenticación como un archivo JNLP (con resultados obvios) si se invoca desde la línea de comandos. Si el script "deployJava" lo invoca desde una página web que autentica al usuario (para que el navegador tenga una cookie de sesión), entonces javaws (1) dice que la aplicación no está firmada. Considero que estos dos modos de falla son extraños, ya que la documentación de javaws (1) dice que comprende las páginas web que autentican al usuario y el archivo jar está firmado.


  1. asegúrese de no utilizar una versión en caché (sin firmar) del contenedor. Limpie la carpeta temporal donde JWS descarga frascos
  2. asegúrese de que todas las dependencias (jar) de su jar, que requieren permisos especiales, también estén firmadas

Asegúrese de ajustar sus llamadas en el applet con un bloque doPrivileged. No estoy seguro de por qué funciona así, pero parece funcionar como un encanto.


Estoy en Gentoo Linux, ejecutando OpenJDK 7, y creo que experimenté el mismo problema.

No pude lograr que funcionara con OpenJDK 7. Solo la firma con una versión de Sun Java 6 JDK finalmente firmó la aplicación correctamente. (También reconstruí todo debido a que está siendo administrado por hormiga, no sé si eso es necesario, sin embargo).

Simplemente cambiar al JDK 6 oficial sin reconstruir solo hace que la advertencia "[CertPath no validado: nulo]" desaparezca cuando varíe con "jarsigner -verify -verbose -certs", pero parece que no funciona en la aplicación que finalmente uso.