304 votes

Définitions de Truststore et Keystore

Quelle est la différence entre un keystore et un truststore ?

284voto

Darron Points 13196

Un keystore contient les clés privées, et les certificats avec leurs clés publiques correspondantes.

Un truststore contient des certificats d'autres parties avec lesquelles vous pensez communiquer, ou d'autorités de certification auxquelles vous faites confiance pour identifier d'autres parties.

14 votes

Bien que cela doive être vrai dans la pratique, ils peuvent (et sont souvent) une seule et même chose. Vous pouvez en fait importer une clé privée et un certificat public dans le "truststore" par défaut [java home]/jre/lib/security/cacerts. L'utilitaire keytool ne fait pas de distinction entre les deux termes, mais uniquement entre les types de magasins (par exemple, JKS et PKCS12). D'ailleurs, Java fait la même chose dans le code source. Vous créez un java.security.KeyStore et utilisez un gestionnaire de confiance pour gérer les certificats qu'il contient, mais il n'existe pas de classe TrustStore.

4 votes

Java ne dispose pas d'un TrustStore en soi . Ou bien je n'ai pas pu le trouver dans les docs java (par exemple, java.security.TrustStore ). Lorsque l'on veut faire confiance à une autorité de certification, on lui fait confiance par l'intermédiaire d'un certificat. KeyStore (et le KeyStore est passé dans le TrustManagerFactory ).

6 votes

Il convient de mentionner que KeyStore.load(InputStream is, char[] password) ( docs ) peut prendre un mot de passe nul et il donnera alors accès aux certificats publics. Autrement dit, le code qui veut parcourir un truststore n'a pas besoin de connaître son mot de passe (pour de très bonnes raisons !).

87voto

  1. Un keystore 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 du client.

  2. Un truststore contient des certificats d'AC auxquels il faut faire confiance. Si le certificat de votre serveur est signé par une autorité de certification reconnue, le truststore par défaut qui est livré avec le JRE lui fera déjà confiance (parce qu'il fait déjà confiance à des CA fiables). fait confiance à des CA dignes de confiance), vous n'avez donc pas besoin de construire la vôtre, ou d'ajouter quoi que ce soit à celui du JRE.

Source :

79voto

Aniket Thakur Points 10135

Dans une poignée de main SSL, le but de trustStore sert à vérifier les informations d'identification. et le but de keyStore est destiné à fournir des informations d'identification .

keyStore

keyStore en Java stocke les clés privées et les certificats correspondant à leurs clés publiques et nécessite si vous êtes un serveur SSL ou si SSL requiert une authentification du client.

TrustStore

TrustStore stocke les certificats de tiers, votre application Java communique ou les certificats signés par les CA (autorités de certification comme Verisign, Thawte, Geotrust ou GoDaddy) qui peuvent être utilisés pour identifier un tiers.

TrustManager

TrustManager détermine si la connexion distante doit être fiable ou non, c'est-à-dire si la partie distante est bien celle qu'elle prétend être, et KeyManager décide des informations d'identification à envoyer à l'hôte distant pour l'authentification pendant la poignée de main SSL.

Si vous êtes un serveur SSL, vous utiliserez votre clé privée pendant l'algorithme d'échange de clés et enverrez au client les certificats correspondant à vos clés publiques, ces certificats étant acquis à partir du keyStore. Du côté du client SSL, s'il est écrit en Java, il utilisera les certificats stockés dans le trustStore pour vérifier l'identité du serveur. Les certificats SSL se présentent le plus souvent sous la forme suivante .cer qui est ajouté au keyStore ou au trustStore en utilisant n'importe quel utilitaire de gestion de clés, par ex. keytool .

Source : http://javarevisited.blogspot.ch

31voto

Peter Mularien Points 1273

Vous pouvez également être intéressé par l'article de Sun, qui fait partie de la documentation standard de JSSE :

http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores

En général, le magasin de confiance est utilisé pour stocker uniquement les clés publiques, à des fins de vérification, comme dans le cas de l'authentification X.509. Pour des raisons de facilité de gestion, il est assez fréquent que les administrateurs ou les développeurs regroupent les deux dans un seul magasin.

1 votes

Donne un 404 malheureusement

0 votes

@ChrisBeach - j'ai mis à jour le lien vers le lien correct sur le site d'Oracle.

1 votes

Le truststore est utilisé pour stocker des certificats de signataires de confiance.

12voto

jww Points 9514

En Java, quelle est la différence entre un keystore et un truststore ?

Voici la description de la documentation Java à l'adresse suivante Guide de référence de Java Secure Socket Extension (JSSE) . Je ne pense pas qu'il vous dise quoi que ce soit de différent de ce que les autres ont dit. Mais il fournit la référence officielle.

keystore/truststore

Un keystore est une base de données de clés. Les clés sont utilisées à des fins diverses, 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.

De manière générale, les informations du keystore 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é se compose de l'identité d'une entité et de sa clé privée. à des fins cryptographiques diverses. En revanche, une entrée de certificat de confiance contient uniquement une clé publique en plus de l'identité de l'entité. l'identité de l'entité. Ainsi, une entrée de certificat de confiance ne peut pas être utilisée lorsqu'une clé privée est nécessaire, par exemple dans une javax.net.ssl.KeyManager. Dans l'implémentation JDK de JKS, un keystore peut contenir à la fois des entrées de clés et des entrées de certificats de confiance.

Un truststore est un keystore qui est utilisé lors de la prise de décision sur ce à quoi il faut faire confiance. Si vous recevez des données d'une entité à laquelle vous vous avez déjà confiance, et si vous pouvez vérifier que l'entité est celle qu'elle qu'elle prétend être, alors vous pouvez supposer que les données proviennent réellement de cette entité.

Une entrée ne doit être ajoutée à un truststore que si l'utilisateur fait confiance à cette entité. Soit en générant une paire de clés, soit en important un certificat. certificat, l'utilisateur accorde sa confiance à cette entrée. Toute entrée dans le truststore est considérée comme une entrée de confiance.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X