web-dev-qa-db-fra.com

Pourquoi Java possède-t-il les fichiers cacerts et jssecacerts?

Je suis sérieusement confus sur les différences entre les fichiers cacerts et jssecacerts.

Je sais que par défaut Java recherche le fichier jssecacerts puis le fichier cacerts.

Mais à quoi sert le fichier jssecacerts?

Je crois comprendre que si un nouveau fichier de clés certifiées doit être utilisé, une copie de cacerts doit être créée et toutes les nouvelles autorités de certification de confiance doivent être ajoutées à cette copie. La copie de cacerts (avec les nouvelles autorités de certification) doit ensuite être référencée par le -Djavax.net.ssl.trustStore propriété système. De cette façon, les autres applications Java qui s'exécutent sur cette machine ne feront pas accidentellement confiance aux autorités de certification non par défaut.

47
hooknc

De Guide de référence Java ™ Secure Socket Extension (JSSE) , TrustManagerFactory utilise les étapes suivantes pour essayer de trouver du matériel de confiance:

  1. propriété système javax.net.ssl.trustStore
  2. Java-home/lib/security/jssecacerts
  3. Java-home/lib/security/cacerts (expédié par défaut)

Je pense que cela est basé sur la convention sur le concept de configuration. Sans effort de codage supplémentaire, cacert sera utilisé. Pour les certificats CA/signature supplémentaires privés, un développeur peut utiliser la première ou la deuxième méthode, où l'ancien peut simplement contenir un certificat particulier mais contient plus tard une liste de certificats.

34
Lee Chee Kiam

Si je comprends bien, le fichier cacerts est le fichier par défaut livré.

S'il existe un fichier jssecacerts, il est utilisé exclusivement - pas en plus du fichier cacerts.

Ma recommandation: conservez le fichier cacerts, copiez-le dans jssecacerts et ajoutez tous les certificats de CA/signature privés nécessaires au fichier jssecacerts.

13
Chris

Bonne question. Je pense que cela découle du fait historique que JSSE était autrefois un module complémentaire. JSSE autorise plusieurs fournisseurs, donc peut-être que jssecacerts est uniquement pour le fournisseur JSSE, et d'autres fournisseurs peuvent utiliser le leur.

Mais qui a utilisé des cacerts avant JSSE est une autre question.

4
user207421