AWS CloudHSM SSL/TLSdécharger sous Linux en utilisant Tomcat avec JSSE - 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.

AWS CloudHSM SSL/TLSdécharger sous Linux en utilisant Tomcat avec JSSE

Cette rubrique fournit des step-by-step instructions pour SSL TLS configurer/décharger à l'aide de Java Secure Socket Extension (JSSE) avec le AWS CloudHSM JCESDK.

Présentation

Dans AWS CloudHSM, les serveurs Web Tomcat fonctionnent sous Linux pour prendre en chargeHTTPS. AWS CloudHSM JCESDKFournit une interface qui peut être utilisée avec JSSE (Java Secure Socket Extension) HSMs pour permettre l'utilisation de tels serveurs Web. AWS CloudHSM JCEest le pont qui se connecte JSSE à votre HSM cluster AWS Cloud. JSSEest un Java API pour les protocoles Secure Sockets Layer (SSL) et Transport Layer Security (TLS).

Étape 1 : Configurer les prérequis

Respectez ces conditions préalables pour utiliser un serveur Web Tomcat à des AWS CloudHSM fins de SSL/TLS offload on Linux. These prerequisites must be met to set up web server SSL/TLS déchargement avec le Client SDK 5 et un serveur Web Tomcat.

Note

Les différentes plateformes ont des prérequis différents. Suivez toujours les étapes d'installation adaptées à votre plateforme.

Prérequis

Comment répondre aux prérequis
  1. Installez et configurez le JCE for AWS CloudHSM sur un AWS CloudHSM cluster actif comportant au moins deux modules de sécurité matériels (HSMs). Pour plus d'informations sur l'installation, voir JCEClient SDK 5.

  2. Sur une instance EC2 Linux ayant accès à votre AWS CloudHSM cluster, suivez les instructions d'Apache Tomcat pour télécharger et installer le serveur Web Tomcat.

  3. Utilisez Cloud HSM CLI pour créer un utilisateur cryptographique (CU). Pour plus d'informations sur la gestion des HSM utilisateurs, consultez la section Gestion des HSM utilisateurs avec le cloud HSM CLI.

    Astuce

    Conservez le nom d'utilisateur et le mot de passe du CU. Vous en aurez besoin ultérieurement lors de la génération ou de l'importation de la clé HTTPS privée et du certificat pour votre serveur Web.

  4. Pour effectuer la configuration JCE à l'aide de Java Keytool, suivez les instructions figurant dansUtiliser Client SDK 5 pour intégrer AWS CloudHSM Java Keytool et Jarsigner.

Une fois que vous avez terminé ces étapes, consultez Étape 2 : générer ou importer une clé privée et/ou SSL un TLS certificat.

Remarques
  • Pour utiliser Security-Enhanced Linux (SELinux) et les serveurs Web, vous devez autoriser les TCP connexions sortantes sur le port 2223, qui est le port utilisé par le Client SDK 5 pour communiquer avec le. HSM

  • Pour créer et activer un cluster et donner à une EC2 instance l'accès au cluster, suivez les étapes décrites dans Getting Started with AWS CloudHSM. Cette section fournit des step-by-step instructions pour créer un cluster actif avec un cluster HSM et une instance EC2 client Amazon. Vous pouvez utiliser cette instance client comme serveur web.

  • Pour éviter de désactiver la durabilité des clés client, ajoutez-en plusieurs HSM à votre cluster. Pour de plus amples informations, veuillez consulter Ajouter un HSM à un AWS CloudHSM cluster.

  • Pour vous connecter à votre instance client, vous pouvez utiliser SSH ou PuTTY. Pour plus d'informations, consultez la section Connexion à votre instance Linux à l'aide SSH ou Connexion à votre instance Linux depuis Windows à l'aide de PU TTY dans la EC2 documentation Amazon.

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

Pour l'activerHTTPS, votre application de serveur Web Tomcat a besoin d'une clé privée et d'un SSL/TLS certificate. To use web server SSL/TLS déchargement correspondant. Vous devez stocker la clé privée HSM dans un cluster. AWS CloudHSM AWS CloudHSM

Note

Si vous n'avez pas encore de clé privée et de certificat correspondant, générez une clé privée dans unHSM. Vous utilisez la clé privée pour créer une demande de signature de certificat (CSR), que vous utilisez pour créer le TLS certificatSSL/.

Vous créez un AWS CloudHSM KeyStore fichier local qui contient une référence à votre clé privée sur le certificat HSM et le certificat associé. Votre serveur Web utilise le AWS CloudHSM KeyStore fichier pour identifier la clé privée sur le fichier HSM during SSL TLS /offload.

Générer une clé privée

Cette section explique comment générer une paire de clés à l'aide du KeyTool formulaire. JDK Une fois qu'une paire de clés est générée dans leHSM, vous pouvez l'exporter sous forme de KeyStore fichier et générer le certificat correspondant.

