En examinant le fichier Java.security
de mon JRE
, je constate que le type de magasin de clés à utiliser par défaut est défini sur JKS
. Ici , il existe une liste des types de magasin de clés pouvant être utilisés.
Existe-t-il un type de magasin de clés recommandé? Quels sont les avantages/inconvénients des différents types de magasin de clés?
Il existe un peu plus de types que ceux énumérés dans la liste de noms standard à laquelle vous êtes lié. Vous pouvez trouver plus d'informations dans le documentation des fournisseurs cryptographiques . Les plus courants sont certainement JKS
(valeur par défaut) et PKCS12
(pour les fichiers PKCS # 12, souvent avec l'extension .p12
ou parfois .pfx
).
JKS est la plus courante si vous restez dans le monde Java. PKCS # 12 n’est pas spécifique à Java, il est particulièrement pratique d’utiliser des certificats (avec clés privées) sauvegardés à partir d’un navigateur ou issus d’outils basés sur OpenSSL (keytool
n’a pas été en mesure de convertir un fichier de clés et de l’importer. clés privées avant Java 6, vous deviez donc utiliser d’autres outils).
Si vous avez déjà un fichier PKCS # 12, il est souvent plus facile d'utiliser directement le type PKCS12
. Il est possible de convertir des formats, mais il est rarement nécessaire de choisir directement le type de magasin de clés.
Dans Java 7, PKCS12
était principalement utile en tant que magasin de clés mais moins pour un truststore (voir le différence entre un magasin de clés et un magasin de clés certifiées ), car vous ne pouviez pas stocker les entrées de certificat sans clé privée. En revanche, JKS
ne requiert pas que chaque entrée soit une entrée de clé privée. Vous pouvez donc avoir des entrées contenant uniquement des certificats, ce qui est utile pour les magasins de clés de confiance, où vous stockez la liste des certificats en lesquels vous avez confiance (mais vous ne pas avoir la clé privée pour eux).
Cela a changé dans Java 8, vous pouvez donc également avoir des entrées avec certificat uniquement dans les magasins PKCS12
. (Vous trouverez plus de détails sur ces modifications et des plans supplémentaires dans JEP 229: Créer des magasins de clés PKCS12 par défaut .)
Il existe quelques autres types de magasin de clés, peut-être moins fréquemment utilisés (en fonction du contexte), notamment:
PKCS11
, pour les bibliothèques PKCS # 11, généralement pour accéder à des jetons de chiffrement matériels, mais l'implémentation du fournisseur Sun prend également en charge les magasins NSS (de Mozilla).BKS
, en utilisant le fournisseur BouncyCastle (couramment utilisé pour Android).Windows-MY
/Windows-ROOT
, si vous souhaitez accéder directement au magasin de certificats Windows.KeychainStore
, si vous souhaitez utiliser directement le trousseau OSX.Voici un article qui présente différents types de magasin de clés dans Java et les différences entre différents types de magasin de clés. http://www.pixelstech.net/article/1408345768-Different-types-of-keystore-in-Java----Overview
Vous trouverez ci-dessous la description des différents magasins de clés du poste:
JKS, Java Magasin de clés. Vous pouvez trouver ce fichier sur Sun.security.provider.JavaKeyStore. Ce magasin de clés est spécifique à Java, il porte généralement l'extension jks. Ce type de magasin de clés peut contenir des clés privées et des certificats, mais il ne peut pas être utilisé pour stocker des clés secrètes. Comme il s'agit d'un fichier de clés spécifique à Java, il ne peut donc pas être utilisé dans d'autres langages de programmation.
JCEKS, magasin de clés JCE. Vous pouvez trouver ce fichier à l'adresse com.Sun.crypto.provider.JceKeyStore. Ce magasin de clés a une extension de jceks. Les entrées pouvant être placées dans le magasin de clés JCEKS sont les clés privées, les clés secrètes et les certificats.
PKCS12, il s'agit d'un type de fichier de clés standard pouvant être utilisé dans Java et d'autres langages. Vous pouvez trouver cette implémentation du fichier de clés à l'adresse Sun.security.pkcs12.PKCS12KeyStore. Il a généralement une extension de p12 ou pfx. Vous pouvez stocker des clés privées, des clés secrètes et des certificats sur ce type.
PKCS11, il s'agit d'un type de magasin de clés matériel. Il sert une interface à la bibliothèque Java pour se connecter à des périphériques de magasin de clés tels que Luna, nCipher. Vous pouvez trouver cette implémentation sur Sun.security.pkcs11.P11KeyStore. Lorsque vous chargez le magasin de clés, vous n'avez pas besoin de créer un fournisseur spécifique avec une configuration spécifique. Ce magasin de clés peut stocker des clés privées, des clés secrètes et des certificats. Lors du chargement du fichier de clés, les entrées sont extraites du fichier de clés, puis converties en entrées logicielles.