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.
Rubriques
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
-
Une EC2 instance Amazon exécutant un système d'exploitation Linux avec un serveur Web Tomcat installé.
-
Un utilisateur cryptographique (CU) qui possède et gère la clé privée du serveur Web sur leHSM.
-
Un AWS CloudHSM cluster actif avec au moins deux modules de sécurité matériels (HSMs) installés et configurés JCEpour le client SDK 5.
Note
Vous pouvez utiliser un seul HSM cluster, mais vous devez d'abord désactiver la durabilité des clés client. Pour plus d'informations, voir Gérer les paramètres de durabilité des clés client et Outil de configuration du client SDK 5.
Comment répondre aux prérequis
-
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.
-
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. -
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.
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
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).
-
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
-
Obtenez une copie de votre fichier keystore généré lors d'une étape précédente.
-
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.keystoreNote
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
-
Connectez-vous à votre instance client .
-
Localisez le dossier d'installation de Tomcat.
-
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.
Accédez au dossier d'installation de Tomcat.
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.shNote
<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.
Rubriques
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
-
Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/
. -
Choisissez Groupes de sécurité dans le panneau de navigation.
-
Sélectionnez Create security group (Créer un groupe de sécurité).
-
Pour Créer un groupe de sécurité, procédez comme suit :
-
Pour Nom du groupe de sécurité, tapez un nom pour le groupe de sécurité que vous créez.
-
(Facultatif) Tapez une description du groupe de sécurité que vous créez.
-
Pour VPC, choisissez celui VPC qui contient l'EC2instance Amazon de votre serveur Web.
-
Sélectionnez Ajouter une règle.
-
Pour Type, HTTPSsélectionnez dans la fenêtre déroulante.
-
Pour Source, entrez l'emplacement de la source.
-
Sélectionnez Create security group (Créer un groupe de sécurité).
-
-
Dans le panneau de navigation, choisissez Instances.
-
Cochez la case située en regard de votre instance de serveur web.
-
Choisissez le menu déroulant Actions en haut de la page. Sélectionnez Sécurité, puis Modifier les groupes de sécurité.
-
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é.
-
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
-
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.
-
Utilisez votre navigateur web pour afficher le certificat de serveur web. Pour plus d’informations, consultez les ressources suivantes :
-
Pour Mozilla Firefox, consultez View a Certificate
sur le site web de support Mozilla. -
Pour Google Chrome, consultez Understand Security Issues
sur les Outils Google pour site web des développeurs Google.
D'autres navigateurs web peuvent avoir des fonctions similaires que vous pouvez utiliser pour afficher le certificat de serveur web.
-
-
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
-
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>
:443Astuce
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.
-
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).