Selon votre cas d'utilisation, vous pouvez générer une paire de clés EC RSA ou une paire de clés EC. Les étapes suivantes montrent comment générer une paire de RSA clés.

Utilisez la genkeypair commande in KeyTool pour générer une paire de RSA clés
  1. Après avoir remplacé le <VARIABLES> ci-dessous avec vos données spécifiques, utilisez la commande suivante pour générer un fichier keystore nomméjsse_keystore.keystore, qui contiendra une référence de votre clé privée sur leHSM.

    $ keytool -genkeypair -alias <UNIQUE ALIAS FOR KEYS> -keyalg <KEY ALGORITHM> -keysize <KEY SIZE> -sigalg <SIGN ALGORITHM> \ -keystore <PATH>/<JSSE KEYSTORE NAME>.keystore -storetype CLOUDHSM \ -dname CERT_DOMAIN_NAME \ -J-classpath '-J'$JAVA_LIB'/*:/opt/cloudhsm/java/*:./*' \ -provider "com.amazonaws.cloudhsm.jce.provider.CloudHsmProvider" \ -providerpath "$CLOUDHSM_JCE_LOCATION" \ -keypass <KEY PASSWORD> -storepass <KEYSTORE PASSWORD>
    • <PATH>: chemin vers lequel vous souhaitez générer votre fichier keystore.

    • <UNIQUE ALIAS FOR KEYS>: Ceci est utilisé pour identifier de manière unique votre clé sur leHSM. Cet alias sera défini comme LABEL attribut de la clé.

    • <KEY PASSWORD>: Nous stockons la référence à votre clé dans le fichier keystore local, et ce mot de passe protège cette référence locale.

    • <KEYSTORE PASSWORD>: Il s'agit du mot de passe de votre fichier keystore local.

    • <JSSE KEYSTORE NAME>: nom du fichier Keystore.

    • <CERT DOMAIN NAME>: Nom distinctif X.500.

    • <KEY ALGORITHM>: algorithme clé pour générer une paire de clés (par exemple, RSA et EC).

    • <KEY SIZE>: taille de clé pour générer une paire de clés (par exemple, 2048, 3072 et 4096).

    • <SIGN ALGORITHM>: taille de clé pour générer une paire de clés (par exemple SHA1withRSASHA224withRSA,,SHA256withRSA,SHA384withRSA, etSHA512withRSA).

  2. Pour confirmer le succès de la commande, entrez la commande suivante et vérifiez que vous avez correctement généré une paire de RSA clés.

    $ ls <PATH>/<JSSE KEYSTORE NAME>.keystore

Générer un certificat signé automatiquement.

Une fois que vous avez généré une clé privée avec le fichier keystore, 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 à partir d'unCSR. L'autorité de certification n'est pas nécessaire pour un environnement de test. Si vous utilisez une autorité de certification, envoyez-lui le CSR fichier et utilisez le TLS certificat signéSSL/qu'elle vous a fourni sur votre serveur WebHTTPS.

