Opérations avec les certificats dans Java keystore

Ce guide est destiné pour les utilisateurs des serveurs Apache Tomcat qui signent des applications (applets) dans Java et utilisent Java Keystore.

Remarque : Il n'y a pas de différence entre la création de la demande de CSR pour les certificats Code Signing et les certificats de serveur. Lors de la création de la demande CSR, le nom de la société doit être saisi dans le champ Common Name.

Créer un keystore et une paire de clés

Utilisez la commande suivante pour créer le nouveau keystore et générer la paire de clés dont vous avez besoin pour demander un certificat. keytool -genkey -alias test -keyalg RSA -keystore test.jks -keysize 2048 Vous serez ensuite invités à créer le mot de passe du keystore. Les données saisies correspondent aux informations contenues dans la CSR :

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

Créer une CSR

Pour générer la CSR, tapez la commande suivante :
keytool -certreq -alias test -keystore test.jks -file test.csr Les informations sur le demandeur ont été renseignées lors de la création de la paire de clés à l'étape précédente, donc KeyTool n'en demande plus.

Le paramètre -file test.csr transfère la code CSR dans un fichier. Si vous l'omettez, le texte de la CSR sera affiché dans le terminal et vous pourrez le coller directement dans la commande. Après, il suffit d'attendre votre certificat.

Importer un certificat émis dans le keystore

Le certificat délivré (envoyé par SSLmarket) doit être importé dans le Keystore.

Lors de l'importation, Keystore n'accepte que des certificats approuvés d'autorités de certification déjà existantes dans le keystore. Cela signifie que les certificats doivent être importés dans l'ordre inverse - du certificat racine au certificat de serveur.

Pour importer le certificat, utilisez la commande suivante :
keytool -import -trustcacerts -alias test -file test.txt -keystore test.jks

Error: Failed to establish chain from reply

Vous pouvez rencontrer une erreur : keytool error: java.lang.Exception: Failed to establish chain from reply : signifie un certificat CA/intermédiaire manquant dans le keystore.

Pour le résoudre :

  • 1) importez les certificats inversement - tout d'abord les certificats CA : keytool -import -trustcacerts -alias root -file intermediate.crt -keystore test.jks
  • 2) OU importez le certificat au format PKCS#7 (P7B). Utilisez le fichier "linux_cert+ca.pem" que vous avez reçu de SSLmarket et convertissez-le au format P7B - utilisez la commande suivante : openssl crl2pkcs7 -nocrl -certfile linux_cert+ca.pem -out linux_cert+ca.p7b et ensuite, importez le fichier dans le keystore :
    keytool -import -trustcacerts -alias test -file linux_cert+ca.p7b -keystore test.jks Le résultat : Certificate reply was installed in keystore signifie une opération réussie. Par contre, le résultat : Public keys in reply and keystore don't match signifie qu'il n'y a pas de certificat de serveur dans le fichier .p7b, mais seulement l'intermédiaire - vous avez probablement utilisé le fichier .p7b de notre courrier.

  • 3) éventuellement, utilisez le format PKCS#12 (PFX) contenant tous les éléments nécessaires : keytool -importkeystore -srckeystore pkcs12file.p12 -srcstoretype pkcs12 -destkeystore test.jks -deststoretype JKS Cette méthode est la plus rapide, mais si vous avez généré la CSR directement dans le keystore, il est inutile (vous devriez l'exporter).

Outils avec la GUI

Si vous ne souhaitez pas travailler avec le keystore, la ligne de commande et le terminal, vous pouvez utiliser un des outils à l'interface graphique.

Les deux programmes mentionnés peuvent créer ou ouvrir un fichier dans le keystore, générer une CSR et importer un certificat émis (réponse de l'AC). La procédure est la même que pour le terminal ci-dessus ; la seule différence est l'interface graphique.

Portecle

Portecle est un programme gratuit en Java qui permet de gérer le keystore dans une interface graphique. Il est compatible avec diverses plates-formes (Linux, MacOS, Windows).

KeyStore Explorer

KeyStore Explorer fonctionne comme le programme précédent et il est également multi-plateforme.

La logique des programmes mentionnés est similaire à celle du keystore ; donc finalement vous n'économisez pas le travail.