Keytool est un utilitaire de ligne de commande qui vous permet de gérer/stocker des clés cryptographiques et des certificats.
Si Java est installé sur votre système, vous pouvez utiliser la commande keytool pour importer un certificat CA, répertorier les certificats, créer des certificats auto-signés, stocker des phrases secrètes et des clés publiques/privées, et bien d'autres choses encore.
Confus? Ne vous inquiétez pas ; Je vais l'expliquer en termes plus simples au fur et à mesure de votre lecture.
Notez que j'utilise Linux pour tester les commandes et vous en expliquer un peu plus avec des exemples.
Vous pouvez également utiliser les commandes 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 aux services.
Compte tenu du titre de cet article, on peut supposer que la commande est principalement utilisée par les administrateurs système et les développeurs.
Pour la plupart, oui, mais un utilisateur peut faire preuve de créativité avec la commande keytool pour stocker des phrases secrètes et des clés secrètes à des fins d'authentification, de chiffrement et de déchiffrement. Donc, si vous êtes curieux, vous devriez l'essayer sur votre système.
Si vous êtes nouveau dans le concept des clés cryptographiques, vous voudrez peut-être consulter notre article sur cryptage des données avant d'essayer les commandes keytool.
De plus, vérifier le Exemples de commandes OpenSSL peut également vous donner une idée de la façon dont il est différent et de ce que vous pouvez faire avec l'un d'eux.
Create a Self-Signed Certificate
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 en utilisant la syntaxe de commande keytool mentionnée ci-dessus. Par exemple, voici à quoi cela ressemble :
keytool -genkeypair -alias geekflare -keypass passforkeystore -validity 365 -storepass passforkeystore
Vous pouvez utiliser n'importe quel nom pour l'alias ; J'utilise geekflare comme texte d'espace réservé. 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 que seulement un 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 indiquer explicitement à la commande keytool d'utiliser une autre interface.
Vous pouvez en savoir plus à ce sujet dans son documentation officielle.
Une fois que vous avez procédé à la création, il vous demandera des détails supplémentaires pour l'authenticité. Voici à quoi cela devrait ressembler :
What is your first and last name?
[Unknown]: Ankush
What is the name of your organizational unit?
[Unknown]: Geekflare
What is the name of your organization?
[Unknown]: Geekflare
What is the name of your City or Locality?
[Unknown]: Bhubaneswar
What is the name of your State or Province?
[Unknown]: Odisha
What is the two-letter country code for this unit?
[Unknown]: 91
Is CN=Ankush, OU=Geekflare, O=Geekflare, L=Bhubaneswar, ST=Odisha, C=91 correct?
[no]: yes
Create a Java Keystore and Key Pair
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias geekflarejava -validity 3650
Generate a Java Keystore and Import a certificate
Assurez-vous d'avoir un certificat valide ou d'en avoir généré un plus tôt ; une fois cela fait, vous pouvez l'importer et générer un Java Keystore.
keytool -importcert -file test.crt -keystore truststore.jks -alias geekflare
Generate a Key Pair to the Default Keystore With Subject
Vous pouvez rapidement générer une paire de clés (disons avec le nom "ca") en utilisant la commande suivante :
keytool -alias ca -dname CN=CA -genkeypair
Create a Chain of Signed Certificates
Supposons que vous ayez créé des paires de clés ca et ca1. Vous pouvez créer une chaîne de certificats signés où ca signera ca1 avec 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 de clés ca1 et ca2, où ca1 signera ca2.
Importing a Certificate
Si vous souhaitez importer un certificat à partir d'un fichier disponible, voici ce que vous pouvez faire :
keystool -import -alias geekflare -file geekflareserver.cer
Create a Certificate Signing Request (CSR) for the existing Keystore
Considérant que vous avez déjà créé un Keystore, vous pouvez générer un CSR.
keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file geekflare.csr
List Certificates Stored in Java Keystore
Un magasin de clés peut avoir plusieurs entrées de certificats. En supposant que nous vérifions la liste des certificats dans "keystore.jks” base de données, voici ce que nous devons saisir :
keytool -v -list -keystore keystore.jks
La sortie pour cela ressemblera à ceci :
keytool -v -list -keystore keystore.jks
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 2 entries
Alias name: geekflarecert
Creation date: 16-Nov-2022
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
Issuer: CN=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
Serial number: a0b9a99
Valid from: Wed Nov 16 09:42:37 IST 2022 until: Sat Nov 13 09:42:37 IST 2032
Certificate fingerprints:
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
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
Check the Contents of a Single Certificate
Considérant que vous avez déjà un certificat généré, vous pouvez en savoir plus à ce sujet en utilisant ce qui suit :
keytool -v -printcert -file server.crt
View Certificates in a Java Keystore
Vous pouvez répertorier tous les certificats d'une base de données Keystore. Voici à quoi ressemble la commande :
keytool -v -list -keystore keystore.jks
View Keystore Using an Alias and Keystore
Si vous souhaitez vérifier un Keystore à l'aide de son nom d'alias que vous avez défini lors de sa création, saisissez ce qui suit :
keytool -v -list -keystore keystore.jks -alias geekflareserver
List Certificates in KeyStore
Si vous souhaitez vérifier les certificats stockés dans le Keystore par défaut, utilisez la commande :
keytool -list -storepass passforkeystore
Vous devez remplacer "passforkeystore” avec le mot de passe que vous avez défini.
View Certificate Information
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 ça ressemble:
keytool -list -v -alias geekflare -storepass passforkeystore
View Certificate in PEM 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 avec PEM, saisissez ce qui suit :
keytool -v -printcert -file geekflare.crt -rfc
Change a Java Keystore Password
Si vous avez déjà créé un mot de passe pour le Java Keystore, vous pouvez modifier le mot de passe à l'aide de la commande :
keytool -delete -alias geekflare -keystore keystore.jks
Delete a Certificate from Java Keystore
Vous pouvez spécifier le Java Keystore et son alias pour le supprimer. Par exemple:
keytool -delete -alias geekflare -keystore keystore.jks
Explore The Command and Get Help
La commande a plusieurs arguments et extensions pour faire beaucoup de choses. Selon votre cas d'utilisation, vous pouvez ou non avoir besoin de tous les utiliser.
Ainsi, si vous souhaitez approfondir les options de commande, vous pouvez toujours saisir :
keytool -help
Dans les deux cas, si vous utilisez un terminal Linux, je vous recommande de lire la page man (manuel) avec cette commande :
man keytool
Avec la commande man, vous pouvez obtenir tous les détails dont vous avez besoin sur la commande keytool.
Alors, gardez votre super pouvoir pour apprendre tout ce que vous pouvez à ce sujet !
Récapitulation
Le chemin des fichiers et d'autres options de personnalisation peut être légèrement différent de 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 une gamme de tâches. Testez-le et voyez ce que vous pouvez en faire !
Vous pouvez également explorer certains Commandes Linux pour entretenir et faire fonctionner les systèmes de manière optimale.