Définitions du fichier de clés et du magasin de clés
-
11-07-2019 - |
Question
Quelle est la différence entre un fichier de clés et un fichier de clés certifiées?
La solution
Un magasin de clés contient des clés privées et les certificats avec les clés publiques correspondantes.
Un fichier de clés certifiées contient des certificats d'autres parties avec lesquelles vous comptez communiquer ou d'autorités de certification en lesquelles vous avez confiance pour identifier d'autres parties.
Autres conseils
-
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 truststore contient des certificats d'autorité de certification à approuver. Si votre serveur le certificat est signé par une autorité de certification reconnue, le fichier de clés certifiées par défaut qui est livré avec le JRE aura déjà confiance en lui (car il est déjà fait confiance à des CA dignes de confiance), vous n’avez donc pas besoin de créer la vôtre, ou d'ajouter quelque chose à celui de la JRE.
Dans une négociation SSL, le but de trustStore est de vérifier les informations d'identification et de keyStore est de fournir des informations d'identification .
KeyStore
keyStore en Java stocke la clé privée et les certificats correspondant à leurs clés publiques et requis si vous êtes un serveur SSL ou si SSL requiert une authentification client.
Trusttore
TrustStore stocke des certificats tiers, votre application Java communique ou des certificats signés par une autorité de certification (autorités de certification telles que Verisign, Thawte, Geotrust ou GoDaddy) pouvant être utilisées pour identifier des tiers.
TrustManager
TrustManager détermine si la connexion distante doit être approuvée ou non, c’est-à-dire si la partie distante est la personne à laquelle elle se réclame et KeyManager détermine les informations d’authentification devant être envoyées à l’hôte distant pour authentification lors de la négociation SSL.
Si vous êtes un serveur SSL, que vous utiliserez une clé privée lors de l’algorithme d’échange de clé et que vous enverrez au client les certificats correspondant à vos clés publiques, ce certificat est acquis à partir de keyStore. Sur le côté client SSL, s’il est écrit en Java, il utilisera les certificats stockés dans trustStore pour vérifier l’identité du serveur. Les certificats SSL sont généralement fournis sous forme de fichier .cer qui est ajouté à keyStore ou trustStore à l'aide de tout utilitaire de gestion de clés, par exemple. outil de clé .
L'écriture de Sun dans la documentation JSSE standard pourrait également vous intéresser:
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 certifiées est utilisé pour stocker uniquement des clés publiques, à des fins de vérification, par exemple avec l'authentification X.509. Pour des raisons de facilité de gestion, il est assez courant pour les administrateurs ou les développeurs de fusionner les deux en un seul magasin.
En Java, quelle est la différence entre un magasin de clés et un magasin de clés de confiance?
Voici la description des documents Java à l'adresse Extension Java Secure Socket (JSSE) Guide de référence . Je ne pense pas que cela vous dise autre chose que ce que d'autres ont dit. Mais il fournit la référence officielle.
magasin de clés / magasin de clés de confiance
Un magasin de clés est une base de données de matériel de clé. Le matériel de clé est utilisé à diverses fins, notamment pour l'authentification et l'intégrité des données. Différents types de magasins de clés sont disponibles, notamment PKCS12 et JKS d'Oracle.
En règle générale, les informations de magasin de clés peuvent être regroupées en deux catégories: les entrées de clé et les entrées de certificat de confiance. Une entrée clé se compose de l'identité d'une entité et de sa clé privée, et peut être utilisé pour une variété d'usages cryptographiques. En revanche, une personne de confiance l’entrée de certificat ne contient qu’une clé publique en plus de la identité de l'entité. Ainsi, une entrée de certificat de confiance ne peut pas être utilisée lorsqu'une clé privée est requise, comme dans un javax.net.ssl.KeyManager. Dans l’implémentation JKS de JKS, un fichier de clés peut contenir à la fois des entrées de clé et des entrées de certificat de confiance.
Un magasin de clés de confiance est un fichier de clés utilisé pour prendre des décisions concernant les éléments à faire confiance. Si vous recevez des données d'une entité que vous déjà confiance, et si vous pouvez vérifier que l'entité est celle qui il prétend être, alors vous pouvez supposer que les données provenaient vraiment de cette entité.
Une entrée ne doit être ajoutée à un fichier de clés certifiées que si l'utilisateur approuve cette entité. Soit en générant une paire de clés, soit en important un certificat, l'utilisateur donne confiance à cette entrée. Toute entrée dans le le fichier de clés certifiées est considéré comme une entrée de confiance.
Il peut être utile d’avoir deux fichiers de magasin de clés différents: l’un contenant uniquement vos entrées de clé et l’autre contenant votre entrées de certificat de confiance, y compris les certificats de l'autorité de certification. L'ancien contient des informations privées, alors que ce dernier ne le fait pas. En utilisant deux fichiers au lieu d'un fichier de magasin de clés unique fournit une séparation plus propre de la distinction logique entre vos propres certificats (et clés privées correspondantes) et les certificats d’autres personnes. Pour fournir plus protection de vos clés privées, stockez-les dans un magasin de clés avec accès restreint, et fournir les certificats de confiance dans un plus fichier de clés accessible au public, si nécessaire.
-
La première et principale différence entre trustStore et keyStore est que TrustManager utilise TrustStore pour déterminer si la connexion distante doit être approuvée. KeyStore est utilisé par KeyManager pour décider des informations d'authentification à envoyer à l'hôte distant pour l'authentification via SSL. poignée de main.
-
Une autre différence est que keyStore contient théoriquement des clés privées requises uniquement si vous exécutez une connexion serveur sur SSL ou si vous avez activé l'authentification client côté serveur et que trustStore stocke la clé publique ou les certificats de l'autorité de certification (certificat). Autorités) utilisées pour faire confiance à une partie distante ou à une connexion SSL.
En fait, vous pouvez stocker dans le même fichier les clés privées et publiques, étant donné que l'outil pour gérer ces fichiers est le même (keytool), pour que vous puissiez utiliser un seul fichier à la fois, mais vous probablement ne devrait pas .
-
Au moins sur mon Mac OSX, le fichier de clés par défaut est
$ {user.home} /. keystore
, et le fichier de confiance par défaut est/ Système / Bibliothèque / Java / Support / CoreDeploy.bundle / Sommaire / Accueil / 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 pourriez aussi besoin de définir le mot de passe keyStore en cas dejava.security.UnrecoverableKeyException: le mot de passe ne doit pas être null
, en utilisant le paramètre-Djavax.net.ssl.trustStorePassword = mot de passe
ou-Djavax.net.ssl.trustStorePassword = mot de passe
Source principale: