Étape 2 : importer ou générer une clé privée et un certificat SSL/TLS - AWS CloudHSM

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Étape 2 : importer ou générer une clé privée et un certificat SSL/TLS

Pour activer le protocole HTTPS, votre application de serveur web (NGINX ou Apache) nécessite une clé privée et un certificat SSL/TLS correspondant. Pour utiliser le déchargement SSL/TLS du serveur Web avec AWS CloudHSM, vous devez stocker la clé privée dans un HSM de votre cluster. AWS CloudHSM Vous pouvez effectuer cette opération de différentes manières :

  • Si vous ne disposez pas encore d'une clé privée et d'un certificat correspondant, générez une clé privée dans un HSM. Vous utilisez la clé privée pour créer une demande de signature de certificat (CSR), que vous utilisez pour créer le certificat SSL/TLS.

  • Si vous disposez déjà d'une clé privée et du certificat correspondant, importez la clé privée dans un HSM.

Quelle que soit la méthode choisie ci-dessus, vous exportez une fausse clé privée PEM depuis le HSM, qui est un fichier de clé privée au format PEM contenant une référence à la clé privée stockée sur le HSM (il ne s'agit pas de la véritable clé privée). Votre serveur Web utilise le faux fichier de clé privée PEM pour identifier la clé privée sur le HSM lors du déchargement SSL/TLS.

Générer une clé privée et un certificat

Générer une clé privée

Cette section explique comment générer une paire de clés à l'aide de l'Utilitaire de gestion des clés (KMU) à partir du SDK client 3. Une fois qu'une paire de clés est générée dans le HSM, vous pouvez l'exporter sous forme de faux fichier PEM et générer le certificat correspondant.

Les clés privées générées à l'aide de l'Utilitaire de gestion des clés (KMU) peuvent être utilisées à la fois avec le SDK client 3 et le SDK client 5.

Installation et configuration de l'Utilitaire de gestion des clés (KMU)
  1. Connectez-vous à votre instance client .

  2. Installez et configurez le SDK client 3.

  3. Exécutez la commande suivante pour démarrer le AWS CloudHSM client.

    Amazon Linux
    $ sudo start cloudhsm-client
    Amazon Linux 2
    $ sudo service cloudhsm-client start
    CentOS 7
    $ sudo service cloudhsm-client start
    CentOS 8
    $ sudo service cloudhsm-client start
    RHEL 7
    $ sudo service cloudhsm-client start
    RHEL 8
    $ sudo service cloudhsm-client start
    Ubuntu 16.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 18.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 20.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 22.04 LTS

    La prise en charge pour OpenSSL Dynamic Engine n'est pas encore disponible.

  4. Exécutez la commande suivante pour démarrer l'outil de ligne de commande key_mgmt_util.

    $ /opt/cloudhsm/bin/key_mgmt_util
  5. Exécutez la commande suivante pour vous connecter au HSM. Remplacez <user name> et <password> par le nom d'utilisateur et le mot de passe de l'utilisateur de chiffrement (CU).

    Command: loginHSM -u CU -s <user name> -p <password>>

Générer une clé privée

En fonction de votre cas d'utilisation, vous pouvez générer une paire de clés RSA ou EC. Effectuez l’une des actions suivantes :

  • Pour générer une clé privée RSA sur un HSM

    Utilisez la commande genRSAKeyPair pour générer une paire de clés RSA. Cet exemple génère une paire de clés RSA avec un module de 2048, un exposant public de 65537 et une étiquette tls_rsa_keypair.

    Command: genRSAKeyPair -m 2048 -e 65537 -l tls_rsa_keypair

    Si la commande s'est correctement déroulée, vous devriez voir le résultat suivant indiquant que vous avez correctement généré une paire de clés RSA.

    Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 7 private key handle: 8 Cluster Status: Node id 1 status: 0x00000000 : HSM Return: SUCCESS
  • Pour générer une clé privée EC sur un HSM

    Utilisez la commande genECCKeyPair pour générer une paire de clés EC. Cet exemple génère une paire de clés EC avec un ID de courbe de 2 (correspondant à la courbe NID_X9_62_prime256v1) et une étiquette tls_ec_keypair.

    Command: genECCKeyPair -i 2 -l tls_ec_keypair

    Si la commande s'est correctement déroulée, vous devriez voir le résultat suivant indiquant que vous avez correctement généré une paire de clés EC.

    Cfm3GenerateKeyPair returned: 0x00 : HSM Return: SUCCESS Cfm3GenerateKeyPair: public key handle: 7 private key handle: 8 Cluster Status: Node id 1 status: 0x00000000 : HSM Return: SUCCESS

Exporter un faux fichier de clé privée PEM

Une fois que vous avez une clé privée sur le HSM, vous devez exporter un faux fichier de clé privée PEM. Ce fichier ne contient pas les données clés réelles, mais il permet au moteur dynamique OpenSSL d'identifier la clé privée sur le HSM. Vous pouvez ensuite utiliser la clé privée pour créer une demande de signature de certificat (CSR) et signer la CSR pour créer le certificat.

Note

Les faux fichiers PEM générés à l'aide de l'Utilitaire de gestion des clés (KMU) peuvent être utilisés à la fois avec le SDK client 3 et le SDK client 5.

Identifiez le handle de clé correspondant à la clé que vous souhaitez exporter en tant que faux PEM, puis exécutez la commande suivante pour exporter la clé privée au faux format PEM et l'enregistrer dans un fichier. Remplacez les valeurs suivantes par vos propres valeurs :

  • <private_key_handle> – Handle de la clé privée générée. Ce handle a été généré par l’une des commandes de génération de clé de l'étape précédente. Dans l'exemple précédent, le handle de la clé privée est 8.

  • <web_server_fake_PEM.key> – Nom du fichier dans lequel votre fausse clé PEM sera écrite.

Command: getCaviumPrivKey -k <private_key_handle> -out <web_server_fake_PEM.key>

Quitter

Exécutez la commande suivante pour arrêter le key_mgmt_util.

Command: exit

Vous devriez maintenant avoir un nouveau fichier sur votre système, situé sur le chemin indiqué par <web_server_fake_PEM.key> dans la commande précédente. Ce fichier est le faux fichier de clé privée PEM.

Générer un certificat signé automatiquement.

Une fois que vous avez généré une fausse clé privée PEM, vous pouvez utiliser ce fichier pour générer une demande de signature de certificat (CSR) et un certificat.

Dans un environnement de production, vous utilisez généralement une autorité de certification (CA) pour créer un certificat émis par une demande de signature de certificat (CSR). L'autorité de certification n'est pas nécessaire pour un environnement de test. Si vous utilisez une autorité de certification, envoyez-lui le fichier CSR et utilisez le certificat SSL/TLS signé qu'elle vous fournit sur votre serveur Web pour HTTPS.

Au lieu d'utiliser une autorité de certification, vous pouvez utiliser le moteur dynamique AWS CloudHSM OpenSSL pour créer un certificat auto-signé. Les certificats auto-signés ne sont pas approuvées par les navigateurs et ne doivent pas être utilisés dans les environnements de production. Ils peuvent cependant être utilisés dans les environnements de test.

Avertissement

Les certificats auto-signés doivent uniquement être utilisés dans un environnement de test. Pour un environnement de production, utilisez une méthode plus sécurisée telle qu'une autorité de certification pour créer un certificat.

Installer et configurer le moteur dynamique OpenSSL
  1. Connectez-vous à votre instance client .

  2. Pour installer et configurer, réalisez l’un des éléments suivants :

Générez un certificat
  1. Obtenez une copie de votre faux fichier PEM généré lors d'une étape précédente.

  2. Création d'une CSR

    Exécutez la commande suivante pour utiliser le moteur dynamique AWS CloudHSM OpenSSL afin de créer une demande de signature de certificat (CSR). Remplacez <web_server_fake_PEM.key> par le nom du fichier qui contient votre fausse clé privée PEM. Remplacez <web_server.csr> par le nom du fichier qui contient votre demande CSR.

    La commande req est interactive. Renseignez chaque champ. Les informations du champ sont copiées dans votre certificat SSL/TLS.

    $ openssl req -engine cloudhsm -new -key <web_server_fake_PEM.key> -out <web_server.csr>
  3. Créer un certificat auto-signé

    Exécutez la commande suivante pour utiliser le moteur dynamique AWS CloudHSM OpenSSL afin de signer votre CSR avec votre clé privée sur votre HSM. Cette opération crée un certificat auto-signé. Remplacez les valeurs suivantes par vos propres valeurs dans la commande :

    • <web_server.csr> – Nom du fichier qui contient la CSR.

    • <web_server_fake_PEM.key> – Nom du fichier qui contient la fausse clé privée PEM.

    • <web_server.crt> – Nom du fichier qui contiendra votre certificat de serveur web.

    $ openssl x509 -engine cloudhsm -req -days 365 -in <web_server.csr> -signkey <web_server_fake_PEM.key> -out <web_server.crt>

Une fois que vous avez terminé ces étapes, consultez Étape 3 : Configurer le serveur web.

Importer une clé privée et un certificat existants

Il est possible que vous disposiez déjà d'une clé privée et d'un certificat SSL/TLS correspondant que vous utilisez pour les connexions HTTPS sur votre serveur web. Si tel est le cas, vous pouvez importer cette clé dans un HSM en suivant les étapes de cette section.

Note

Quelques remarques sur les importations de clés privées et la compatibilité avec le SDK client :

  • L'importation d'une clé privée existante nécessite le SDK client 3.

  • Vous pouvez utiliser les clés privées du SDK client 3 avec le SDK client 5.

  • OpenSSL Dynamic Engine for Client SDK 3 ne prend pas en charge les dernières plateformes Linux, mais l'implémentation d'OpenSSL Dynamic Engine for Client SDK 5 le fait. Vous pouvez importer une clé privée existante à l'aide de l'Utilitaire de gestion des clés (KMU) fourni avec le SDK client 3, puis utiliser cette clé privée et l'implémentation du moteur dynamique OpenSSL avec le SDK client 5 pour prendre en charge le déchargement SSL/TLS sur les dernières plateformes Linux.

Pour importer une clé privée existante dans un HSM avec le SDK client 3
  1. Connectez-vous à votre instance client EC2 Amazon. Si nécessaire, copiez votre clé privée et le certificat sur l'instance.

  2. Installez et configurez le SDK client 3

  3. Exécutez la commande suivante pour démarrer le AWS CloudHSM client.

    Amazon Linux
    $ sudo start cloudhsm-client
    Amazon Linux 2
    $ sudo service cloudhsm-client start
    CentOS 7
    $ sudo service cloudhsm-client start
    CentOS 8
    $ sudo service cloudhsm-client start
    RHEL 7
    $ sudo service cloudhsm-client start
    RHEL 8
    $ sudo service cloudhsm-client start
    Ubuntu 16.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 18.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 20.04 LTS
    $ sudo service cloudhsm-client start
    Ubuntu 22.04 LTS

    La prise en charge pour OpenSSL Dynamic Engine n'est pas encore disponible.

  4. Exécutez la commande suivante pour démarrer l'outil de ligne de commande key_mgmt_util.

    $ /opt/cloudhsm/bin/key_mgmt_util
  5. Exécutez la commande suivante pour vous connecter au HSM. Remplacez <user name> et <password> par le nom d'utilisateur et le mot de passe de l'utilisateur de chiffrement (CU).

    Command: loginHSM -u CU -s <user name> -p <password>
  6. Exécutez les commandes suivantes pour importer votre clé privée dans un HSM.

    1. Exécutez la commande suivante pour créer une clé d'encapsulage symétrique valable uniquement pour la session en cours. La commande et la sortie sont affichées.

      Command: genSymKey -t 31 -s 16 -sess -l wrapping_key_for_import Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 6 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
    2. Exécutez la commande suivante pour importer votre clé privée existante dans un HSM. La commande et la sortie sont affichées. Remplacez les valeurs suivantes par vos propres valeurs :

      • <web_server_existing.key> – Nom du fichier qui contient votre clé privée.

      • <web_server_imported_key> – Étiquette de votre clé privée importée.

      • <wrapping_key_handle> – Handle de la clé d'encapsulage générée par la commande précédente.d Dans l'exemple précédent, le handle de clé d'encapsulage est 6.

      Command: importPrivateKey -f <web_server_existing.key> -l <web_server_imported_key> -w <wrapping_key_handle> BER encoded key length is 1219 Cfm3WrapHostKey returned: 0x00 : HSM Return: SUCCESS Cfm3CreateUnwrapTemplate returned: 0x00 : HSM Return: SUCCESS Cfm3UnWrapKey returned: 0x00 : HSM Return: SUCCESS Private Key Unwrapped. Key Handle: 8 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
  7. Exécutez la commande suivante pour exporter la fausse clé privée au format PEM et l'enregistrer dans un fichier. Remplacez les valeurs suivantes par vos propres valeurs :

    • <private_key_handle> – Handle de la clé privée importée. Ce handle a été généré par la deuxième commande de l'étape précédente. Dans l'exemple précédent, le handle de la clé privée est 8.

    • <web_server_fake_PEM.key> – Nom du fichier qui contient votre fausse clé privée PEM exportée.

    Command: getCaviumPrivKey -k <private_key_handle> -out <web_server_fake_PEM.key>
  8. Exécutez la commande suivante pour arrêter key_mgmt_util.

    Command: exit

Une fois que vous avez terminé ces étapes, consultez Étape 3 : Configurer le serveur web.