Introduction à keytool

Haut Java

Je viens d'annoncer le nouveau cours Learn Spring , axé sur les principes de base de Spring 5 et Spring Boot 2:

>> VOIR LE COURS

1. Vue d'ensemble

Dans ce court tutoriel, nous allons présenter la commande keytool . Nous allons apprendre à utiliser keytool pour créer un nouveau certificat et vérifier les informations de ce certificat.

2. Qu'est-ce que keytool?

Java inclut l' utilitaire keytool dans ses versions. Nous l'utilisons pour gérer les clés et les certificats et les stocker dans un keystore. La commande keytool nous permet de créer des certificats auto-signés et d'afficher des informations sur le keystore.

Dans les sections suivantes, nous allons passer en revue différentes fonctionnalités de cet utilitaire.

3. Création d'un certificat auto-signé

Tout d'abord, créons un certificat auto-signé qui pourrait être utilisé pour établir une communication sécurisée entre les projets dans notre environnement de développement, par exemple.

Afin de générer le certificat , nous allons ouvrir une invite de ligne de commande et utiliser la commande keytool avec l' option -genkeypair :

keytool -genkeypair -alias  -keypass  -validity  -storepass 

Apprenons-en plus sur chacun de ces paramètres:

  • alias - le nom de notre certificat
  • keypass - le mot de passe du certificat. Nous aurons besoin de ce mot de passe pour avoir accès à la clé privée de notre certificat
  • validité - le temps (en jours) de validité de notre certificat
  • storepass - le mot de passe du keystore. Ce sera le mot de passe du keystore si le magasin n'existe pas

Par exemple, générons un certificat nommé «cert1» qui a une clé privée de «pass123» et est valide pendant un an. Nous spécifierons également «stpass123» comme mot de passe du keystore:

keytool -genkeypair -alias cert1 -keypass pass123 -validity 365 -storepass stpass123

Après avoir exécuté la commande, il vous demandera des informations que nous devrons fournir:

What is your first and last name? [Unknown]: Name What is the name of your organizational unit? [Unknown]: Unit What is the name of your organization? [Unknown]: Company What is the name of your City or Locality? [Unknown]: City What is the name of your State or Province? [Unknown]: State What is the two-letter country code for this unit? [Unknown]: US Is CN=Name, OU=Unit, O=Company, L=City, ST=State, C=US correct? [no]: yes

Comme mentionné, si nous n'avons pas créé le keystore auparavant, la création de ce certificat le créera automatiquement.

Nous pourrions également exécuter l' option -genkeypair sans paramètres. Si nous ne les fournissons pas dans la ligne de commande et qu'ils sont obligatoires, nous serons invités à les indiquer.

Notez qu'il est généralement conseillé de ne pas fournir les mots de passe ( -keypass ou -storepass ) sur la ligne de commande dans les environnements de production .

4. Liste des certificats dans le keystore

Ensuite, nous allons apprendre à afficher les certificats stockés dans notre magasin de clés. Pour cela, nous utiliserons l' option -list :

keytool -list -storepass  

La sortie de la commande exécutée affichera le certificat que nous avons créé:

Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry cert1, 02-ago-2020, PrivateKeyEntry, Certificate fingerprint (SHA1): 0B:3F:98:2E:A4:F7:33:6E:C4:2E:29:72:A7:17:E0:F5:22:45:08:2F

Si nous voulons obtenir les informations pour un certificat concret , nous devons simplement inclure l' option -alias dans notre commande. Pour obtenir plus d'informations que celles fournies par défaut, nous ajouterons également l' option -v (verbose):

keytool -list -v -alias  -storepass  

Cela nous fournira toutes les informations relatives au certificat demandé:

Alias name: cert1 Creation date: 02-ago-2020 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=Name, OU=Unit, O=Company, L=City, ST=State, C=US Issuer: CN=Name, OU=Unit, O=Company, L=City, ST=State, C=US Serial number: 11d34890 Valid from: Sun Aug 02 20:25:14 CEST 2020 until: Mon Aug 02 20:25:14 CEST 2021 Certificate fingerprints: MD5: 16:F8:9B:DF:2C:2F:31:F0:85:9C:70:C3:56:66:59:46 SHA1: 0B:3F:98:2E:A4:F7:33:6E:C4:2E:29:72:A7:17:E0:F5:22:45:08:2F SHA256: 8C:B0:39:9F:A4:43:E2:D1:57:4A:6A:97:E9:B1:51:38:82:0F:07:F6:9E:CE:A9:AB:2E:92:52:7A:7E:98:2D:CA Signature algorithm name: SHA256withDSA Subject Public Key Algorithm: 2048-bit DSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: A1 3E DD 9A FB C0 9F 5D B5 BE 2E EC E2 87 CD 45 .>.....].......E 0010: FE 0B D7 55 ...U ] ]

5. Autres fonctionnalités

Outre les fonctionnalités que nous avons déjà vues, de nombreuses fonctionnalités supplémentaires sont disponibles dans cet outil.

Par exemple, nous pouvons supprimer le certificat que nous avons créé à partir du keystore:

keytool -delete -alias  -storepass 

Un autre exemple est que nous pourrons même changer l'alias d'un certificat :

keytool -changealias -alias  -destalias  -keypass  -storepass 

Enfin, pour obtenir plus d'informations sur l'outil, nous pouvons demander de l'aide via la ligne de commande:

keytool -help

6. Conclusion

Dans ce tutoriel rapide, nous avons appris un peu plus sur l' utilitaire keytool . Nous avons également appris à utiliser certaines fonctionnalités de base incluses dans cet outil.

Fond Java

Je viens d'annoncer le nouveau cours Learn Spring , axé sur les principes de base de Spring 5 et Spring Boot 2:

>> VOIR LE COURS