11.12.2. Générer une clé de cryptage SSL et un certificat

Pour utiliser une connexion chiffrée SSL HTTP (HTTPS), ainsi que d'autres types de communication cryptée-SSL, vous avez besoin d'un certificat de chiffrement signé. Vous pouvez acheter un certificat d'une autorité de certification (AC), ou vous pouvez utiliser un certificat auto-signé. Les certificats auto-signés ne sont pas considérés dignes de confiance par de nombreux tiers, mais conviennent à des fins de test internes.
Cette procédure vous permet de créer un certificat auto-signé lié à des utilitaires disponibles dans Red Hat Enterprise Linux.

Conditions préalables

  • La commande keytool doit être disponible. Elle est fournie par le Java Development Kit. Dans Red Hat Enterprise Linux, OpenJDK installe cette commande à l'emplacement suivant /usr/bin/keytool.
  • Comprendre la syntaxe et les paramètres de la commande keytool. Cette procédure utilise des instructions extrêmement génériques, car des discussions plus sophistiquées sur les spécificités des certificats SSL ou sur la commande keytool sont hors de portée de cette documentation.

Procédure 11.40. Générer une clé de cryptage SSL et un certificat

  1. Générer un keystore avec des clés privées et des clés publiques.

    Exécuter la commande suivante pour générer un keystore nommé server.keystore ayant comme alias jboss dans votre répertoire actuel.
    keytool -genkeypair -alias jboss -keyalg RSA -keystore server.keystore -storepass mykeystorepass --dname "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,S=NC,C=US"
    Le tableau suivant décrit les paramètres utilisés avec la commande « keytool ».
    Paramètre Description
    -genkeypair La commande keytool qui génère une paire de clés contenant une clé publique et une clé privée.
    -alias L'alias est pour le keystore. Cette valeur est arbitraire, mais l'alias jboss est la valeur par défaut utilisée par le serveur JBoss Web.
    -keyalg L'algorithme de création de paires de clés. Dans ce cas, c'est RSA.
    -keystore Le nom et l'emplacement du fichier keystore. L'emplacement par défaut est le répertoire en cours. Le nom que vous choisissez est arbitraire. Dans ce cas, il s'agit du fichier nommé server.keystore.
    -storepass Ce mot de passe est utilisé pour authentifier le keystore, et pour que la clé puisse être lue. Le mot de passe doit contenir au moins 6 caractères de long et doit être fourni quand on accède au keystore. Dans un tel cas, on utilise mykeystorepass. Si vous omettez ce paramètre, on vous demandera de le saisir quand vous exécuterez la commande.
    -keypass
    Il s'agit du mot de passe pour la clé.

    Note

    À cause d'une limitation d'implémentation, il doit correspondre à celui du mot de passe du store.
    --dname Une chaîne avec des guillemets qui décrit le nom distinct de la clé, comme par exemple : "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,C=US". Cette chaîne est une compilation des composants suivants :
    • CN - Le nom commun ou le nom d'hôte. Si le nom d'hôte est "jsmith.mycompany.com", le CN sera "jsmith".
    • OU - L'unité organisationnelle, par exemple "Engineering"
    • O - Le nom de l'organisation, par exemple "mycompany.com".
    • L - La localité, par exemple "Raleigh" ou "London"
    • S - L'état ou la province, par exemple "NC". Ce paramètres est optionnel.
    • C - Les 2 lettres d'un code pays, par exemple "US" ou "UK".
    Quand vous exécuterez la commande ci-dessus, on vous demandera les informations suivantes :
    • Si vous n'utilisiez pas le paramètre -storepass sur la ligne de commande, on vous demandera de saisir le mot de passe du keystore. Saisir le nouveau mot de passe à la seconde invite.
    • Si vous n'utilisiez pas le paramètre -keypass sur la ligne de commande, on vous demandera de saisir le mot de passe de la clé. Appuyez sur Enter pour le définir à la même valeur que celle du mot de passe du keystore.
    Quand la commande s'achèvera, le fichier server.keystore contiendra la clé unique avec l'alias jboss.
  2. Vérifier la clé.

    Vérifier que la clé fonctionne correctement en utilisant la commande suivante.
    keytool -list -keystore server.keystore
    On vous demande le mot de passe du keystore. Les contenus du keystore sont affichés (dans ce cas, il s'agit d'une simple clé nommée jboss). Notez le type de la clé jboss, qui est keyEntry. Cela indique que le keystore contient à la fois une entrée publique et une entrée privée pour cette clé.
  3. Créer une demande de signature de certificat.

    Exécutez la commande suivante pour générer une demande de signature de certificat en utilisant la clé publique du keystore que vous avez créée dans la 1ère étape.
    keytool -certreq -keyalg RSA -alias jboss -keystore server.keystore -file certreq.csr
    On vous demandera le mot de passe pour pouvoir authentifier le keystore. La commande keytool crée alors une nouvelle demande de signature de certificat nommée certreq.csr dans le répertoire en cours d'utilisation.
  4. Tester la demande de signature de certificat nouvellement générée.

    Tester les contenus du certificat avec la commande suivante :
    openssl req -in certreq.csr -noout -text
    Les détails du certificat apparaissent.
  5. En option : soumettre votre demande de signature de certificat à une autorité de certification (AC).

    Une Autorité de Certification (AC) authentifie votre certificat pour qu'il soit considéré de confiance par des clients de tierce partie. L'AC vous a produit un certificat signé, et en option, vous a peut être fourni un ou plusieurs certificats intermédiaires.
  6. Option : exporter un certificat auto-signé du keystore.

    Si vous n'en avez besoin que dans un but de test ou en interne, vous pourrez utiliser un certificat auto-signé. Vous pourrez en exporter un, créé dans la première étape, en provenance du keystore, comme suit :
    keytool -export -alias jboss -keystore server.keystore -file server.crt
    On vous demande un mot de passe pour pouvoir s'authentifier au keystore. Un certificat auto-signé, intitulé server.crt, a été créé dans le répertoire en cours d'utilisation.
  7. Importer le certificat signé avec tout certificat intermédiaire.

    Importer chaque certificat, dans l'ordre dans lequel l'AC vous le demande. Pour chaque AC que vous importez, remplacer intermediate.ca ou server.crt par le nom du fichier. Si vos certificats ne sont pas fournis dans des fichiers séparés, créer un fichier séparé pour chaque certificat, et coller leur contenu dans le fichier.

    Note

    Votre certificat signé et les clés de ce certificat sont des ressources de valeur. Soyez vigilant sur la façon dont vous les transportez entre les serveurs.
    keytool -import -keystore server.keystore -alias intermediateCA -file intermediate.ca
    keytool -importcert -alias jboss -keystore server.keystore -file server.crt
  8. Testez que vos certificats soient bien importés avec succès.

    Exécuter la commande suivante, et saisir le mot de passe de keystore quand on vous le demandera. Les contenus de votre keystore sont affichés, et les certificats font partie de la liste.
    keytool -list -keystore server.keystore
Résultat

Votre certificat signé est maintenant inclus dans votre keystore et est prêt à l'utilisation pour crypter les connexions SSL, y compris les communications au serveur web HTTPS.