web-dev-qa-db-fra.com

Définitions du fichier de clés et du magasin de clés

Quelle est la différence entre un magasin de clés et un fichier de clés certifiées?

273
Rob Wright

Un magasin de clés contient des clés privées et les certificats avec leurs 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.

254
Darron
  1. Un magasin de clés contient des clés privées. Vous n’avez besoin de cela que si vous êtes un serveur ou si le serveur requiert l’authentification du client.

  2. Un fichier de clés certifiées contient des certificats d'autorité de certification à approuver. Si le certificat de votre serveur est signé par une autorité de certification reconnue, le fichier de clés certifiées par défaut fourni avec le JRE l'approuve déjà (car il fait déjà confiance à des autorités de confiance), vous n'avez donc pas besoin de créer votre propre ou d'ajouter quoi que ce soit à celle-ci. de la JRE.

Source

76
anonymous

Dans une négociation SSL, le but de trustStore est de vérifier les informations d'identification et le but de keyStore est de fournir des informations d'identification .

keyStore

keyStore in 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.

TrustStore

Claytore stocke des certificats tiers, votre application Java communiquant 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 à qui elle prétend, et KeyManager décide quelles informations d’authentification doivent être envoyées à l’hôte distant pour authentification lors de la négociation SSL.

Si vous êtes un serveur SSL, vous utiliserez une clé privée lors de l'algorithme d'échange de clé et 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 se présentent le plus souvent sous forme de fichier . Cer qui est ajouté à keyStore ou trustStore à l’aide de n’importe quel utilitaire de gestion de clé, par exemple. keytool .

Source: http://javarevisited.blogspot.ch

69
Aniket Thakur

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 certifiées est utilisé pour stocker uniquement les 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 simplement fusionner les deux en un seul magasin.

29
Peter Mularien

En Java, quelle est la différence entre un fichier de clés et un fichier de clés certifiées?

Voici la description de la documentation Java à la page Guide de référence de JSSE (Java Secure Socket Extension) . 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/fichier de clés certifiées

Un magasin de clés est une base de données de matériel 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 du 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 de clé comprend l'identité d'une entité et sa clé privée. Elle peut être utilisée à diverses fins cryptographiques. En revanche, une entrée de certificat de confiance contient uniquement une clé publique en plus de l'identité de l'entité. Par conséquent, une entrée de certificat de confiance ne peut pas être utilisée lorsqu'une clé privée est requise, comme dans un fichier javax.net.ssl.KeyManager. Dans l'implémentation JKS du JKS, un fichier de clés peut contenir à la fois des entrées de clé et des entrées de certificat de confiance.

Un fichier de clés certifiées 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é en laquelle vous avez déjà confiance, et si vous pouvez vérifier que l'entité est bien celle qu'elle prétend être, vous pouvez alors supposer que les données proviennent réellement 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é. En générant une paire de clés ou en important un certificat, l’utilisateur donne confiance à cette entrée. Toute entrée dans le fichier de clés certifiées est considérée comme une entrée de confiance.

Il peut être utile d’avoir deux fichiers de clés différents: l’un contenant uniquement vos entrées de clé et l’autre contenant vos entrées de certificat approuvé, y compris les certificats d’autorité de certification. Le premier contient des informations privées, tandis que le second n'en contient pas. L'utilisation de deux fichiers au lieu d'un fichier de clés unique permet de mieux distinguer la distinction logique entre vos propres certificats (et les clés privées correspondantes) et les certificats des autres. Pour renforcer la protection de vos clés privées, stockez-les dans un fichier de clés à accès restreint et fournissez les certificats de confiance dans un fichier de clés plus accessible au public, si nécessaire.

9
jww
  1. La première et principale différence entre trustStore et keyStore réside dans le fait que TrustManager utilise TrustStore pour déterminer si une 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 lors de l'établissement d'une liaison SSL.

  2. 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 que trustStore stocke une clé publique ou des certificats de CA (autorités de certification) utilisés 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 permettant de gérer ces fichiers est le même (keytool), vous pouvez donc utilise un seul fichier pour les deux buts, mais vous ne devriez probablement pas .

  3. Au moins sur mon Mac OSX, le keyStore par défaut est ${user.home}/.keystore et le trustStore 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 dans le cas de Java.security.UnrecoverableKeyException: Password must not be null, à l'aide du paramètre -Djavax.net.ssl.trustStorePassword=password ou -Djavax.net.ssl.trustStorePassword=password.

Source principale:

http://javarevisited.blogspot.co.uk/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html

3
alessiop86