Java Keytool Essentials: Utilisation des keystores Java

introduction

Java Keytool est un outil de gestion de clés et de certificats utilisé pour manipuler les magasins de clés Java. Il est inclus dans Java. Un fichier de clés Java est un conteneur pour les certificats d’autorisation ou les certificats de clé publique. Il est souvent utilisé par les applications Java pour le cryptage, l’authentification et la distribution via HTTPS. Ses entrées sont protégées par un mot de passe du magasin de clés. Une entrée de magasin de clés est identifiée par un alias et se compose de clés et de certificats formant une chaîne de confiance.

Ce guide de style aide-mémoire fournit une référence rapide aux commandes + keytool + qui sont généralement utiles lorsque vous utilisez Java Keystores. Cela inclut la création et la modification de magasins de clés Java afin qu’ils puissent être utilisés avec vos applications Java.

  • Comment utiliser ce guide: *

  • Si vous n’êtes pas familier avec les demandes de signature de certificat (CSR), lisez la section CSR de notre https://www.digitalocean.com/community/tutorials/openss-essentials-working-with-ssl-certificates-private-keys-and -csrs / [Aide-mémoire OpenSSL]

  • Ce guide est présenté sous forme d’extraits de ligne de commande autonomes, au format feuille de triche.

  • Passez à n’importe quelle section pertinente à la tâche que vous essayez de terminer (astuce: utilisez le menu Contents en bas à gauche ou la fonction Find de votre navigateur)

  • La plupart des commandes sont des lignes uniques qui ont été étendues à plusieurs lignes (en utilisant le symbole + \ +) pour plus de clarté.

Création et importation d’entrées dans le magasin de clés

Cette section couvre les commandes Java Keytool liées à la génération de paires de clés et de certificats, ainsi qu’à leur importation.

Générer des clés dans le magasin de clés nouveau / existant

Utilisez cette méthode si vous souhaitez utiliser HTTP (HTTP sur TLS) pour sécuriser votre application Java. Cela créera une nouvelle paire de clés dans un keystore Java nouveau ou existant, pouvant être utilisé pour créer une CSR et obtenir un certificat SSL auprès d’une autorité de certification.

Cette commande génère une paire de clés RSA 2048 bits, sous l’alias spécifié (+ domain +), dans le fichier de clés spécifié (+ keystore.jks +):

keytool -genkeypair \
       -alias  \
       -keyalg RSA \
       -keystore

Si le fichier de clés spécifié n’existe pas déjà, il sera créé une fois les informations demandées fournies. Cela vous demandera le mot de passe du magasin de clés (nouveau ou existant), suivi de l’invite Nom distinctif (pour la clé privée), puis du mot de passe souhaité.

Générer une CSR pour une clé privée existante

Utilisez cette méthode si vous souhaitez générer une CSR que vous pouvez envoyer à une autorité de certification pour demander l’émission d’un certificat SSL signé par une autorité de certification. Cela nécessite que le magasin de clés et l’alias existent déjà; vous pouvez utiliser la commande précédente pour vous en assurer.

Cette commande crée une CSR (+ domain.csr +) signée par la clé privée identifiée par l’alias (+ domain +) dans le magasin de clés (+ keystore.jks +):

keytool -certreq \
       -alias  \
       -file  \
       -keystore

Après avoir saisi le mot de passe du magasin de clés, la CSR sera générée.

Certificat d’importation signé / racine / intermédiaire

Utilisez cette méthode si vous souhaitez importer un certificat signé, par exemple. un certificat signé par une autorité de certification dans votre magasin de clés; il doit correspondre à la clé privée qui existe dans l’alias spécifié. Vous pouvez également utiliser cette même commande pour importer les certificats root ou intermediate dont votre autorité de certification peut avoir besoin pour compléter une chaîne d’approbation. Spécifiez simplement un alias unique, tel que + root au lieu de` + domain`, et le certificat que vous souhaitez importer.

Cette commande importe le certificat (+ domain.crt +) dans le magasin de clés (+ keystore.jks +), sous l’alias spécifié (+ domain +). Si vous importez un certificat signé, il doit correspondre à la clé privée de l’alias spécifié:

keytool -importcert \
       -trustcacerts -file  \
       -alias  \
       -keystore

