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 Déchargement SSL/TLS sous Linux à l'aide de Tomcat avec JSSE
Cette rubrique fournit des step-by-step instructions pour configurer le déchargement SSL/TLS à l'aide de Java Secure Socket Extension (JSSE) avec le SDK JCE. AWS CloudHSM
Rubriques
Présentation
Dans AWS CloudHSM, les serveurs Web Tomcat fonctionnent sous Linux pour prendre en charge le protocole HTTPS. Le SDK AWS CloudHSM JCE fournit une interface qui peut être utilisée avec JSSE (Java Secure Socket Extension) HSMs pour permettre l'utilisation de tels serveurs Web. AWS CloudHSM JCE est le pont qui connecte JSSE à votre cluster AWS CloudHSM. JSSE est une API Java pour les protocoles SSL (Secure Sockets Layer) et TLS (Transport Layer Security).
É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 SDK client 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 de chiffrement (CU) propriétaire et gestionnaire de la clé privée du serveur web sur le HSM.
-
AWS CloudHSM Cluster actif avec au moins deux modules de sécurité matériels (HSMs) sur lesquels JCE for Client SDK 5 est installé et configuré.
Note
Vous pouvez utiliser un seul cluster HSM, 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 SDK client 5.
Comment répondre aux prérequis
-
Installez et configurez le JCE 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, consultez JCE for Client 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 la CLI CloudHSM pour créer un utilisateur de chiffrement (CU). Pour plus d'informations sur la gestion des utilisateurs HSM, consultez la section Gestion des utilisateurs HSM avec la CLI CloudHSM.
Astuce
Conservez le nom d'utilisateur et le mot de passe du CU. Vous en aurez besoin plus tard pour générer ou importer la clé privée HTTPS et le certificat de votre serveur web.
Pour configurer JCE avec Java Keytool, suivez les instructions de Utilisez le SDK client 5 pour intégrer AWS CloudHSM Java Keytool et Jarsigner.
Une fois que vous avez terminé ces étapes, consultez Étape 2 : importer ou générer une clé privée et un certificat SSL/TLS.
Remarques
-
Pour utiliser Security-Enhanced Linux (SELinux) et les serveurs Web, vous devez autoriser les connexions TCP sortantes sur le port 2223, qui est le port utilisé par le SDK client 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 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 plusieurs HSM à votre cluster. Pour de plus amples informations, veuillez consulter Ajouter un HSM à un AWS CloudHSM cluster.
-
Vous pouvez utiliser un SSH ou PuTTY pour vous connecter à votre instance client. Pour plus d'informations, consultez Connexion à votre instance Linux à l'aide de SSH ou Connexion à votre instance Linux depuis Windows à l'aide de PuTTY dans la documentation Amazon EC2.
É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 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 dans un HSM de votre cluster. AWS CloudHSM AWS CloudHSM
Note
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.
Vous créez un AWS CloudHSM KeyStore fichier local qui contient une référence à votre clé privée sur le HSM et le certificat associé. Votre serveur Web utilise le AWS CloudHSM KeyStore fichier pour identifier la clé privée sur le HSM lors du déchargement SSL/TLS.
Générer une clé privée
Cette section explique comment générer une paire de clés à l'aide du JDK KeyTool from. Une fois qu'une paire de clés est générée dans le HSM, vous pouvez l'exporter sous forme de KeyStore fichier et générer le certificat correspondant.
En fonction de votre cas d'utilisation, vous pouvez générer une paire de clés RSA ou EC. Les étapes suivantes montrent comment générer une paire de clés RSA.
Utilisez la genkeypair
commande in KeyTool pour générer une paire de clés RSA
Après avoir remplacé les informations
<VARIABLES>
ci-dessous par 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 à votre clé privée sur le HSM.$
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 le HSM. Cet alias sera défini comme attribut LABEL pour 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, SHA1with RSA, SHA224with RSA, SHA256with RSA et SHA384with RSA). SHA512with
-
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 clés RSA.
$
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 é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 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é les informations
<VARIABLES>
ci-dessous par vos données spécifiques, exécutez la commande suivante pour signer votre CSR avec votre clé privée sur votre HSM. 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é les informations
<VARIABLES>
ci-dessous par vos données spécifiques, exécutez la commande suivante pour importer un certificat signé en tant que certificat fiable. 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 PEM. Le fichier PEM 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 votre configuration de logiciel serveur web pour utiliser le certificat HTTPS et le fichier PEM correspondant que vous avez créé à l'étape précédente. N'oubliez pas de sauvegarder vos certificats et clés existants avant de commencer. Cela permettra de terminer la configuration de votre logiciel serveur web Linux pour le déchargement SSL/TLS avec AWS CloudHSM. Pour plus d'informations, consultez Référence de configuration Apache Tomcat 9
Arrêtez le server.
Après avoir remplacé ce qui
<VARIABLES>
suit par 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 Tomcat
-
Connectez-vous à votre instance client .
-
Localisez le dossier d'installation de Tomcat.
-
Après avoir remplacé ce qui
<VARIABLES>
suit par vos données spécifiques, utilisez la commande suivante pour ajouter la bibliothèque Java et le chemin AWS CloudHSM Java dans Tomcatclasspath, situés dans le Tomcat/bin/catalina fichier .sh.$
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 la bibliothèque Java JRE.<TOMCAT PATH>
: dossier d'installation de Tomcat.
Ajoutez un connecteur HTTPS dans la configuration du serveur.
Accédez au dossier d'installation de Tomcat.
Après avoir remplacé les informations
<VARIABLES>
ci-dessous par vos données spécifiques, utilisez la commande suivante pour ajouter un connecteur HTTPS afin d'utiliser les certificats générés dans les conditions préalables :$
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 le HSM. Cet alias sera défini comme attribut LABEL pour la clé.<TOMCAT PATH>
: chemin d'accès à votre dossier Tomcat.
Démarrez le serveur
Après avoir remplacé les données
<VARIABLES>
ci-dessous par 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 le trafic HTTPS et vérifier le certificat.
Étape 4 : Activer le trafic HTTPS et vérifier le certificat
Après avoir configuré votre serveur Web pour le déchargement SSL/TLS avec AWS CloudHSM, ajoutez votre instance de serveur Web à un groupe de sécurité qui autorise le trafic HTTPS entrant. Cela permet aux clients, tels que les navigateurs Web, d'établir une connexion HTTPS avec votre serveur Web. Établissez ensuite une connexion HTTPS avec votre serveur Web et vérifiez qu'il utilise le certificat que vous avez configuré pour le déchargement SSL/TLS. AWS CloudHSM
Rubriques
Activation des connexions HTTPS entrantes
Pour vous connecter à votre serveur web à partir d'un client (par exemple, un navigateur web), créez un groupe de sécurité qui autorise les connexions HTTPS entrantes. En particulier, il doit autoriser les connexions TCP entrantes sur le port 443. Affectez ce groupe de sécurité à votre serveur web.
Pour créer un groupe de sécurité pour le protocole HTTPS et l'affecter à 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 le VPC, choisissez le VPC qui contient l'instance Amazon de votre serveur Web. EC2
-
Sélectionnez Ajouter une règle.
-
Pour Type, sélectionnez HTTPS 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 Groupes de sécurité associés, veuillez consulter la zone de recherche, puis choisissez le groupe de sécurité que vous avez créé pour HTTPS. Ensuite, choisissez Ajouter des groupes de sécurité.
-
Sélectionnez Save.
Vérification que le protocole HTTPS utilise le certificat que vous avez configuré
Après avoir ajouté le serveur Web à un groupe de sécurité, vous pouvez vérifier que le déchargement SSL/TLS utilise votre certificat auto-signé. Vous pouvez faire cela à l'aide d'un navigateur web ou avec un outil tel qu'OpenSSL s_client
Pour vérifier le déchargement SSL/TLS à l'aide d'un navigateur web
-
Utilisez un navigateur web pour vous connecter à votre serveur web à l'aide du nom DNS public ou de l'adresse IP du serveur. Assurez-vous que l'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 service DNS 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 service DNS.
-
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 certificat SSL/TLS est celui que vous avez configuré votre serveur web à utiliser.
Pour vérifier le déchargement SSL/TLS avec OpenSSL s_client
-
Exécutez la commande OpenSSL suivante pour vous connecter à votre serveur web en utilisant le protocole HTTPS.
<server name>
Remplacez-le par le nom DNS public ou l'adresse IP de votre serveur Web.openssl s_client -connect
<server name>
:443Astuce
Vous pouvez utiliser un service DNS 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 service DNS.
-
Assurez-vous que le certificat SSL/TLS est celui que vous avez configuré votre serveur web à utiliser.
Vous disposez maintenant d'un site web sécurisé avec HTTPS. La clé privée du serveur Web est stockée dans un HSM de votre AWS CloudHSM cluster.
Pour ajouter un équilibreur de charge, veuillez consulter Ajoutez un équilibreur de charge avec Elastic Load Balancing pour AWS CloudHSM(facultatif).