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/TLS-Offload unter Linux mit Tomcat mit JSSE
Dieses Thema enthält step-by-step Anweisungen zum Einrichten von SSL/TLS-Offload mithilfe der Java Secure Socket Extension (JSSE) mit dem JCE SDK. AWS CloudHSM
Themen
Übersicht
In AWS CloudHSM: Tomcat-Webserver funktionieren unter Linux und unterstützen 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 JCE ist die Brücke, die JSSE mit Ihrem AWS CloudHSM CloudHSM-Cluster verbindet. JSSE ist eine Java-API für Secure Sockets Layer (SSL) und Transport Layer Security (TLS).
Schritt 1: Einrichten der Voraussetzungen
Erfüllen Sie diese Voraussetzungen, um einen Tomcat-Webserver AWS CloudHSM für den SSL/TLS offload on Linux. These prerequisites must be met to set up web server SSL/TLS Offload mit Client SDK 5 und einen 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 Crypto-Benutzer (CU), der den privaten Schlüssel des Webservers auf dem HSM besitzen und verwalten soll.
-
Ein aktiver AWS CloudHSM Cluster mit mindestens zwei Hardware-Sicherheitsmodulen (HSMs), auf denen JCE for Client SDK 5 installiert und konfiguriert ist.
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 Client-SDK 5 Configure Tool.
Wie erfüllt man die Voraussetzungen
-
Installieren und konfigurieren Sie das JCE für AWS CloudHSM auf einem aktiven AWS CloudHSM Cluster mit mindestens zwei Hardware-Sicherheitsmodulen ()HSMs. Weitere Informationen zur Installation finden Sie unter JCE fü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 die CloudHSM-CLI, um einen Crypto-Benutzer (CU) zu erstellen. Weitere Informationen zur Verwaltung von HSM-Benutzern finden Sie unter HSM-Benutzer mit der CloudHSM-CLI verwalten.
Tipp
Merken Sie sich den CU-Benutzernamen und das Passwort. Sie benötigen sie später beim Generieren oder Importieren des privaten HTTPS-Schlüssels und -Zertifikats für Ihren Webserver.
Folgen Sie den Anweisungen unter Verwenden Sie Client SDK 5 zur Integration AWS CloudHSM mit Java Keytool und Jarsigner, um JCE mit Java Keytool einzurichten.
Nachdem Sie diese Schritte abgeschlossen haben, fahren Sie mit Schritt 2: Generieren oder Importieren eines privaten Schlüssels und SSL/TLS-Zertifikats fort.
Hinweise
-
Um Security-Enhanced Linux (SELinux) und Webserver zu verwenden, müssen Sie ausgehende TCP-Verbindungen an Port 2223 zulassen, dem Port, den Client SDK 5 für die Kommunikation mit dem HSM verwendet.
-
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 einem 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 deaktiviert wird, fügen Sie Ihrem Cluster mehr als ein HSM hinzu. Weitere Informationen finden Sie unter Zu einem HSM AWS CloudHSM Cluster hinzufügen.
-
Um sich mit Ihrer Client-Instance zu verbinden, können Sie SSH oder PuTTY verwenden. Weitere Informationen finden Sie in der EC2Amazon-Dokumentation unter Herstellen einer Verbindung zu Ihrer Linux-Instance mithilfe von SSH oder Herstellen einer Verbindung zu Ihrer Linux-Instance von Windows aus mithilfe von PuTTY.
Schritt 2: Generieren oder Importieren eines privaten Schlüssels und SSL/TLS-Zertifikats
Um HTTPS zu aktivieren, benötigt Ihre Tomcat-Webserver-Anwendung einen privaten Schlüssel und einen entsprechenden SSL/TLS certificate. To use web server SSL/TLS Offload. Sie müssen den privaten Schlüssel in einem HSM in Ihrem Cluster speichern. AWS CloudHSM AWS CloudHSM
Anmerkung
Wenn Sie noch nicht über einen privaten Schlüssel und ein entsprechendes Zertifikat verfügen, generieren Sie einen privaten Schlüssel in einem HSM. Sie verwenden den privaten Schlüssel, um eine Zertifikatsignierungsanforderung (CSR) zu erstellen, mit der Sie das SSL/TLS-Zertifikat erstellen.
Sie erstellen eine lokale AWS CloudHSM KeyStore Datei, die einen Verweis auf Ihren privaten Schlüssel auf dem HSM und das zugehörige Zertifikat enthält. Ihr Webserver verwendet die AWS CloudHSM KeyStore Datei, um den privaten Schlüssel auf dem HSM während des SSL/TLS-Offloads zu identifizieren.
Generieren eines privaten Schlüssels
In diesem Abschnitt erfahren Sie, wie Sie mit dem KeyTool From JDK ein key pair generieren. Sobald Sie ein key pair im HSM generiert haben, können Sie es als KeyStore Datei exportieren und das entsprechende Zertifikat generieren.
Je nach Anwendungsfall können Sie entweder ein RSA- oder ein EC-Schlüsselpaar generieren. Im Folgenden wird beschrieben, wie Sie ein RSA-Schlüsselpaar generieren.
Verwenden Sie den genkeypair
Befehl in KeyTool , um ein RSA-Schlüsselpaar zu generieren
Nachdem Sie die
<VARIABLES>
folgenden Daten durch Ihre spezifischen Daten ersetzt haben, verwenden Sie den folgenden Befehl, um eine Keystore-Datei mit dem Namen zu generierenjsse_keystore.keystore
, die eine Referenz Ihres privaten Schlüssels auf dem HSM enthält.$
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 HSM eindeutig zu identifizieren. 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 diese lokale Referenz.<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 (z. B. RSA und EC).<KEY SIZE>
: Schlüsselgröße zur Generierung des key pair (z. B. 2048, 3072 und 4096).<SIGN ALGORITHM>
: Schlüsselgröße zur Generierung des key pair (z. B. RSA, SHA1with RSA, SHA224with RSA, SHA256with RSA und SHA384with RSA). SHA512with
-
Um zu bestätigen, dass der Befehl erfolgreich war, geben Sie den folgenden Befehl ein und überprüfen Sie, ob Sie erfolgreich ein RSA-Schlüsselpaar 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 Certificate Signing Request (CSR) und ein Zertifikat zu generieren.
In einer Produktionsumgebung verwenden Sie in der Regel eine Zertifikatsstelle (CA) zum Erstellen eines Zertifikats aus einer CSR. Für eine Testumgebung ist keine CA erforderlich. Wenn Sie eine Zertifizierungsstelle verwenden, senden Sie ihnen die CSR-Datei und verwenden Sie das signierte SSL/TLS-Zertifikat, das sie Ihnen auf Ihrem Webserver für HTTPS zur Verfügung stellen.
Als Alternative zur Verwendung einer Zertifizierungsstelle können Sie die verwenden, um ein selbstsigniertes Zertifikat KeyTool 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 (CSR) KeyTool zu erstellen.
$
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
-
Nachdem
<VARIABLES>
Sie die folgenden Daten durch Ihre spezifischen Daten ersetzt haben, führen Sie den folgenden Befehl aus, um Ihre CSR mit Ihrem privaten Schlüssel auf Ihrem HSM zu signieren. 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
Nachdem
<VARIABLES>
Sie das Folgende durch Ihre spezifischen Daten ersetzt haben, führen Sie 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>
Konvertiert ein Zertifikat in ein PEM
Führen Sie den folgenden Befehl aus, um die signierte Zertifikatsdatei (
.crt
) in eine PEM-Datei zu konvertieren. 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 schließen Sie die Einrichtung Ihrer Linux-Webserver-Software für SSL/TLS-Auslagerung mit AWS CloudHSM ab. Weitere Informationen finden Sie in der Konfigurationsreferenz für Apache Tomcat 9
Den Server beenden
Nachdem
<VARIABLES>
Sie die folgenden Daten durch Ihre spezifischen Daten ersetzt haben, führen Sie 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 Tomcat-Klassenpfad
-
Stellen Sie eine Verbindung mit Ihrer Client-Instance her.
-
Suchen Sie den Tomcat-Installationsordner.
-
Nachdem
<VARIABLES>
Sie das Folgende durch Ihre spezifischen Daten ersetzt haben, verwenden Sie den folgenden Befehl, um die Java-Bibliothek und AWS CloudHSM den Java-Pfad in Tomcat hinzuzufügenclasspath, die sich in der SH-Datei befinden. 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 JRE-Bibliothek.<TOMCAT PATH>
: Tomcat-Installationsordner.
Fügen Sie der Serverkonfiguration einen HTTPS-Connector hinzu.
Gehen Sie zum Tomcat-Installationsordner.
Nachdem
<VARIABLES>
Sie die folgenden Daten durch Ihre spezifischen Daten ersetzt haben, verwenden Sie den folgenden Befehl, um einen HTTPS-Connector hinzuzufügen, um Zertifikate zu verwenden, 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 dem HSM eindeutig zu identifizieren. Dieser Alias wird als LABEL-Attribut für den Schlüssel festgelegt.<TOMCAT PATH>
: Der Pfad zu Ihrem Tomcat-Ordner.
Starten des Servers
Nachdem
<VARIABLES>
Sie das Folgende durch Ihre spezifischen Daten ersetzt haben, verwenden Sie 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 von HTTPS-Datenverkehr und Verifizieren des Zertifikats.
Schritt 4: Aktivieren von HTTPS-Datenverkehr und Verifizieren des Zertifikats
Nachdem Sie Ihren Webserver für den SSL/TLS-Offload mit konfiguriert haben AWS CloudHSM, fügen Sie Ihre Webserver-Instanz einer Sicherheitsgruppe hinzu, die eingehenden HTTPS-Verkehr 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, mit dem Sie für den SSL/TLS-Offload konfiguriert haben. AWS CloudHSM
Themen
Aktivieren von eingehenden HTTPS-Verbindungen
Zum Herstellen einer Verbindung zu Ihrem Webserver von einem Client (z. B. ein Webbrowser) aus, erstellen Sie eine Sicherheitsgruppe, die eingehende HTTPS-Verbindungen zulässt. Insbesondere sollten eingehende TCP-Verbindungen auf Port 443 erlaubt werden. Weisen Sie diese Sicherheitsgruppe Ihrem Webserver zu.
So erstellen Sie eine Sicherheitsgruppe für HTTPS und weisen sie Ihrem Webserver zu
-
Ö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 VPC die VPC aus, die Ihre EC2 Webserver-Amazon-Instance enthält.
-
Wählen Sie Regel hinzufügen aus.
-
Wählen Sie im Drop-down-Fenster für Typ die Option HTTPS 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, die Sie für HTTPS erstellt haben, aus. Wählen Sie dann Sicherheitsgruppen hinzufügen aus.
-
Wählen Sie Speichern.
Verifizieren, dass HTTPS das konfigurierte Zertifikat verwendet
Nachdem Sie den Webserver zu einer Sicherheitsgruppe hinzugefügt haben, können Sie überprüfen, ob der SSL/TLS-Offload Ihr selbstsigniertes Zertifikat verwendet. Sie können dazu einen Webbrowser oder ein Tool wie OpenSSL s_client
So überprüfen Sie die SSL/TLS-Auslagerung mit einem Webbrowser
-
Verwenden Sie einen Web-Browser, um eine Verbindung zum Webserver unter Verwendung des öffentlichen DNS-Namen oder der IP-Adresse des Servers herzustellen. Stellen Sie sicher, dass die URL in die Adresszeile mit https:// beginnt. Beispiel,
https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/
.Tipp
Sie können einen DNS-Dienst 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 SSL/TLS-Zertifikat dasjenige ist, das Sie für die Nutzung in Ihrem Webserver konfiguriert haben.
So überprüfen Sie die SSL/TLS-Auslagerung mit OpenSSL s_client
-
Führen Sie den folgenden OpenSSL-Befehl aus, um mittels HTTPS eine Verbindung zu Ihrem Webserver herzustellen.
<server name>
Ersetzen Sie es durch den öffentlichen DNS-Namen oder die IP-Adresse Ihres Webservers.openssl s_client -connect
<server name>
:443Tipp
Sie können einen DNS-Dienst 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 SSL/TLS-Zertifikat dasjenige ist, das Sie für die Nutzung in Ihrem Webserver konfiguriert haben.
Sie verfügen jetzt über eine mit HTTPS gesicherte Website. 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).