Quelle est la différence entre un keystore et un truststore?
keystore
encryption-asymmetric
truststore
Rob Wright
la source
la source
TrustStore
soi . Ou je ne pouvais pas le trouver dans les documents java (par exemple,java.security.TrustStore
). Lorsque nous voulons faire confiance à une autorité de certification, elle est approuvée via unKeyStore
(et leKeyStore
est transmis auTrustManagerFactory
).KeyStore.load(InputStream is, char[] password)
( docs ) peut prendre un mot de passe nul et qu'il donnera alors accès aux certificats publics. Autrement dit, le code qui veut parcourir un magasin de clés de confiance n'a pas besoin de le connaître (pour de très bonnes raisons!)Un magasin de clés contient des clés privées. Vous n'en avez besoin que si vous êtes un serveur ou si le serveur nécessite une authentification client.
Un fichier de clés certifiées contient des certificats CA à approuver. Si le certificat de votre serveur est signé par une autorité de certification reconnue, le magasin de clés de confiance par défaut fourni avec le JRE lui fera déjà confiance (car il fait déjà confiance aux autorités de certification dignes de confiance), vous n'avez donc pas besoin de créer le vôtre ou d'ajouter quoi que ce soit à celui-ci. du JRE.
La source
la source
Dans une poignée de main SSL, le but du trustStore est de vérifier les informations d'identification et le but du keyStore est de fournir les informations d'identification .
keyStore
keyStore dans Java stocke la clé privée et les certificats correspondant à leurs clés publiques et requiert si vous êtes un serveur SSL ou SSL nécessite une authentification client.
TrustStore
TrustStore stocke des certificats de tiers, votre application Java communique ou des certificats signés par CA (autorités de certification comme Verisign, Thawte, Geotrust ou GoDaddy) qui peuvent être utilisés pour identifier des tiers.
TrustManager
TrustManager détermine si la connexion à distance doit être approuvée ou non, c'est-à-dire si la partie distante est la personne à laquelle elle prétend et KeyManager décide quelles informations d'authentification doivent être envoyées à l'hôte distant pour l'authentification lors de la négociation SSL.
Si vous êtes un serveur SSL, vous utiliserez la clé privée pendant l'algorithme d'échange de clés et enverrez les certificats correspondant à vos clés publiques au client, ce certificat est acquis auprès de keyStore. Côté client SSL, s'il est écrit en Java, il utilisera des certificats stockés dans trustStore pour vérifier l'identité du serveur. Les certificats SSL sont le plus souvent fournis sous la forme d'un fichier .cer qui est ajouté dans keyStore ou trustStore à l'aide de n'importe quel utilitaire de gestion de clés, par exemple keytool .
Source: http://javarevisited.blogspot.ch
la source
Vous pouvez également être intéressé par l'écriture de Sun, dans le cadre de la documentation JSSE standard:
http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores
En règle générale, le magasin de clés de confiance est utilisé pour stocker uniquement les clés publiques, à des fins de vérification, comme avec l'authentification X.509. À des fins de gestion, il est assez courant pour les administrateurs ou les développeurs de simplement fusionner les deux en un seul magasin.
la source
Voici la description des documents Java du Guide de référence de Java Secure Socket Extension (JSSE) . Je ne pense pas que cela vous dise quelque chose de différent de ce que les autres ont dit. Mais il fournit la référence officielle.
la source
La première et principale différence entre trustStore et keyStore est que trustStore est utilisé par TrustManager pour déterminer si la connexion à distance doit être approuvée, keyStore est utilisé à partir de KeyManager pour décider quelles informations d'authentification doivent être envoyées à l'hôte distant pour l'authentification lors de la négociation SSL.
Une autre différence est que keyStore contient théoriquement des clés privées requises uniquement si vous exécutez un serveur en connexion SSL ou si vous avez activé l'authentification client côté serveur et d'autre part, trustStore stocke la clé publique ou les certificats de CA (autorités de certification) qui sont utilisés pour faites confiance à une partie distante ou à une connexion SSL.
En fait, vous pouvez stocker dans le même fichier des clés privées et publiques, étant donné que l'outil pour gérer ces fichiers est le même (keytool), vous pouvez donc utiliser un seul fichier à la fois pour les deux fins, mais vous ne devriez probablement pas .
Au moins sur mon Mac OSX, le magasin de clés par défaut est
${user.home}/.keystore
et le magasin de clés par défaut est/System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
.Si vous souhaitez les remplacer, vous devez ajouter les paramètres JVM
-Djavax.net.ssl.keyStore /path/to/keyStore
ou-Djavax.net.ssl.trustStore /path/to/trustStore
. Vous devrez peut-être également définir le mot de passe keyStore en cas dejava.security.UnrecoverableKeyException: Password must not be null
, en utilisant le paramètre-Djavax.net.ssl.trustStorePassword=password
ou-Djavax.net.ssl.trustStorePassword=password
Source principale:
la source