Keytool est un utilitaire de ligne de commande qui vous permet de gérer/stocker des clés et des certificats cryptographiques.
Si Java est installé sur votre système, vous pouvez utiliser la commande keytool pour importer un certificat d’autorité de certification, dresser la liste des certificats, créer des certificats auto-signés, stocker des phrases de passe et des clés publiques/privées, et faire bien d’autres choses encore.
Vous êtes perplexe ? Ne vous inquiétez pas, je vous expliquerai cela en termes plus simples au fur et à mesure de votre lecture.
Notez que j’utilise Linux pour tester les commandes et vous expliquer un peu plus à l’aide d’exemples.
Vous pouvez également utiliser les commandes du Keytool sous Windows et macOS.
Qu’est-ce qu’une commande Keytool ?
Il s’agit d’un utilitaire de gestion de clés et de certificats. Il vous permet de stocker des paires de clés privées/publiques, qui servent généralement à vérifier/authentifier l’accès à des services.
Au vu du titre de cet article, on peut supposer que cette commande est principalement utilisée par les administrateurs système et les développeurs.
Dans l’ensemble, oui, mais un utilisateur peut faire preuve de créativité avec la commande keytool pour stocker des phrases de passe et des clés secrètes à des fins d’authentification, de cryptage et de décryptage. Par conséquent, si vous êtes curieux, vous devriez l’essayer sur votre système.
Si le concept de clés cryptographiques vous est inconnu, vous pouvez consulter notre article sur le chiffrement des données avant d’essayer les commandes keytool.
En outre, les exemples de commandes OpenSSL peuvent également vous donner une idée des différences entre les commandes et de ce que vous pouvez faire avec chacune d’entre elles.
Créer un certificat auto-signé
keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>
Contrairement à un certificat SSL que vous achetez, un certificat auto-signé n’est utilisé qu’à des fins de développement/test pour utiliser une connexion sécurisée.
Vous pouvez en générer un à l’aide de la syntaxe de la commande keytool mentionnée ci-dessus. Par exemple, voici à quoi cela ressemble :
keytool -genkeypair -alias geekflare -keypass passforkeystore -validité 365 -storepass passforkeystore
Vous pouvez utiliser n’importe quel nom pour l’alias ; j’utilise geekflare comme texte de remplacement. Vous pouvez personnaliser la validité et spécifier un mot de passe pour le Keystore en remplaçant“passforkeystore” dans la commande ci-dessus.
Notez qu’un seul mot de passe est pris en charge pour les KeyStores PKCS12. Cependant, il s’agit d’un type de magasin de clés pratique qui n’est pas spécifique à Java.
Si vous avez besoin de deux mots de passe différents pour votre Keystore et le certificat, vous pouvez demander explicitement à la commande keytool d’utiliser une autre interface.
Vous pouvez en savoir plus à ce sujet dans sa documentation officielle.
Une fois que vous aurez procédé à la création, la commande vous demandera des détails supplémentaires pour l’authentification. Voici à quoi cela devrait ressembler :
Quels sont vos nom et prénom ?
[Inconnu] : Ankush
Quel est le nom de votre unité organisationnelle ?
[Inconnu] : Geekflare
Quel est le nom de votre organisation ?
[Inconnu] : Geekflare
Quel est le nom de votre ville ou localité ?
[Inconnu] : Bhubaneswar
Quel est le nom de votre État ou province ?
[Inconnu] : Odisha
Quel est le code pays à deux lettres de cette unité ?
[Inconnu] : 91
CN=Ankush, OU=Geekflare, O=Geekflare, L=Bhubaneswar, ST=Odisha, C=91 est-il correct ?
[non] : oui
Créez un magasin de clés Java et une paire de clés
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Générer un keystore Java et importer un certificat
Assurez-vous d’avoir un certificat valide ou d’en avoir généré un auparavant ; une fois que c’est fait, vous pouvez l’importer et générer un trousseau de clés Java.
keytool -importcert -file test.crt -keystore truststore.jks -alias geekflare
Générer une paire de clés vers la Keystore par défaut avec Subject
Vous pouvez rapidement générer une paire de clés (par exemple avec le nom “ca”) à l’aide de la commande suivante :
keytool -alias ca -dname CN=CA -genkeypair
Créer une chaîne de certificats signés
Supposons que vous ayez créé les paires de clés ca et ca1. Vous pouvez créer une chaîne de certificats signés dans laquelle ca signera ca1 à l’aide des 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 de clés ca1 et ca2, où ca1 signera ca2.
Importation d’un certificat
Si vous souhaitez importer un certificat à partir d’un fichier disponible, voici ce que vous pouvez faire :
keystool -import -alias geekflare -file geekflareserver.cer
Créer une demande de signature de certificat (CSR) pour le Keystore existant
Etant donné que vous avez déjà créé un Keystore, vous pouvez générer une CSR.
keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file geekflare.csr
Liste des certificats stockés dans le keystore Java
Un keystore peut contenir plusieurs entrées de certificats. En supposant que nous vérifions la liste des certificats dans la base de données“keystore.jks“, voici ce qu’il faut taper :
keytool -v -list -keystore keystore.jks
La sortie de cette commande ressemblera à ceci :
keytool -v -list -keystore keystore.jks
Saisissez le mot de passe du keystore :
Type de keystore : PKCS12
Fournisseur de la base de données : SUN
Votre keystore contient 2 entrées
Nom d'alias : geekflarecert
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=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
Émetteur : CN=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
Numéro de série : a0b9a99
Valable du : Wed Nov 16 09:42:37 IST 2022 au : Sat Nov 13 09:42:37 IST 2032
Empreintes 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érifier le contenu d’un seul certificat
Si vous disposez déjà d’un certificat généré, vous pouvez en vérifier le contenu en procédant comme suit :
keytool -v -printcert -file server.crt
Visualiser les certificats d’une Keystore Java
Vous pouvez dresser la liste de tous les certificats d’une base de données Keystore. Voici à quoi ressemble la commande :
keytool -v -list -keystore keystore.jks
Visualisation du dépôt de clés à l’aide d’un alias et d’un dépôt de clés
Si vous souhaitez consulter un dépôt de clés à l’aide de l’alias que vous avez défini lors de sa création, saisissez la commande suivante :
keytool -v -list -keystore keystore.jks -alias geekflareserver
Liste des certificats dans le keystore
Si vous souhaitez vérifier les certificats stockés dans le magasin de clés par défaut, utilisez la commande suivante : keytool -list -storepass.jks -alias geekflareserver
keytool -list -storepass passforkeystore
Vous devez remplacer“passforkeystore” par le mot de passe que vous avez défini.
Afficher les informations relatives au certificat
Si vous avez besoin de vérifier les détails d’un seul certificat, vous pouvez utiliser son alias sans spécifier la base de données Keystone.
Voici à quoi cela ressemble :
keytool -list -v -alias geekflare -storepass passforkeystore
Afficher un certificat au format PEM
Le format PEM est l’un des formats les plus courants pour les certificats et les clés cryptographiques. Si vous souhaitez vérifier un certificat au format PEM, tapez ce qui suit :
keytool -v -printcert -file geekflare.crt -rfc
Modifier le mot de passe d’un keystore Java
Si vous avez déjà créé un mot de passe pour le magasin de clés Java, vous pouvez le modifier à l’aide de la commande suivante :
keytool -delete -alias geekflare -keystore keystore.jks
Supprimer un certificat du Keystore Java
Vous pouvez spécifier le Java Keystore et son alias pour le supprimer. Par exemple :
keytool -delete -alias geekflare -keystore keystore.jks
Explorez la commande et obtenez de l’aide
La commande dispose de plusieurs arguments et extensions permettant de réaliser de nombreuses opérations. En fonction de votre cas d’utilisation, vous n’aurez pas forcément besoin de tous les utiliser.
Donc, si vous voulez plonger dans les options de la commande, vous pouvez toujours taper :
keytool -help
Dans tous les cas, si vous utilisez un terminal Linux, je vous recommande de lire la page man (manuel) de cette commande :
man keytool
Avec la commande man, vous pouvez obtenir tous les détails dont vous avez besoin à propos de la commande keytool.
Alors, faites en sorte d’apprendre tout ce que vous pouvez à ce sujet !
Récapitulation
Le chemin d’accès aux fichiers et aux autres options de personnalisation peut être légèrement différent selon la plate-forme que vous utilisez. Vous pouvez également vous référer à la documentation d’Oracle pour les options standardisées.
Keytool est un excellent outil pour toute une série de tâches. Testez-le et voyez ce que vous pouvez faire avec !
Vous pouvez également explorer certaines commandes Linux pour assurer la maintenance et le fonctionnement optimal des systèmes.