Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AWS CloudHSM SSL/TLSOffload auf Linux mit Tomcat mit JSSE
Dieses Thema enthält step-by-step Anweisungen zum SSL TLS Einrichten/Auslagern mithilfe der Java Secure Socket Extension (JSSE) mit der. AWS CloudHSM JCE SDK
Themen
Übersicht
In AWS CloudHSM, Tomcat-Webserver funktionieren unter Linux zur Unterstützung. HTTPS Das AWS CloudHSM JCE SDK bietet eine Schnittstelle, die mit JSSE (Java Secure Socket Extension) verwendet werden kann, um die Verwendung von HSMs für solche Webserver zu ermöglichen. AWS CloudHSM JCEist die Brücke, die eine Verbindung JSSE zu Ihrem AWS HSM Cloud-Cluster herstellt. JSSEist ein Java API für die Protokolle Secure Sockets Layer (SSL) und Transport Layer Security (TLS).
Schritt 1: Einrichten der Voraussetzungen
Erfüllen Sie diese Voraussetzungen, um einen Tomcat-Webserver mit AWS CloudHSM zum SSL/TLS offload on Linux. These prerequisites must be met to set up web server SSL/TLS Offload mit Client SDK 5 und einem Tomcat-Webserver zu verwenden.
Anmerkung
Verschiedene Plattformen erfordern unterschiedliche Voraussetzungen. Folgen Sie immer den richtigen Installationsschritten für Ihre Plattform.
Voraussetzungen
-
Eine EC2 Amazon-Instance, auf der ein Linux-Betriebssystem mit einem installierten Tomcat-Webserver ausgeführt wird.
-
Ein Krypto-Benutzer (CU), der den privaten Schlüssel des Webservers besitzt und verwaltet. HSM
-
Ein aktiver AWS CloudHSM Cluster mit mindestens zwei Hardware-Sicherheitsmodulen (HSMs), die JCEfür Client SDK 5 installiert und konfiguriert wurden.
Anmerkung
Sie können einen einzelnen HSM Cluster verwenden, müssen aber zuerst die Haltbarkeit der Client-Schlüssel deaktivieren. Weitere Informationen finden Sie unter Einstellungen für die Haltbarkeit von Client-Schlüsseln verwalten und unter Client SDK 5-Konfigurationstool.
Wie erfüllt man die Voraussetzungen
-
Installieren und konfigurieren Sie das JCE for AWS CloudHSM auf einem aktiven AWS CloudHSM Cluster mit mindestens zwei Hardware-Sicherheitsmodulen (HSMs). Weitere Informationen zur Installation finden Sie unter JCEfür Client SDK 5.
-
Folgen Sie auf einer EC2 Linux-Instance, die Zugriff auf Ihren AWS CloudHSM Cluster hat, den Apache Tomcat-Anweisungen
, um den Tomcat-Webserver herunterzuladen und zu installieren. -
Verwenden Sie Cloud HSM CLI, um einen Crypto-Benutzer (CU) zu erstellen. Weitere Informationen zur Verwaltung von HSM Benutzern finden Sie unter HSMBenutzer mit Cloud verwalten HSM CLI.
Tipp
Merken Sie sich den CU-Benutzernamen und das Passwort. Sie benötigen sie später, wenn Sie den HTTPS privaten Schlüssel und das Zertifikat für Ihren Webserver generieren oder importieren.
Folgen Sie zur Einrichtung JCE mit Java Keytool den Anweisungen unterVerwenden Sie Client SDK 5 zur Integration AWS CloudHSM mit Java Keytool und Jarsigner.
Nachdem Sie diese Schritte abgeschlossen haben, fahren Sie mit Schritt 2: Generieren oder importieren Sie einen privaten Schlüssel SSL und/oder ein TLS Zertifikat fort.
Hinweise
-
Um Security-Enhanced Linux (SELinux) und Webserver zu verwenden, müssen Sie ausgehende TCP Verbindungen auf Port 2223 zulassen, dem Port, den Client SDK 5 für die Kommunikation mit dem verwendet. HSM
-
Um einen Cluster zu erstellen und zu aktivieren und einer EC2 Instanz Zugriff auf den Cluster zu gewähren, führen Sie die Schritte unter Erste Schritte mit aus. AWS CloudHSM Dieser Abschnitt enthält step-by-step Anweisungen zum Erstellen eines aktiven Clusters mit einer HSM und einer EC2 Amazon-Client-Instance. Sie können diese Client-Instance als Ihren Webserver verwenden.
-
Um zu vermeiden, dass die Haltbarkeit von Client-Schlüsseln beeinträchtigt wird, fügen Sie Ihrem Cluster mehrere HSM hinzu. Weitere Informationen finden Sie unter Zu einem HSM AWS CloudHSM Cluster hinzufügen.
-
Um eine Verbindung zu Ihrer Client-Instance herzustellen, können Sie SSH oder Pu TTY verwenden. Weitere Informationen finden Sie in der EC2 Amazon-Dokumentation unter Herstellen einer Verbindung zu Ihrer Linux-Instance mithilfe von SSH oder Herstellen einer Verbindung zu Ihrer Linux-Instance unter Windows mithilfe von Pu TTY.
Schritt 2: Generieren oder importieren Sie einen privaten Schlüssel SSL und/oder ein TLS Zertifikat
Zur Aktivierung HTTPS benötigt Ihre Tomcat-Webserver-Anwendung einen privaten Schlüssel und einen entsprechenden SSL/TLS certificate. To use web server SSL/TLS Offload mit AWS CloudHSM, Sie müssen den privaten Schlüssel in einem HSM in Ihrem Cluster speichern. AWS CloudHSM
Anmerkung
Wenn Sie noch keinen privaten Schlüssel und kein entsprechendes Zertifikat haben, generieren Sie einen privaten Schlüssel in einem. HSM Sie verwenden den privaten Schlüssel, um eine Zertifikatsignieranforderung (CSR) zu erstellen, mit der Sie das TLS ZertifikatSSL/erstellen.
Sie erstellen eine lokale AWS CloudHSM KeyStore Datei, die einen Verweis auf Ihren privaten Schlüssel HSM und das zugehörige Zertifikat enthält. Ihr Webserver verwendet die AWS CloudHSM KeyStore Datei, um den privaten Schlüssel HSM während SSL TLS /Offload zu identifizieren.
Generieren eines privaten Schlüssels
In diesem Abschnitt erfahren Sie, wie Sie mit dem Befehl from ein Schlüsselpaar generieren. KeyTool JDK Sobald Sie ein key pair in der generiert habenHSM, können Sie es als KeyStore Datei exportieren und das entsprechende Zertifikat generieren.
Abhängig von Ihrem Anwendungsfall können Sie entweder ein RSA oder ein EC-Schlüsselpaar generieren. Die folgenden Schritte zeigen, wie Sie ein RSA key pair generieren.
Verwenden Sie den genkeypair
Befehl in KeyTool , um ein RSA key pair zu generieren
Nach dem Ersetzen des
<VARIABLES>
Verwenden Sie im Folgenden mit Ihren spezifischen Daten den folgenden Befehl, um eine Keystore-Datei mit dem Namen zu generierenjsse_keystore.keystore
, die einen Verweis auf Ihren privaten Schlüssel enthält. 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>
: Der Pfad, in dem Sie Ihre Keystore-Datei generieren möchten.<UNIQUE ALIAS FOR KEYS>
: Dies wird verwendet, um Ihren Schlüssel auf dem eindeutig zu identifizieren. HSM Dieser Alias wird als LABEL Attribut für den Schlüssel festgelegt.<KEY PASSWORD>
: Wir speichern den Verweis auf Ihren Schlüssel in der lokalen Keystore-Datei, und dieses Passwort schützt diesen lokalen Verweis.<KEYSTORE PASSWORD>
: Dies ist das Passwort für Ihre lokale Keystore-Datei.<JSSE KEYSTORE NAME>
: Name der Keystore-Datei.<CERT DOMAIN NAME>
: X.500 Eindeutiger Name.<KEY ALGORITHM>
: Schlüsselalgorithmus zur Generierung key pair (zum Beispiel RSA und EC).<KEY SIZE>
: Schlüsselgröße zum Generieren des key pair (z. B. 2048, 3072 und 4096).<SIGN ALGORITHM>
: Schlüsselgröße zum Generieren des key pair (z. B. SHA1withRSASHA224withRSA,SHA256withRSA,SHA384withRSA, undSHA512withRSA).
-
Um zu bestätigen, dass der Befehl erfolgreich war, geben Sie den folgenden Befehl ein und überprüfen Sie, ob Sie erfolgreich ein RSA key pair generiert haben.
$
ls
<PATH>
/<JSSE KEYSTORE NAME>
.keystore
Generieren eines selbstsignierten Zertifikats
Nachdem Sie zusammen mit der Keystore-Datei einen privaten Schlüssel generiert haben, können Sie diese Datei verwenden, um eine Zertifikatsignieranforderung (CSR) und ein Zertifikat zu generieren.
In einer Produktionsumgebung verwenden Sie normalerweise eine Zertifizierungsstelle (CA), um ein Zertifikat aus einem zu erstellen. CSR Für eine Testumgebung ist keine CA erforderlich. Wenn Sie eine Zertifizierungsstelle verwenden, senden Sie die CSR Datei an sie und verwenden Sie das signierte TLS ZertifikatSSL/, für das sie Ihnen auf Ihrem Webserver zur Verfügung stellenHTTPS.
Als Alternative zur Verwendung einer Zertifizierungsstelle können Sie die verwenden, KeyTool um ein selbstsigniertes Zertifikat zu erstellen. Selbstsignierte Zertifikate sind nicht vertrauenswürdig für Browser und sollten in Produktionsumgebungen nicht verwendet werden. Sie können in Testumgebungen verwendet werden.
Warnung
Selbstsignierte Zertifikate sollten nur in einer Testumgebung verwendet werden. Für eine Produktionsumgebung, verwenden Sie eine sicherere Methode, wie z. B. eine Zertifikatstelle, um ein Zertifikat zu erstellen.
Themen
Generieren eines Zertifikats
-
Besorgen Sie sich eine Kopie Ihrer Keystore-Datei, die in einem früheren Schritt generiert wurde.
-
Führen Sie den folgenden Befehl aus, um mit dem eine Zertifikatsignieranforderung KeyTool zu erstellen (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>
Anmerkung
Die Ausgabedatei der Zertifikatssignierungsanforderung ist
certreq.csr
.
Ein Zertifikat signieren
-
Nach dem Ersetzen des
<VARIABLES>
Führen Sie unten mit Ihren spezifischen Daten den folgenden Befehl aus, um Sie CSR mit Ihrem privaten Schlüssel auf Ihrem zu signierenHSM. Dadurch wird ein selbstsigniertes Zertifikat erstellt.$
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.keystoreAnmerkung
certificate.crt
ist das signierte Zertifikat, das den privaten Schlüssel des Alias verwendet.
Ein Zertifikat in Keystore importieren
Nach dem Ersetzen des
<VARIABLES>
Führen Sie unten mit Ihren spezifischen Daten den folgenden Befehl aus, um ein signiertes Zertifikat als vertrauenswürdiges Zertifikat zu importieren. In diesem Schritt wird das Zertifikat in dem durch den Alias identifizierten Keystore-Eintrag gespeichert.$
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>
Konvertieren Sie ein Zertifikat in ein PEM
Führen Sie den folgenden Befehl aus, um die signierte Zertifikatsdatei (.crt) in eine zu konvertieren. PEM Die PEM Datei wird verwendet, um die Anfrage vom HTTP-Client zu senden.
$
openssl x509 -inform der -in certificate.crt -out certificate.pem
Nachdem Sie diese Schritte ausgeführt haben, fahren Sie mit Schritt 3: Konfigurieren des Webservers fort.
Schritt 3: Konfigurieren des Tomcat-Webservers
Aktualisieren Sie die Konfiguration Ihrer Webserver-Software, um das HTTPS Zertifikat und die entsprechende PEM Datei zu verwenden, die Sie im vorherigen Schritt erstellt haben. Denken Sie daran, Ihre vorhandenen Zertifikate und Schlüssel zu sichern, bevor Sie beginnen. Damit ist die Einrichtung Ihrer Linux-Webserver-Software für SSL TLS /offload with AWS CloudHSM abgeschlossen. Weitere Informationen finden Sie in der Konfigurationsreferenz für Apache Tomcat 9
Den Server beenden
Nach dem Austausch der
<VARIABLES>
Führen Sie unten mit Ihren spezifischen Daten den folgenden Befehl aus, um Tomcat Server zu beenden, bevor Sie die Konfiguration aktualisieren$
/
<TOMCAT DIRECTORY>
/bin/shutdown.sh<TOMCAT DIRECTORY>
: Ihr Tomcat-Installationsverzeichnis.
Aktualisieren Sie den Klassenpfad von Tomcat
-
Stellen Sie eine Verbindung mit Ihrer Client-Instance her.
-
Suchen Sie den Tomcat-Installationsordner.
-
Nach dem Austausch des
<VARIABLES>
Verwenden Sie unten mit Ihren spezifischen Daten den folgenden Befehl, um die Java-Bibliothek und den CloudHSM-Java-Pfad zum Tomcat-Klassenpfad hinzuzufügen, der sich in der SH-Datei befindet. 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>
: Speicherort der Java-Bibliothek. JRE<TOMCAT PATH>
: Tomcat-Installationsordner.
Fügen Sie der Serverkonfiguration einen HTTPS Connector hinzu.
Gehen Sie zum Tomcat-Installationsordner.
Nach dem Austausch des
<VARIABLES>
Verwenden Sie im Folgenden mit Ihren spezifischen Daten den folgenden Befehl, um einen HTTPS Connector für die Verwendung von Zertifikaten hinzuzufügen, die in den Voraussetzungen generiert wurden:$
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>
: Verzeichnis, in dem sich die Keystore-Datei befindet.<JSSE KEYSTORE NAME>
: Name der Keystore-Datei.<KEYSTORE PASSWORD>
: Dies ist das Passwort für Ihre lokale Keystore-Datei.<KEY PASSWORD>
: Wir speichern den Verweis auf Ihren Schlüssel in der lokalen Keystore-Datei, und dieses Passwort schützt diese lokale Referenz.<UNIQUE ALIAS FOR KEYS>
: Dies wird verwendet, um Ihren Schlüssel auf der eindeutig zu identifizieren. HSM Dieser Alias wird als LABEL Attribut für den Schlüssel festgelegt.<TOMCAT PATH>
: Der Pfad zu Ihrem Tomcat-Ordner.
Starten des Servers
Nach dem Ersetzen des
<VARIABLES>
Verwenden Sie im Folgenden mit Ihren spezifischen Daten den folgenden Befehl, um Tomcat Server zu starten:$
/
<TOMCAT DIRECTORY>
/bin/startup.shAnmerkung
<TOMCAT DIRECTORY>
ist der Name Ihres Tomcat-Installationsverzeichnisses.
Nachdem Sie Ihre Webserverkonfiguration aktualisiert haben, gehen Sie zu Schritt 4: Aktivieren Sie HTTPS den Datenverkehr und überprüfen Sie das Zertifikat.
Schritt 4: Aktivieren Sie HTTPS den Datenverkehr und überprüfen Sie das Zertifikat
Nachdem Sie Ihren Webserver fürSSL/TLSoffload with konfiguriert haben AWS CloudHSM, fügen Sie Ihre Webserver-Instanz einer Sicherheitsgruppe hinzu, die HTTPS eingehenden Datenverkehr zulässt. Dadurch können Clients, wie z. B. Webbrowser, eine HTTPS Verbindung mit Ihrem Webserver herstellen. Stellen Sie dann eine HTTPS Verbindung zu Ihrem Webserver her und stellen Sie sicher, dass er das Zertifikat verwendet, das Sie für SSL TLS /Offload mit AWS CloudHSM konfiguriert haben.
Themen
Aktivieren Sie eingehende Verbindungen HTTPS
Um von einem Client (z. B. einem Webbrowser) aus eine Verbindung zu Ihrem Webserver herzustellen, erstellen Sie eine Sicherheitsgruppe, die eingehende HTTPS Verbindungen zulässt. Insbesondere sollte sie eingehende TCP Verbindungen auf Port 443 zulassen. Weisen Sie diese Sicherheitsgruppe Ihrem Webserver zu.
Um eine Sicherheitsgruppe für Ihren Webserver zu erstellen HTTPS und sie diesem zuzuweisen
-
Öffnen Sie die EC2 Amazon-Konsole unter https://console.aws.amazon.com/ec2/
. -
Wählen Sie im Navigationsbereich Sicherheitsgruppen aus.
-
Wählen Sie Sicherheitsgruppe erstellen.
-
Führen Sie für Sicherheitsgruppe erstellen die folgenden Schritte aus:
-
Geben Sie in das Feld Sicherheitsgruppenname einen Namen für die Sicherheitsgruppe ein, die Sie erstellen.
-
(Optional) Geben Sie eine Beschreibung der Sicherheitsgruppe ein, die Sie erstellen.
-
Wählen Sie für die VPC, VPC die Ihre EC2 Webserver-Amazon-Instance enthält.
-
Wählen Sie Regel hinzufügen aus.
-
Wählen Sie unter Typ eine Option HTTPSaus dem Dropdown-Fenster aus.
-
Geben Sie für Quelle einen Quellspeicherort ein.
-
Wählen Sie Sicherheitsgruppe erstellen aus.
-
-
Wählen Sie im Navigationsbereich Instances aus.
-
Aktivieren Sie das Kontrollkästchen neben Ihrer Webserver-Instance.
-
Wählen Sie das Drop-down-Menü Aktionen oben auf der Seite. Wählen Sie Sicherheit und dann Sicherheitsgruppen ändern aus.
-
Wählen Sie unter Zugeordnete Sicherheitsgruppen das Suchfeld aus und wählen Sie die Sicherheitsgruppe aus, für die Sie erstellt habenHTTPS. Wählen Sie dann Sicherheitsgruppen hinzufügen aus.
-
Wählen Sie Speichern.
Stellen Sie sicher, dass das von Ihnen konfigurierte Zertifikat HTTPS verwendet wird
Nachdem Sie den Webserver zu einer Sicherheitsgruppe hinzugefügt haben, können Sie überprüfen, ob SSL TLS /offload Ihr selbstsigniertes Zertifikat verwendet. Sie können dies mit einem Webbrowser oder mit einem Tool wie Open s_client tun. SSL
Zur SSL TLS Verifizierung/zum Ausladen mit einem Webbrowser
-
Verwenden Sie einen Webbrowser, um über den öffentlichen DNS Namen oder die IP-Adresse des Servers eine Verbindung zu Ihrem Webserver herzustellen. Stellen Sie sicher, dass das URL in der Adressleiste mit https://beginnt. Beispiel,
https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/
.Tipp
Sie können einen DNS Service wie Amazon Route 53 verwenden, um den Domainnamen Ihrer Website (z. B. https://www.example.com/) an Ihren Webserver weiterzuleiten. Weitere Informationen finden Sie unter Routing Traffic to an Amazon EC2 Instance im Amazon Route 53 Developer Guide oder in der Dokumentation zu Ihrem DNS Service.
-
Zeigen Sie das Webserverzertifikat mit Ihrem Webbrowser an. Weitere Informationen finden Sie hier:
-
Wenn Sie Mozilla Firefox nutzen, sehen Sie sich die Informationen auf der Mozilla Support-Website unter Zertifikat anzeigen
an. -
Wenn Sie Google Chrome verwenden, sehen Sie sich die Informationen auf der „Google Tools für Web Developers“-Website unter Sicherheitsprobleme verstehen
an.
Andere Webbrowser unterstützen möglicherweise ähnliche Funktionen, über die Sie das Webserverzertifikat anzeigen können.
-
-
Stellen Sie sicher, dass das TLS ZertifikatSSL/das ist, für dessen Verwendung Sie Ihren Webserver konfiguriert haben.
UmSSL//TLSoffload mit Open SSL s_client zu verifizieren
-
Führen Sie den folgenden SSL Open-Befehl aus, um eine Verbindung zu Ihrem Webserver herzustellen. HTTPS Ersetzen
<server name>
mit dem öffentlichen DNS Namen oder der IP-Adresse Ihres Webservers.openssl s_client -connect
<server name>
:443Tipp
Sie können einen DNS Service wie Amazon Route 53 verwenden, um den Domainnamen Ihrer Website (z. B. https://www.example.com/) an Ihren Webserver weiterzuleiten. Weitere Informationen finden Sie unter Routing Traffic to an Amazon EC2 Instance im Amazon Route 53 Developer Guide oder in der Dokumentation zu Ihrem DNS Service.
-
Stellen Sie sicher, dass das TLS ZertifikatSSL/das ist, für dessen Verwendung Sie Ihren Webserver konfiguriert haben.
Sie haben jetzt eine Website, mit der gesichert istHTTPS. Der private Schlüssel für den Webserver wird in einem HSM in Ihrem AWS CloudHSM Cluster gespeichert.
Informationen zum Hinzufügen eines Load Balancers finden Sie unter Fügen Sie einen Load Balancer mit Elastic Load Balancing für hinzu AWS CloudHSM(optional).