Java webstart dit que mon application utilise un certificat auto-signé, mais j'ai utilisé un certificat de signature de code COMODO


J'ai acheté un certificat de signature de code COMODO et l'ai utilisé pour signer mon application java webstart.

Question principale: Ce certificat de signature de code COMODO est-il même pris en charge par java 8?

Plus d'infos:

Sur toutes les machines sauf la mienne, java bloque l'application, en disant qu'elle utilise un certificat auto-signé.

Je ne comprends même pas pourquoi cela fonctionne sur ma machine. J'ai regardé la liste des racines de certification de confiance dans le panneau de configuration java (1.8.0_45-b15), mais je ne trouve pas la "COMODO RSA Certification Authority" là-bas.

Je vois ce certificat dans le composant logiciel enfichable de certificat Windows MMC sous "Autorités de certification racine de confiance". Mais sur au moins 3 autres machines il n'existe pas.

Author: Reto Höhener, 2015-07-03

3 answers

Je l'ai finalement résolu-voici l'histoire:

Lorsque j'ai acheté le certificat, je devais le récupérer en naviguant vers une adresse de site Web que j'ai reçue par e-mail. Là, le certificat a été automatiquement installé dans le truststore de mon navigateur (Firefox).

Je l'ai ensuite exporté depuis Firefox (Options - Avancé - Afficher les Certificats - Vos Certificats - Bouton de sauvegarde).

Ce que je n'avais pas réalisé à l'époque, c'est que Firefox, contrairement à Java et Windows, a le " COMODO Autorité de certification RSA " en tant que jeton intégré :

Ce que je ne savais pas non plus à l'époque, c'est que l'exportation de certificat Firefox semble n'inclure que la chaîne de certificats jusqu'à la première autorité de confiance, dans ce cas, la "COMODO RSA Certification Authority".

À partir de ce COMODO support site j'ai appris que la chaîne devrait en fait aller un plus haut, jusqu'à "AddTrust External CA Root":

Qui cela semblait beaucoup plus prometteur, car le certificat AddTrust est en fait inclus dans java 8 cacerts truststore d'Oracle, qui est chargé de vérifier le jar pendant java webstart.

La prochaine chose que j'ai faite a été d'importer le *.fichier p12 que j'ai obtenu de Firefox dans le gestionnaire de certificats Windows (Start - certmgr.msc), parce que pour une raison quelconque, je pensais que c'était le moyen de convertir *.p12 à *.pfx (bien que maintenant je sache que les deux extensions sont utilisées pour le même format pkcs12 keystore). Quoi qu'il en soit, lors de l'importation, cette question est apparue:

Ici, j'ai fait l'erreur critique: j'ai cliqué sur oui. Cela a provoqué l'installation de " COMODO RSA Certification Authority "dans le Windows truststore en tant que" Certificat racine de confiance " (btw uniquement visible après le redémarrage de certmgr.msc):

Mon certificat de signature de code a été installé dans "Personnel/Certificats". Je l'ai exporté à partir de là (Action - Toutes les tâches - Exportation...), et marqué "Inclure tous certificats dans le chemin de certification si possible".

Maintenant, exactement la même chose s'est produite que lorsque j'ai exporté à partir de Firefox. Étant donné que Windows avait maintenant" COMODO RSA Certification Authority " installé en tant que certificat racine de confiance, il n'incluait que la chaîne jusqu'à celle-ci. Voici ce que j'ai obtenu après l'exportation:

Et maintenant pour le coup de génie, sur lequel je suis tombé par pur hasard: j'ai supprimé la "COMODO RSA Certification Authority" de Windows gestionnaire de certification. Maintenant, lorsque j'ai double-cliqué sur mon certificat de signature de code, la chaîne affichée semblait soudainement différente:

J'avoue que j'ai eu une petite poussée d'adrénaline quand j'ai vu ça. J'ai exporté à nouveau (exactement les mêmes paramètres qu'avant).

Et en effet, après avoir signé mon application avec ce certificat exporté, java webstart l'accepte:

 4
Author: Reto Höhener, 2015-07-06 23:10:46

MISE À JOUR: C'était un bogue de la version JRE. Les nouveaux certificats CA de Comodo ont été ajoutés au magasin de clés par défaut dans Java 8u51 .

Une réponse à une autre question qui, bien que quelque peu déplacée, semble très sur le sujet ici:

Vous pouvez dire si les certificats d'une autorité de certification fonctionneront pour la signature de code Java par examen du fichier Java cacerts, qui répertorie tous les cas connus pour Java. Si leur certificat est dans ce fichier, Java ne se plaindra pas de le code signé. Si elle n'est pas, puis il va avertir les utilisateurs. Pour exemple:

root@girflet:~# keytool -list -keystore /usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/security/cacerts | grep comodo

Enter keystore password: changeit

comodoaaaca, 02-May-2006, trustedCertEntry,

Notez que j'ai dû entrer le mot de passe par défaut du magasin de clés, changeit . Cette commande devrait également fonctionner sur Windows, bien que vous deviez modifiez le chemin d'accès au fichier cacerts et vous n'aurez pas grep. L'utilisation plus au lieu de cela et parcourez la page jusqu'à ce que vous trouviez ou ne trouviez pas ce que vous êtes à la recherche pour.

À ce jour, Comodo est dans le fichier cacerts, et startssl ne le sont pas. Donc un startssl cert ne serait pas très bon pour le code Java.

Source: https://stackoverflow.com/a/1906679/154527

 2
Author: Alain O'Dea, 2017-05-23 12:31:55

Je peux vous donner une réponse conditionnelle. Sur l'un des ordinateurs qui n'aime pas votre certificat, allez à http://jonathancrosmer.com/software/invadeearth / et cliquez sur Envahir la Terre.
Ce programme utilise un certificat Comodo. Je l'ai construit contre Java 7, mais si votre ordinateur n'a qu'un runtime Java 8, il devrait toujours fonctionner. 1. Si vous recevez le même avertissement, vous savez qu'il s'agit d'un problème Java 8. 2. Sinon, vous savez que quelque chose ne va pas avec votre certificat. De toute façon, vous aurez probablement envie pour obtenir un remboursement de votre émetteur de certificat, car ils annoncent que leur certificat est approuvé par Java.

 1
Author: Jonathan Crosmer, 2015-07-03 14:23:02