Différence entre le fichier .keystore et le fichier .jks

227

J'ai essayé de trouver la différence entre les .keystorefichiers et les .jksfichiers, mais je n'ai pas pu la trouver. Je sais que jksc'est pour le "magasin de clés Java" et les deux sont un moyen de stocker des paires clé / valeur.

Y a-t-il une différence ou une préférence pour les utiliser les uns par rapport aux autres?

juveria
la source

Réponses:

197

En fin de compte, .keystoreet ne .jkssont que des extensions de fichiers: c'est à vous de nommer vos fichiers de manière judicieuse. Certaines applications utilisent un fichier de clés stocké dans $HOME/.keystore: il est généralement implicite qu'il s'agit d'un fichier JKS, car JKS est le type de fichier de clés par défaut dans le fournisseur de sécurité Java Sun / Oracle . Tout le monde n'utilise pas l' .jksextension pour les fichiers JKS, car elle est implicite comme valeur par défaut. Je recommanderais d'utiliser l'extension, juste pour me souvenir du type à spécifier (si vous en avez besoin).

En Java, le mot keystore peut avoir l'une des significations suivantes, selon le contexte:

Quand on parle du fichier et du stockage, ce n'est pas vraiment une facilité de stockage pour les paires clé / valeur (il y en a beaucoup ou d'autres formats pour cela). Il s'agit plutôt d'un conteneur pour stocker les clés cryptographiques et les certificats (je pense que certains d'entre eux peuvent également stocker des mots de passe). Généralement, ces fichiers sont cryptés et protégés par mot de passe afin de ne pas laisser ces données disponibles à des tiers non autorisés.

Java utilise sa KeyStoreclasse et l'API associée pour utiliser un fichier de clés ( qu'il soit basé sur un fichier ou non ). JKSest un format de fichier spécifique à Java, mais l'API peut également être utilisée avec d'autres types de fichiers, généralement PKCS # 12. Lorsque vous souhaitez charger un magasin de clés, vous devez spécifier son type de magasin de clés. Les extensions conventionnelles seraient:

  • .jkspour le type "JKS",
  • .p12ou .pfxpour type "PKCS12"(le nom de la spécification est PKCS # 12, mais #n'est pas utilisé dans le nom du type de fichier de clés Java).

En outre, BouncyCastle fournit également ses implémentations, en particulier BKS (généralement en utilisant l' .bksextension), qui est fréquemment utilisé pour les applications Android.

Bruno
la source
Je peux confirmer que le changement de l'extension de .jks en .keystore fonctionnera. Veuillez sauvegarder avant de le faire !!
BMaximus
77

Vous êtes confus là-dessus.

A keystoreest un conteneur de certificats, de clés privées, etc.

Il existe des spécifications de ce qui devrait être le format de ce magasin de clés et le prédominant est le # PKCS12

JKS est l'implémentation du magasin de clés de Java. Il y a aussi BKS etc.

Ce sont tous des types de fichier de clés .

Donc, pour répondre à votre question:

différence entre les fichiers .keystore et les fichiers .jks

Il n'y en a pas. JKS sont des fichiers de clés. Il existe cependant une différence entre les types de fichier de clés . Par exemple JKSvs#PKCS12

Cratylus
la source
2
Je dirais que le type de magasin de clés prédominant est JKS, pas PKCS # 12, uniquement parce que le mot "magasin de clés" fait partie de la terminologie Java, mais rarement utilisé en dehors du contexte de Java. Cela étant dit, les fichiers PKCS # 12 sont assez courants (généralement .pfxou .p12).
Bruno
@Bruno: Vous voulez dire le type prédominant dans les applications Java.
Cratylus
10
Non, je veux dire que le mot "keystore" est principalement un mot Java. D'autres applications / plates-formes appellent rarement le lieu / fichier où les clés et les certificats stockent un "keystore". MS appelle par exemple les fichiers PKCS # 12 "Personal Information Exchange". D'autres ont des noms comme "porte-clés" (OSX), "base de données de certificats" (NSS), "magasin de certificats", "porte-clés", ..., pour les endroits où ils stockent des clés et des certificats, pas vraiment "magasin de clés".
Bruno
3
@Bruno: Je vois ce que tu veux dire. Bon point. Je n'avais pas pensé à ça comme ça auparavant.
Cratylus
3

L'une des raisons de choisir .keystore plutôt que .jks est que Unity reconnaît le premier mais pas le dernier lorsque vous naviguez pour sélectionner votre fichier de clés (Unity 2017.3, macOS).

AbePralle
la source