Pregunta

He estado trabajando con Web Start durante un par de años y tengo experiencia firmando los tarros y demás. Estoy haciendo mi primer intento de implementar una aplicación RCP con inicio web y aunque de hecho he firmado todos los archivos jar con el mismo certificado, sigo recibiendo este error: 'los recursos jar en jnlp no están firmados por el mismo certificado'

¿Alguien más se ha encontrado con esto? Si es así, ¿alguna idea sobre cómo solucionarlo?

¿Fue útil?

Solución

Cuando tuve problemas similares después de revisar los frascos, resultó que alguien más había firmado un frasco de terceros.

Debe crear un archivo jnlp separado para los frascos firmados por el otro certificado y leer este jnlp de su archivo jnlp:

<resources>
  ...
  <extension name="other" href="other.jnlp"/>
</resources>

Aquí o aquí puede encontrar un ejemplo.

Otros consejos

Esta puede ser una entrada de manifiesto obsoleta de un jar ya firmado que usa como biblioteca. Encontré este problema con jogl a través de webstart. Prueba esto:

Descomprima todos los archivos jar, purgue todos los directorios META-INF, jar y vuelva a firmarlos.

Descubrí que a JNLP / Webstart no le gustan las firmas múltiples / firmas a través de jarsigner.exe para un JAR determinado. Si un JAR como BouncyCastle (que viene prescrito) se firma nuevamente con el certificado de su Compañía, la inspección visual me lleva a creer que el nuevo Certificado y Firmas se realizan correctamente en el JAR. pero que JNLP puede estar leyendo solo la primera firma (¿Alfabética?) en el META-INF y, por lo tanto, quejarse de que no coincide con sus otros JAR (que solo tienen una firma, Corporativa, en cada JAR).

Tuve exactamente la misma experiencia descrita por Matthew con los JAR de BouncyCastle prescritos. Sin embargo, descubrí que JRE versión 1.6.0_14 y posteriores aceptarán con gusto JAR con múltiples firmas (como era de esperar). Por lo tanto, no necesitaba usar el 'mecanismo de extensión de componentes' de JNLP descrito anteriormente.

PS No encontré ninguna referencia obvia a esta solución en las notas de la versión 1.6.0_14. Sin embargo, he verificado que varios JAR firmados funcionan en todas las versiones posteriores (al menos 14 - 17 + 24).

Consulte la explicación de una de las preguntas frecuentes: ¿Cómo uso múltiples archivos JAR firmados por diferentes certificados?

Solución correcta.

En mi proyecto, lo que sucedió es que hay un par de instancias en el grupo de equilibrador de carga, hay algunas instancias con la versión anterior del código y algunas con la versión nueva. Por lo tanto, hay certificados no firmados por el mismo certificado ...

La siguiente secuencia de comandos enumera el número de serie del certificado RSA en cada jarra en el directorio / some / lib y ayuda a encontrar jarras firmadas por el certificado incorrecto:

for f in $( find /some/lib -type f -name '*.jar' )
do 
   serial=$( unzip -p $f 'META-INF/*.RSA' | 
             openssl pkcs7 -inform der -print -noout |
             grep --max-count=1 serialNumber | cut -d: -f2- | tr -d ' ' )
   printf "%40s: %s\n" "$serial" "$f"
done
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top