Au lieu d'utiliser une autorité de certification, vous pouvez utiliser le KeyTool 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.

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

    2. Exécutez la commande suivante pour KeyTool créer une demande de signature de certificat (CSR).

      $ keytool -certreq -keyalg RSA -alias unique_alias_for_key -file certreq.csr \ -keystore <JSSE KEYSTORE NAME>.keystore -storetype CLOUDHSM \ -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass <KEY PASSWORD> -storepass <KEYSTORE PASSWORD>
      Note

      Le fichier de sortie de la demande de signature de certificat est certreq.csr.

    Signer un certificat
    • Après avoir remplacé le <VARIABLES> ci-dessous avec vos données spécifiques, exécutez la commande suivante pour vous signer CSR avec votre clé privée sur votreHSM. Cette opération crée un certificat auto-signé.

      $ keytool -gencert -infile certreq.csr -outfile certificate.crt \ -alias <UNIQUE ALIAS FOR KEYS> -keypass <KEY_PASSWORD> -storepass <KEYSTORE_PASSWORD> -sigalg SIG_ALG \ -storetype CLOUDHSM -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keystore jsse_keystore.keystore
      Note

      certificate.crt est le certificat signé qui utilise la clé privée de l'alias.

    Importer un certificat dans Keystore
    • Après avoir remplacé le <VARIABLES> ci-dessous avec vos données spécifiques, exécutez la commande suivante pour importer un certificat signé en tant que certificat sécurisé. Cette étape stockera le certificat dans l'entrée du keystore identifiée par un alias.

      $ keytool -import -alias <UNIQUE ALIAS FOR KEYS> -keystore jsse_keystore.keystore \ -file certificate.crt -storetype CLOUDHSM \ -v -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass <KEY PASSWORD> -storepass <KEYSTORE_PASSWORD>
    Convertir un certificat en PEM
    • Exécutez la commande suivante pour convertir le fichier de certificat signé (.crt) en fichier. PEM Le PEM fichier sera utilisé pour envoyer la demande depuis le client HTTP.

      $ openssl x509 -inform der -in certificate.crt -out certificate.pem

    Une fois ces étapes terminées, passez à l'étape 3 : Configuration du serveur Web.

    Étape 3 : Configurer le serveur web Tomcat

    Mettez à jour la configuration du logiciel de votre serveur Web pour utiliser le HTTPS certificat et PEM le fichier correspondant que vous avez créés à l'étape précédente. N'oubliez pas de sauvegarder vos certificats et clés existants avant de commencer. Cela terminera la configuration de votre logiciel de serveur Web Linux pour SSL TLS /offload with AWS CloudHSM. Pour plus d'informations, consultez Référence de configuration Apache Tomcat 9.

    Arrêtez le server.
    • Après avoir remplacé le <VARIABLES> ci-dessous avec vos données spécifiques, exécutez la commande suivante pour arrêter le serveur Tomcat avant de mettre à jour la configuration

      $ /<TOMCAT DIRECTORY>/bin/shutdown.sh
      • <TOMCAT DIRECTORY>: votre répertoire d'installation de Tomcat.

    Mettre à jour le chemin de classe de Tomcat
    1. Connectez-vous à votre instance client .

    2. Localisez le dossier d'installation de Tomcat.

    3. Après avoir remplacé le <VARIABLES> ci-dessous avec vos données spécifiques, utilisez la commande suivante pour ajouter la bibliothèque Java et le chemin Java Cloudhsm dans le chemin de classe Tomcat, situé dans le fichier .sh. Tomcat/bin/catalina

      $ sed -i 's@CLASSPATH="$CLASSPATH""$CATALINA_HOME"\/bin\/bootstrap.jar@CLASSPATH="$CLASSPATH""$CATALINA_HOME"\/bin\/bootstrap.jar:'" <JAVA LIBRARY>"'\/*:\/opt\/cloudhsm\/java\/*:.\/*@' <TOMCAT PATH> /bin/catalina.sh
      • <JAVA LIBRARY>: emplacement de JRE la bibliothèque Java.

      • <TOMCAT PATH>: dossier d'installation de Tomcat.

    Ajoutez un HTTPS connecteur dans la configuration du serveur.
    1. Accédez au dossier d'installation de Tomcat.

    2. Après avoir remplacé le <VARIABLES> ci-dessous avec vos données spécifiques, utilisez la commande suivante pour ajouter un HTTPS connecteur afin d'utiliser les certificats générés dans les prérequis :

      $ sed -i '/<Connector port="8080"/i <Connector port=\"443\" maxThreads=\"200\" scheme=\"https\" secure=\"true\" SSLEnabled=\"true\" keystoreType=\"CLOUDHSM\" keystoreFile=\" <CUSTOM DIRECTORY>/<JSSE KEYSTORE NAME>.keystore\" keystorePass=\"<KEYSTORE PASSWORD>\" keyPass=\"<KEY PASSWORD> \" keyAlias=\"<UNIQUE ALIAS FOR KEYS>" clientAuth=\"false\" sslProtocol=\"TLS\"/>' <TOMCAT PATH>/conf/server.xml
      • <CUSTOM DIRECTORY>: répertoire dans lequel se trouve le fichier keystore.

      • <JSSE KEYSTORE NAME>: nom du fichier Keystore.

      • <KEYSTORE PASSWORD>: Il s'agit du mot de passe de votre fichier keystore local.

      • <KEY PASSWORD>: Nous stockons la référence à votre clé dans le fichier keystore local, et ce mot de passe protège cette référence locale.

      • <UNIQUE ALIAS FOR KEYS>: Ceci est utilisé pour identifier de manière unique votre clé sur leHSM. Cet alias sera défini comme LABEL attribut de la clé.

      • <TOMCAT PATH>: chemin d'accès à votre dossier Tomcat.

    Démarrez le serveur
    • Après avoir remplacé le <VARIABLES> ci-dessous avec vos données spécifiques, utilisez la commande suivante pour démarrer Tomcat Server :

      $ /<TOMCAT DIRECTORY>/bin/startup.sh
      Note

      <TOMCAT DIRECTORY>est le nom de votre répertoire d'installation Tomcat.

    Après que vous avez mis à jour votre configuration de serveur web, accédez à Étape 4 : activer HTTPS le trafic et vérifier le certificat.

    Étape 4 : activer HTTPS le trafic et vérifier le certificat

    Après avoir configuré votre serveur Web pour SSL TLS /offload with AWS CloudHSM, ajoutez votre instance de serveur Web à un groupe de sécurité qui autorise le trafic entrantHTTPS. Cela permet aux clients, tels que les navigateurs Web, d'établir une HTTPS connexion avec votre serveur Web. Établissez ensuite une HTTPS connexion à votre serveur Web et vérifiez qu'il utilise le certificat que vous avez configuré pourSSL/TLSoffload with AWS CloudHSM.

    Activer les connexions entrantes HTTPS

    Pour vous connecter à votre serveur Web à partir d'un client (tel qu'un navigateur Web), créez un groupe de sécurité qui autorise HTTPS les connexions entrantes. Plus précisément, il devrait autoriser les TCP connexions entrantes sur le port 443. Affectez ce groupe de sécurité à votre serveur web.

    Pour créer un groupe de sécurité HTTPS et l'attribuer à votre serveur Web
    1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

    2. Choisissez Groupes de sécurité dans le panneau de navigation.

    3. Sélectionnez Create security group (Créer un groupe de sécurité).

    4. Pour Créer un groupe de sécurité, procédez comme suit :

      1. Pour Nom du groupe de sécurité, tapez un nom pour le groupe de sécurité que vous créez.

      2. (Facultatif) Tapez une description du groupe de sécurité que vous créez.

      3. Pour VPC, choisissez celui VPC qui contient l'EC2instance Amazon de votre serveur Web.

      4. Sélectionnez Ajouter une règle.

      5. Pour Type, HTTPSsélectionnez dans la fenêtre déroulante.

      6. Pour Source, entrez l'emplacement de la source.

      7. Sélectionnez Create security group (Créer un groupe de sécurité).

    5. Dans le panneau de navigation, choisissez Instances.

    6. Cochez la case située en regard de votre instance de serveur web.

    7. Choisissez le menu déroulant Actions en haut de la page. Sélectionnez Sécurité, puis Modifier les groupes de sécurité.

    8. Pour les groupes de sécurité associés, sélectionnez le champ de recherche et choisissez le groupe de sécurité pour lequel vous avez crééHTTPS. Ensuite, choisissez Ajouter des groupes de sécurité.

    9. Sélectionnez Save.

    Vérifiez qu'il HTTPS utilise le certificat que vous avez configuré

    Après avoir ajouté le serveur Web à un groupe de sécurité, vous pouvez vérifier queSSL/TLSoffload utilise votre certificat auto-signé. Vous pouvez le faire à l'aide d'un navigateur Web ou d'un outil tel que Open SSL s_client.

    Pour SSL TLS vérifier/décharger avec un navigateur Web
    1. Utilisez un navigateur Web pour vous connecter à votre serveur Web en utilisant le DNS nom public ou l'adresse IP du serveur. Assurez-vous que le champ URL dans la barre d'adresse commence par https ://. Par exemple, https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/.

      Astuce

      Vous pouvez utiliser un DNS service tel qu'Amazon Route 53 pour acheminer le nom de domaine de votre site Web (par exemple, https://www.example.com/) vers votre serveur Web. Pour plus d'informations, consultez la section Router le trafic vers une EC2 instance Amazon dans le guide du développeur Amazon Route 53 ou dans la documentation de votre DNS service.

    2. Utilisez votre navigateur web pour afficher le certificat de serveur web. Pour plus d’informations, consultez les ressources suivantes :

      D'autres navigateurs web peuvent avoir des fonctions similaires que vous pouvez utiliser pour afficher le certificat de serveur web.

    3. Assurez-vous que le TLS certificatSSL/est celui que vous avez configuré pour utiliser sur votre serveur Web.

    Pour SSL TLS vérifier/décharger avec Open s_client SSL
    1. Exécutez la SSL commande Open suivante pour vous connecter à votre serveur Web à l'aide deHTTPS. Remplacez <server name> avec le DNS nom public ou l'adresse IP de votre serveur Web.

      openssl s_client -connect <server name>:443
      Astuce

      Vous pouvez utiliser un DNS service tel qu'Amazon Route 53 pour acheminer le nom de domaine de votre site Web (par exemple, https://www.example.com/) vers votre serveur Web. Pour plus d'informations, consultez la section Router le trafic vers une EC2 instance Amazon dans le guide du développeur Amazon Route 53 ou dans la documentation de votre DNS service.

    2. Assurez-vous que le TLS certificatSSL/est celui que vous avez configuré pour utiliser sur votre serveur Web.

    Vous disposez désormais d'un site Web sécurisé avecHTTPS. La clé privée du serveur Web est stockée HSM dans un AWS CloudHSM cluster.

    Pour ajouter un équilibreur de charge, veuillez consulter Ajoutez un équilibreur de charge avec Elastic Load Balancing pour AWS CloudHSM(facultatif).