Qu'est-ce que le format de fichier JKS ?
Un fichier .jks est un Java KeyStore - un conteneur binaire propriétaire qui stocke des clés privées cryptographiques et des certificats X.509 destinés à être utilisés par des applications Java. Le format a été introduit par Sun Microsystems dans le cadre de la Java Cryptography Architecture (JCA) à la fin des années 1990 et est maintenu aujourd'hui par Oracle.
Chaque fichier .jks commence par le nombre magique de 4 octets 0xFEEDFEED, suivi d'un champ de version (généralement 0x00000002). Le fichier est en big-endian et contient deux types d'entrées : les enregistrements KeyEntry, contenant une clé privée chiffrée ainsi que sa chaîne de certificats, et les enregistrements TrustedCertEntry, qui stockent des certificats sans chiffrement. Un condensé SHA-1 avec clé à la fin protège l'intégrité - un mauvais mot de passe ou toute altération déclenche l'erreur familière « *keystore was tampered with, or password was incorrect* ».
Les clés privées sont protégées par un schéma de chiffrement basé sur un mot de passe (PBE) propriétaire s'appuyant sur SHA-1, ce qui est considéré comme faible selon les normes modernes. Le format .jks est spécifique à Java et n'est pas lisible par des outils tels qu'OpenSSL, qui attendent du PKCS#12 ou du PEM à la place.
Depuis le JDK 9 (2017), Oracle a déprécié le .jks au profit du .p12 / .pfx, qui est devenu le nouveau type de keystore par défaut. keytool émet désormais un avertissement de migration sur chaque magasin JKS qu'il ouvre. Le magasin de confiance système du JDK, cacerts, a historiquement été distribué sous forme de fichier .jks. La variante associée .jceks (magique 0xCECECECE) offre une protection de clé Triple-DES plus forte mais reste tout aussi spécifique à Java.
Sécurité et sûreté
RISQUE : MEDIUMUn fichier JKS contient des données inertes (pas de code exécutable), mais c'est un magasin de SECRETS : il contient couramment des clés privées dont l'exposition compromet l'identité d'un serveur ou la clé de signature d'une application. Traitez-le comme un fichier de mots de passe - ne le soumettez jamais à un dépôt public, limitez les permissions du fichier et utilisez un mot de passe de magasin robuste. Le chiffrement du format est faible selon les normes modernes, donc un .jks fuité avec un mauvais mot de passe peut être forcé ; c'est une raison supplémentaire de migrer vers PKCS#12 et de renouveler les clés si un keystore est exposé. Les fichiers prétendant être des keystores provenant de sources non fiables ne doivent pas être intégrés à votre magasin de confiance.
Détails du format
en bref- Sauvegarde de jeu Star Wars Jedi Knight - Certains titres Star Wars Jedi Knight de LucasArts/Raven utilisaient .jks pour les sauvegardes de jeux ; chargés à l'intérieur du jeu, sans rapport avec les keystores Java.
Programmes qui ouvrent les fichiers JKS
keytool. keytool. keytool. keytool. Détails techniques
spécifications approfondies| Octets magiques | 0xFEEDFEED (FE ED FE ED) à l'offset 0 du fichier ; identifie le fichier comme JKS pour les outils et validateurs |
| Champ de version du format | Entier big-endian de 4 octets à l'offset 4 ; valeur 1 ou 2 (la version 2 est l'actuelle) |
| Ordre des octets | Big-endian dans toute la structure binaire |
| Chiffrement de clé privée | Schéma PBE propriétaire utilisant SHA-1 comme primitive de dérivation de clé ; considéré comme cryptographiquement faible selon les normes modernes |
| Stockage de certificats | Les enregistrements TrustedCertEntry contiennent des certificats X.509 encodés en DER en texte clair - pas de chiffrement par certificat |
| Protection de l'intégrité | Condensé SHA-1 avec clé sur tout le contenu du magasin, dérivé du mot de passe du magasin ; détecte à la fois l'altération et un mauvais mot de passe |
| Types d'entrées | Deux types : KeyEntry (clé privée chiffrée + chaîne de certificats) et TrustedCertEntry (certificat seul) |
| Adressage des entrées | Chaque entrée est identifiée par un alias de chaîne unique ; les alias sont insensibles à la casse au sein d'un magasin |
| Type MIME | application/x-java-keystore (spécifique à Java) ; se replie sur application/octet-stream pour une gestion générique |
| Taille de fichier typique | 1 Ko - 50 Ko pour quelques clés et certificats ; jusqu'à plusieurs Mo pour les grands magasins de confiance comme cacerts |
| Outil de gestion principal | Utilitaire en ligne de commande keytool du JDK ; l'alternative graphique est KeyStore Explorer |
| Portée de la plateforme | Portable sur n'importe quel OS avec un JRE ou JDK, mais le format est spécifique à Java et non interopérable avec OpenSSL ou d'autres outils PKI non-Java |
| Statut de dépréciation | Déprécié par Oracle depuis le JDK 9 (2017) ; PKCS#12 est désormais le type de keystore par défaut et keytool avertit à chaque ouverture de magasin JKS |
| Variante Sun plus forte | JCEKS (magique 0xCECECECE) - une extension Sun avec enveloppement de clé Triple-DES ; toujours limité à Java |
| Magasin de confiance système | Le fichier cacerts du JDK fourni avec chaque JRE a historiquement été un keystore JKS contenant des centaines de certificats d'autorités de certification racines |
| Publié | 1990s, with the Java security architecture (Java Cryptography Architecture) |
| Dernière version | JKS format unchanged; deprecated in favor of PKCS#12 (default keystore type since JDK 9, 2017) |
| Spécification | docs.oracle.com |
Conversions JKS
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers JKS.
Foire aux questions
Qu'est-ce qu'un fichier .jks ?
keytool du JDK, et non ouvert comme un document classique.Comment ouvrir un fichier JKS ?
keytool du JDK en ligne de commande (« keytool -list -v -keystore fichier.jks ») ou une interface graphique gratuite comme KeyStore Explorer. Vous devez connaître le mot de passe du keystore - il n'y a aucun moyen de lire les clés sans celui-ci.Comment convertir un JKS en PKCS12 (.p12/.pfx) ?
Pourquoi keytool indique-t-il « keystore was tampered with, or password was incorrect » ?
Le format JKS est-il obsolète ?
keytool utilise par défaut PKCS#12 et avertit que le JKS utilise un format propriétaire plus faible. Les fichiers JKS existants fonctionnent toujours, mais les nouveaux magasins et les migrations devraient utiliser PKCS#12.