Question

Je travaille avec Web Start depuis quelques années maintenant et j’ai l’expérience de la signature des bocaux, entre autres choses. Je tente ma première tentative de déploiement d’une application RCP avec Web Start et, même si j’ai en fait signé tous les bocaux avec le même certificat, j’obtiens toujours l’erreur suivante: "Les ressources jar de jnlp ne sont pas signées par le même certificat"

Est-ce que quelqu'un d'autre est tombé sur ça? Si oui, avez-vous des idées pour y remédier?

Était-ce utile?

La solution

Lorsque j’ai eu des problèmes similaires après avoir vérifié les bocaux, il s’est avéré qu’un bocal tiers était signé par une autre personne.

Vous devez créer un fichier jnlp distinct pour les fichiers jar signés par l'autre certificat et lire ce fichier jnlp à partir de votre fichier jnlp:

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

Ici ou vous trouverez ici un exemple.

Autres conseils

Il peut s'agir d'une entrée de manifeste obsolète provenant d'un fichier jar déjà signé que vous utilisez en tant que bibliothèque. J'ai rencontré ce problème avec jogl via Webstart. Essayez ceci:

Décompressez tous les fichiers jar, purgez tous les répertoires META-INF, jar et signez-les à nouveau.

J'ai constaté que JNLP / Webstart n'aime pas les signatures multiples / la signature via jarsigner.exe pour un fichier JAR donné. Si un JAR tel que BouncyCastle (qui est livré pré-signé) est à nouveau signé avec le certificat de votre société, une inspection visuelle m'amène à croire que le nouveau certificat et les nouvelles signatures sont correctement exécutés dans le JAR. mais JNLP ne lit peut-être que la première signature (alphabétique?) dans le META-INF et se plaint ainsi que cela ne correspond pas à vos autres JAR (qui n’ont qu’une signature, Corporate, sur chaque JAR).

J'ai eu exactement la même expérience que celle décrite par Matthew avec les JARs BouncyCastle présignés. Cependant, j’ai constaté que la version 1.6.0_14 et ultérieure de JRE accepterait volontiers les fichiers JAR comportant plusieurs signatures (comme je l’attendais). Par conséquent, je n'ai pas eu besoin d'utiliser le "mécanisme d'extension de composant" de JNLP décrit ci-dessus.

PS Nous n'avons trouvé aucune référence évidente à ce correctif dans les notes de publication de 1.6.0_14. Cependant, j'ai vérifié que plusieurs fichiers JAR signés fonctionnaient dans toutes les versions ultérieures (au moins 14 - 17 + 24).

Voir l'explication de l'une des FAQ: Comment utiliser plusieurs fichiers JAR signés par différents certificats?

Bonne solution.

Dans mon projet, il est apparu que le pool d'équilibrage de la charge contenait quelques instances, certaines anciennes versions de code et d'autres avec une nouvelle version. Il existe donc des certificats non signés par le même certificat ...

Le script suivant répertorie le numéro de série du certificat RSA dans chaque fichier jar du répertoire / some / lib et permet de rechercher les fichiers jar signés par un certificat incorrect:

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top