Vous serez invité à entrer le mot de passe du fichier de clés, puis à confirmer l’opération d’importation.

  • Remarque: * Vous pouvez également utiliser la commande pour importer les certificats d’une autorité de certification dans votre magasin de clés de confiance Java, qui se trouve généralement dans + $ JAVA_HOME / jre / lib / security / cacerts + en supposant que + + JAVA_HOME + `se trouve à l’emplacement où votre JRE ou JDK est installé.

Générer un certificat auto-signé dans un magasin de clés nouveau / existant

Utilisez cette commande si vous souhaitez générer un certificat auto-signé pour vos applications Java. En réalité, il s’agit de la même commande que celle utilisée pour créer une nouvelle paire de clés, mais avec la durée de validité spécifiée en jours.

Cette commande génère une paire de clés RSA 2048 bits, valide pendant «+ 365 » jours, sous l'alias spécifié (` domain `), dans le fichier de clés spécifié (` keystore.jks +`):

keytool -genkey \
       -alias  \
       -keyalg RSA \
       -validity  \
       -keystore

Si le fichier de clés spécifié n’existe pas déjà, il sera créé une fois les informations demandées fournies. Cela vous demandera le mot de passe du magasin de clés (nouveau ou existant), suivi de l’invite Nom distinctif (pour la clé privée), puis du mot de passe souhaité.

Affichage des entrées du magasin de clés

Cette section couvre la liste du contenu d’un fichier de clés Java, tel que l’affichage des informations de certificat ou l’exportation de certificats.

Liste des empreintes digitales des certificats de magasin de clés

Cette commande répertorie les empreintes SHA de tous les certificats du magasin de clés (+ keystore.jks +), sous leurs alias respectifs:

keytool -list \
       -keystore

Le mot de passe du magasin de clés vous sera demandé. Vous pouvez également restreindre la sortie à un alias spécifique en utilisant l’option + -alias domain, où« domaine »est le nom de l’alias.

Liste du contenu du magasin de clés détaillé

Cette commande répertorie les informations détaillées sur les entrées qu’un magasin de clés (+ keystore.jks +) contient, y compris la longueur de la chaîne de certificats, l’empreinte des certificats dans la chaîne, les noms uniques, le numéro de série et la date de création / expiration, sous leurs alias respectifs:

keytool -list -v \
       -keystore

Le mot de passe du magasin de clés vous sera demandé. Vous pouvez également restreindre la sortie à un alias spécifique en utilisant l’option + -alias domain, où« domaine »est le nom de l’alias.

  • Remarque: * Vous pouvez également utiliser cette commande pour voir quels certificats se trouvent dans votre magasin de clés de confiance Java, qui se trouve généralement dans + $ JAVA_HOME / jre / lib / security / cacerts + en supposant que + + JAVA_HOME + est là où se trouve votre JRE ou JDK est installé.

Utiliser Keytool pour afficher les informations de certificat

Cette commande imprime des informations détaillées sur un fichier de certificat (+ certificate.crt +), y compris ses empreintes digitales, le nom distinctif du propriétaire et de l’émetteur, ainsi que la période de validité de celui-ci:

keytool -printcert \
       -file

Le mot de passe du magasin de clés vous sera demandé.

Certificat d’exportation

Cette commande exporte un certificat binaire codé DER (+ domain.der +), associé à l’alias (+ domain +), dans le magasin de clés (+ keystore.jks +):

keytool -exportcert
       -alias
       -file
       -keystore

Le mot de passe du magasin de clés vous sera demandé. Si vous souhaitez convertir le certificat encodé DER en encodage PEM, suivez nos https://www.digitalocean.com/community/tutorials/openss-essentials-working-with-ssl-certificates-private-keys-and-csrs. # convert-certificate-formats [aide-mémoire OpenSSL].

Modification du magasin de clés

Cette section couvre la modification des entrées du fichier de clés Java, telles que la suppression ou le changement de nom d’alias.

Changer le mot de passe du keystore

Cette commande permet de changer le mot de passe d’un magasin de clés (+ keystore.jks +):

keytool -storepasswd \
       -keystore

On vous demandera le mot de passe actuel, puis le nouveau mot de passe. Vous pouvez également spécifier le nouveau mot de passe dans la commande en utilisant l’option + -new newpass +, où «newpass» est le mot de passe.

Supprimer l’alias

Cette commande est utilisée pour supprimer un alias (+ domain) dans un magasin de clés (` + keystore.jks`):

keytool -delete \
       -alias domain \
       -keystore

Le mot de passe du magasin de clés vous sera demandé.

Renommer un alias

Cette commande renommera l’alias (+ domain +) en alias de destination (+ new domain) dans le magasin de clés (` + keystore.jks`):

keytool -changealias \
       -alias  \
       -destalias  \
       -keystore

Le mot de passe du magasin de clés vous sera demandé.

Conclusion

Cela devrait expliquer comment la plupart des gens utilisent Java Keytool pour manipuler leurs magasins de clés Java. Il a beaucoup d’autres utilisations qui n’étaient pas couvertes ici, alors n’hésitez pas à demander ou suggérer d’autres utilisations dans les commentaires.

Ce didacticiel est basé sur la version du magasin de clés fournie avec Java 1.7.0 mise à jour 65. Pour obtenir de l’aide pour installer Java sur Ubuntu, suivez https://www.digitalocean.com/community/tutorials/how-to-install-java-on-ubuntu-with-apt-get-this guide].