Découverte de Keytool : Gestion des Clés et Certificats
Keytool est un outil en ligne de commande conçu pour la gestion et le stockage de clés cryptographiques et de certificats numériques.
Si l’environnement Java est installé sur votre machine, l’utilitaire keytool vous offre la possibilité d’importer des certificats d’autorité de certification (CA), de consulter la liste des certificats existants, de générer des certificats auto-signés, de sauvegarder des mots de passe et des clés publiques/privées, et bien d’autres opérations.
Ce concept vous semble complexe ? Pas d’inquiétude, nous allons décortiquer cela ensemble de manière simple et progressive.
Notez que les exemples et les explications fournis ici sont basés sur un environnement Linux, mais les commandes Keytool sont également compatibles avec Windows et macOS.
Qu’est-ce qu’une commande Keytool ?
Keytool est avant tout un gestionnaire de clés et de certificats. Il permet de manipuler les paires de clés privées/publiques, souvent utilisées pour valider et authentifier l’accès à divers services.
Comme son nom le suggère, cet outil est principalement utilisé par les administrateurs de systèmes et les développeurs.
Cependant, un utilisateur lambda peut également exploiter keytool pour stocker des phrases secrètes et des clés pour l’authentification, le chiffrement ou le déchiffrement. N’hésitez pas à expérimenter avec cet outil si vous êtes curieux !
Si les clés cryptographiques vous sont encore étrangères, il serait judicieux de consulter un article sur le chiffrement de données avant de vous plonger dans les commandes Keytool.
De même, se familiariser avec les commandes OpenSSL pourrait vous aider à comprendre les différences et les cas d’usage de ces deux outils.
Création d’un certificat auto-signé
keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>
Contrairement aux certificats SSL commerciaux, un certificat auto-signé sert principalement au développement et aux tests, pour établir une connexion sécurisée dans un environnement non-production.
Vous pouvez en générer un en utilisant la syntaxe de commande keytool ci-dessus. Voici un exemple concret :
keytool -genkeypair -alias mondomaine.fr -keypass motdepassecle -validity 365 -storepass motdepassecle
L’alias peut être librement choisi; ici, ‘mondomaine.fr’ est un exemple. Ajustez la validité et le mot de passe du keystore en remplaçant « motdepassecle » par votre valeur.
Notez que les Keystores de type PKCS12 ne supportent qu’un seul mot de passe. Il s’agit d’un format de stockage de clés polyvalent, indépendant de Java.
Si vous avez besoin de mots de passe distincts pour votre Keystore et votre certificat, vous devrez configurer keytool pour utiliser une interface alternative.
La documentation officielle de keytool contient plus de détails sur ce sujet.
Une fois la création lancée, keytool vous demandera des informations supplémentaires pour l’authentification, comme ceci :
Quel est votre prénom et nom? [Inconnu]: VotreNom Quel est le nom de votre unité organisationnelle? [Inconnu]: VotreUnite Quel est le nom de votre organisation? [Inconnu]: VotreOrganisation Quel est le nom de votre ville ou localité? [Inconnu]: VotreVille Quel est le nom de votre état ou province? [Inconnu]: VotreEtat Quel est le code pays à deux lettres pour cette unité? [Inconnu]: FR CN=VotreNom, OU=VotreUnite, O=VotreOrganisation, L=VotreVille, ST=VotreEtat, C=FR est-il correct? [non]: oui
Création d’un magasin de clés Java et d’une paire de clés
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore monkeystore.jks -alias monaliasjava -validity 3650
Créer un Keystore Java et y importer un certificat
Assurez-vous d’avoir un certificat valide (ou d’en avoir généré un précédemment). Une fois cette étape validée, vous pouvez l’importer et générer votre Keystore Java.
keytool -importcert -file moncertificat.crt -keystore monmagasindeconfiance.jks -alias mondomaine.fr
Générer une paire de clés dans le magasin de clés par défaut avec un sujet
Vous pouvez rapidement créer une paire de clés (par exemple nommée « ca ») en utilisant cette commande :
keytool -alias ca -dname CN=CA -genkeypair
Création d’une chaîne de certificats signés
Supposons que vous ayez généré deux paires de clés, « ca » et « ca1 ». Pour créer une chaîne où « ca » signe « ca1 », utilisez les commandes suivantes :
keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert
Vous pouvez compléter la chaîne avec deux autres paires, « ca1 » et « ca2 », où « ca1 » signera « ca2 ».
Importation d’un certificat existant
Si vous souhaitez importer un certificat à partir d’un fichier, voici comment procéder :
keytool -import -alias mondomaine.fr -file moncertificatserveur.cer
Créer une requête de signature de certificat (CSR) pour un Keystore existant
Si vous avez déjà un Keystore, vous pouvez générer un CSR.
keytool -certreq -keyalg rsa -keystore monkeystore.jks -alias serveur -file mondomaine.fr.csr
Affichage des certificats stockés dans un Keystore Java
Un Keystore peut contenir plusieurs certificats. Pour consulter la liste des certificats d’une base de données, disons « monkeystore.jks », entrez la commande suivante :
keytool -v -list -keystore monkeystore.jks
La sortie ressemblera à ceci :
keytool -v -list -keystore monkeystore.jks Saisissez le mot de passe du magasin de clés : Type de magasin de clés : PKCS12 Fournisseur de magasin de clés : SUN Votre magasin de clés contient 2 entrées Nom de l'alias : monaliascertif Date de création : 16-nov.-2022 Type d'entrée : PrivateKeyEntry Longueur de la chaîne de certificats : 1 Certificat[1] : Propriétaire : CN=VotreNom, OU=VotreDepartement, O=VotreEntreprise, L=VotreVille, ST=VotreRegion, C=FR Émetteur : CN=VotreNom, OU=VotreDepartement, O=VotreEntreprise, L=VotreVille, ST=VotreRegion, C=FR Numéro de série : a0b9a99 Valide du : mer. 16 nov. 09:42:37 CET 2022 au : sam. 13 nov. 09:42:37 CET 2032 Empreintes digitales du certificat : SHA1 : 23:7C:65:A7:A6:84:18:F8:45:04:92:DF:D4:BB:0F:91:6D:A5:C5:BE SHA256 : C0:25:ED:B8:CF:1A:E6:E1:C5:75:A8:10:8F:CD:BE:42:26:96:9C:9A:FA:74:65:07:71:06:9A:2C:F5:80:FE:7F Nom de l'algorithme de signature : SHA256withRSA Algorithme de la clé publique du sujet : clé RSA 2048 bits Version : 3
Vérification du contenu d’un certificat
Avec un certificat existant, vous pouvez obtenir des détails en utilisant la commande suivante :
keytool -v -printcert -file moncertificat.crt
Affichage de tous les certificats d’un Keystore Java
Pour lister tous les certificats dans une base de données Keystore, utilisez la commande :
keytool -v -list -keystore monkeystore.jks
Afficher un Keystore en utilisant un alias
Pour vérifier un Keystore en utilisant l’alias que vous avez défini lors de sa création, entrez la commande ci-dessous :
keytool -v -list -keystore monkeystore.jks -alias monaliaserveur
Lister les certificats dans un KeyStore
Pour consulter les certificats stockés dans le Keystore par défaut, utilisez cette commande :
keytool -list -storepass votremotdepasse
Remplacez « votremotdepasse » par le mot de passe que vous avez défini.
Affichage des détails d’un certificat
Pour vérifier les détails d’un seul certificat, vous pouvez utiliser son alias sans spécifier la base de données Keystore.
Voici comment faire :
keytool -list -v -alias mondomaine.fr -storepass votremotdepasse
Affichage d’un certificat au format PEM
PEM est un format courant pour les certificats et les clés. Pour vérifier un certificat au format PEM, utilisez la commande :
keytool -v -printcert -file mondomaine.fr.crt -rfc
Modification d’un mot de passe Java Keystore
Si vous avez déjà créé un mot de passe pour votre Keystore, vous pouvez le modifier en utilisant :
keytool -delete -alias mondomaine.fr -keystore monkeystore.jks
Supprimer un certificat d’un Java Keystore
Pour supprimer un certificat, spécifiez son Keystore et son alias. Par exemple :
keytool -delete -alias mondomaine.fr -keystore monkeystore.jks
Exploration de la commande et obtention d’aide
La commande Keytool offre de nombreux arguments et options pour réaliser diverses opérations. Selon votre cas d’utilisation, vous n’aurez peut-être pas besoin de toutes les options.
Pour explorer davantage les options de la commande, tapez :
keytool -help
Si vous utilisez un terminal Linux, je vous recommande également de consulter la page de manuel (man) avec la commande suivante :
man keytool
La commande ‘man’ vous donnera une description détaillée de toutes les fonctionnalités de Keytool.
Développez vos connaissances et tirez le meilleur parti de cet outil !
En résumé
Le chemin des fichiers et certaines options de personnalisation peuvent légèrement varier selon votre système d’exploitation. Vous pouvez également consulter la documentation officielle d’Oracle pour obtenir des informations complètes et standardisées.
Keytool est un outil puissant pour de nombreuses tâches. N’hésitez pas à l’explorer et découvrez tout ce qu’il peut faire !
Vous pouvez également explorer d’autres commandes Linux pour optimiser la gestion de vos systèmes.