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 NGINX oder mit OpenSSL Provider HAProxy
Dieses Thema enthält step-by-step Anweisungen zum Einrichten des SSL/TLS Server-Identity-Offloads AWS CloudHSM auf einem Linux-Webserver mit NGINX oder HAProxy mit dem OpenSSL Provider.
Themen
-Übersicht
Unter Linux sind NGINX
Um dieses Tutorial abzuschließen, müssen Sie NGINX konfigurieren oder HAProxy den AWS CloudHSM OpenSSL Provider verwenden. Das Tutorial zeigt Ihnen, wie Sie Folgendes tun können:
-
Installieren Sie die Webserver-Software auf einer EC2 Amazon-Instance.
-
Konfigurieren Sie die Webserver-Software so, dass sie HTTPS mit einem privaten Schlüssel unterstützt, der in Ihrem AWS CloudHSM -Cluster gespeichert ist.
-
(Optional) Verwenden Sie Amazon EC2 , um eine zweite Webserver-Instance zu erstellen, und Elastic Load Balancing, um einen Load Balancer zu erstellen. Mit einem Load Balancer kann die Leistung durch Verteilung der Arbeitslast auf mehrere Server gesteigert werden. Sie kann auch für Redundanz und eine höhere Verfügbarkeit sorgen, falls ein oder mehrere Webserver ausfallen.
Wenn Sie bereit sind, sehen Sie sich Schritt 1: Einrichten der Voraussetzungen an.
Schritt 1: Einrichten der Voraussetzungen
Verschiedene Plattformen erfordern unterschiedliche Voraussetzungen. Verwenden Sie den Abschnitt mit den Voraussetzungen unten, der zu Ihrer Plattform passt.
Voraussetzungen für AWS CloudHSM OpenSSL Provider
Um das Offload von SSL/TLS Webserver-Serveridentitäten mit AWS CloudHSM OpenSSL Provider for Client SDK 5 einzurichten, benötigen Sie Folgendes:
-
Ein aktiver AWS CloudHSM Cluster mit mindestens zwei Hardware-Sicherheitsmodulen (HSM)
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.
-
Eine EC2 Amazon-Instance, auf der ein Linux-Betriebssystem ausgeführt wird und die folgende Software installiert ist:
-
Ein Webserver (entweder NGINX oder) HAProxy
-
Der AWS CloudHSM OpenSSL-Anbieter für Client SDK 5
-
-
Ein Crypto-Benutzer (CU), der den privaten Schlüssel des Webservers auf dem HSM besitzen und verwalten soll.
So richten Sie eine Linux-Webserver-Instance auf dem HSM ein und erstellen einen CU
Anmerkung
Viele der Befehle in diesem Verfahren erfordern erhöhte Rechte. Abhängig von Ihrer Systemkonfiguration müssen Sie möglicherweise Befehle mit sudo oder als Root-Benutzer ausführen.
-
Installieren und konfigurieren Sie den AWS CloudHSM OpenSSL Provider für Client SDK 5. Weitere Informationen zur Installation des OpenSSL Providers finden Sie unter AWS CloudHSM OpenSSL Provider for Client SDK 5.
-
Installieren Sie auf einer EC2 Linux-Instance, die Zugriff auf Ihren Cluster hat, entweder NGINX oder einen Webserver: HAProxy
-
Verwenden Sie die CloudHSM-CLI, um einen Crypto-Benutzer 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.
Nachdem Sie diese Schritte abgeschlossen haben, fahren Sie mit Schritt 2: Generieren oder importieren Sie einen privaten Schlüssel und holen Sie sich ein Zertifikat 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 Die ersten Schritte bieten 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 Hinzufügen eines HSM zu einem Cluster AWS CloudHSM.
-
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 Sie einen privaten Schlüssel und holen Sie sich ein Zertifikat
Um HTTPS zu aktivieren, benötigt Ihre Webserver-Anwendung (NGINX oder HAProxy) einen privaten Schlüssel und ein entsprechendes SSL/TLS Zertifikat. Um das Auslagern von SSL/TLS Webserver-Serveridentitäten mit verwenden zu können AWS CloudHSM, müssen Sie den privaten Schlüssel in einem HSM in Ihrem Cluster speichern. AWS CloudHSM Sie generieren zunächst einen privaten Schlüssel und verwenden diesen Schlüssel, um eine Certificate Signing Request (CSR) zu erstellen. Anschließend exportieren Sie einen gefälschten privaten PEM-Schlüssel aus dem HSM. Dabei handelt es sich um eine private Schlüsseldatei im PEM-Format, die einen Verweis auf den privaten Schlüssel enthält, der auf dem HSM gespeichert ist (es ist nicht der eigentliche private Schlüssel). Ihr Webserver verwendet die gefälschte private PEM-Schlüsseldatei, um den privaten Schlüssel auf dem HSM beim Auslagern der Serveridentität zu identifizieren. SSL/TLS
Generieren eines privaten Schlüssels
In diesem Abschnitt erfahren Sie, wie Sie mithilfe der CloudHSM-CLI ein Schlüsselpaar generieren. Sobald Sie ein key pair im HSM generiert haben, können Sie es als gefälschte PEM-Datei exportieren und das entsprechende Zertifikat generieren.
Installieren und konfigurieren Sie die CloudHSM-CLI
-
Installieren und konfigurieren Sie die CloudHSM-CLI.
-
Verwenden Sie den folgenden Befehl, um die CloudHSM-CLI zu starten.
$/opt/cloudhsm/bin/cloudhsm-cli interactive -
Führen Sie den folgenden Befehl aus, um sich beim HSM anzumelden. Ersetzen Sie es
<user name>durch den Benutzernamen Ihres Krypto-Benutzersaws-cloudhsm>login --username<user name>--role crypto-user
Generieren eines privaten Schlüssels
Je nach Anwendungsfall können Sie entweder ein RSA- oder ein EC-Schlüsselpaar generieren. Führen Sie eine der folgenden Aktionen aus:
-
So erstellen Sie einen privaten RSA-Schlüssel in einem HSM
Verwenden Sie den key generate-asymmetric-pair rsa-Befehl, um ein RSA-Schlüsselpaar zu erzeugen. In diesem Beispiel wird ein RSA-Schlüsselpaar mit einem Modul von 2048, einem öffentlichen Exponenten von 65537, der Bezeichnung des öffentlichen Schlüssels von und der Bezeichnung des privaten Schlüssels von
tls_rsa_pubgeneriert.tls_rsa_privateaws-cloudhsm >key generate-asymmetric-pair rsa \ --public-exponent 65537 \ --modulus-size-bits 2048 \ --public-label tls_rsa_pub \ --private-label tls_rsa_private \ --private-attributes sign=true{ "error_code": 0, "data": { "public_key": { "key-reference": "0x0000000000280cc8", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "full" }, "attributes": { "key-type": "rsa", "label": "tls_rsa_pub", "id": "", "check-value": "0x01fe6e", "class": "public-key", "encrypt": true, "decrypt": false, "token": true, "always-sensitive": false, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": false, "sign": false, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 512, "public-exponent": "0x010001", "modulus": "0xb1d27e857a876f4e9fd5de748a763c539b359f937eb4b4260e30d1435485a732c878cdad9c72538e2215351b1d41358c9bf80b599c73a80fdb457aa7b20cd61e486c326e2cfd5e124a7f6a996437437812b542e3caf85928aa866f0298580f7967ee6aa01440297d7308fdd9b76b70d1b67f12634df6e6296d6c116d5744c6d60d14d3bf3cb978fe6b75ac67b7089bafd50d8687213b31abc7dc1bad422780d29c851d5102b56f932551eaf52a9591fd8c43d81ecc133022653225bd129f8491101725e9ea33e1ded83fb57af35f847e532eb30cd7e726f23910d2671c6364092e834697ec3cef72cc23615a1ba7c5e100156ae0acac3160f0ca9725d38318b7", "modulus-size-bits": 2048 } }, "private_key": { "key-reference": "0x0000000000280cc7", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "full" }, "attributes": { "key-type": "rsa", "label": "tls_rsa_private", "id": "", "check-value": "0x01fe6e", "class": "private-key", "encrypt": false, "decrypt": true, "token": true, "always-sensitive": true, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": true, "sign": true, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 1217, "public-exponent": "0x010001", "modulus": "0xb1d27e857a876f4e9fd5de748a763c539b359f937eb4b4260e30d1435485a732c878cdad9c72538e2215351b1d41358c9bf80b599c73a80fdb457aa7b20cd61e486c326e2cfd5e124a7f6a996437437812b542e3caf85928aa866f0298580f7967ee6aa01440297d7308fdd9b76b70d1b67f12634df6e6296d6c116d5744c6d60d14d3bf3cb978fe6b75ac67b7089bafd50d8687213b31abc7dc1bad422780d29c851d5102b56f932551eaf52a9591fd8c43d81ecc133022653225bd129f8491101725e9ea33e1ded83fb57af35f847e532eb30cd7e726f23910d2671c6364092e834697ec3cef72cc23615a1ba7c5e100156ae0acac3160f0ca9725d38318b7", "modulus-size-bits": 2048 } } } } -
So erstellen Sie einen privaten EC-Schlüssel in einem HSM
Verwenden Sie den key generate-asymmetric-pair ec-Befehl, um ein EC-Schlüsselpaar zu generieren. In diesem Beispiel wird ein EC-Schlüsselpaar mit der
prime256v1Kurve (die derNID_X9_62_prime256v1Kurve entspricht), einem öffentlichen Schlüssellabel vontls_ec_pubund einem privaten Schlüssellabel von generierttls_ec_private.aws-cloudhsm >key generate-asymmetric-pair ec \ --curve prime256v1 \ --public-label tls_ec_pub \ --private-label tls_ec_private \ --private-attributes sign=true{ "error_code": 0, "data": { "public_key": { "key-reference": "0x000000000012000b", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "session" }, "attributes": { "key-type": "ec", "label": "tls_ec_pub", "id": "", "check-value": "0xd7c1a7", "class": "public-key", "encrypt": false, "decrypt": false, "token": false, "always-sensitive": false, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": false, "sign": false, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 57, "ec-point": "0x047096513df542250a6b228fd9cb67fd0c903abc93488467681974d6f371083fce1d79da8ad1e9ede745fb9f38ac8622a1b3ebe9270556000c", "curve": "secp224r1" } }, "private_key": { "key-reference": "0x000000000012000c", "key-info": { "key-owners": [ { "username": "cu1", "key-coverage": "full" } ], "shared-users": [], "cluster-coverage": "session" }, "attributes": { "key-type": "ec", "label": "tls_ec_private", "id": "", "check-value": "0xd7c1a7", "class": "private-key", "encrypt": false, "decrypt": false, "token": false, "always-sensitive": true, "derive": false, "destroyable": true, "extractable": true, "local": true, "modifiable": true, "never-extractable": false, "private": true, "sensitive": true, "sign": true, "trusted": false, "unwrap": false, "verify": false, "wrap": false, "wrap-with-trusted": false, "key-length-bytes": 122, "ec-point": "0x047096513df542250a6b228fd9cb67fd0c903abc93488467681974d6f371083fce1d79da8ad1e9ede745fb9f38ac8622a1b3ebe9270556000c", "curve": "secp224r1" } } } }
Exportieren einer gefälschten privaten PEM-Schlüsseldatei
Sobald Sie einen privaten Schlüssel auf dem HSM haben, müssen Sie eine gefälschte private PEM-Schlüsseldatei exportieren. Diese Datei enthält nicht die eigentlichen Schlüsseldaten, ermöglicht es der OpenSSL Dynamic Engine jedoch, den privaten Schlüssel auf dem HSM zu identifizieren. Sie können dann den privaten Schlüssel verwenden, um eine Zertifikatsignierungsanforderung (CSR) zu erstellen und die CSR zu signieren, um das Zertifikat zu erstellen.
Verwenden Sie den key generate-fileBefehl, um den privaten Schlüssel im falschen PEM-Format zu exportieren und in einer Datei zu speichern. Ersetzen Sie die folgenden Werte durch Ihre eigenen.
-
<private_key_label>— Bezeichnung des privaten Schlüssels, den Sie im vorherigen Schritt generiert haben. -
<web_server_fake_pem.key>— Name der Datei, in die Ihr gefälschter PEM-Schlüssel geschrieben wird.
aws-cloudhsm >key generate-file --encoding reference-pem --path<web_server_fake_pem.key>--filter attr.label=<private_key_label>{ "error_code": 0, "data": { "message": "Successfully generated key file" } }
Beenden Sie die CloudHSM-CLI
Führen Sie den folgenden Befehl aus, um die CloudHSM-CLI zu beenden.
aws-cloudhsm >quit
Sie sollten jetzt eine neue Datei auf Ihrem System haben, die sich unter dem <web_server_fake_pem.key> im vorherigen Befehl angegebenen Pfad befindet. Diese Datei ist die gefälschte private PEM-Schlüsseldatei.
Generieren eines selbstsignierten Zertifikats
Sobald Sie einen gefälschten privaten PEM-Schlüssel generiert haben, können Sie diese Datei verwenden, um eine Zertifikatssignieranforderung (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 ein signiertes SSL/TLS Zertifikat, das sie Ihnen auf Ihrem Webserver für HTTPS zur Verfügung stellen.
Als Alternative zur Verwendung einer CA können Sie die AWS CloudHSM OpenSSL Dynamic Engine verwenden, 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.
Installieren und konfigurieren Sie die OpenSSL Dynamic Engine
-
Stellen Sie eine Verbindung mit Ihrer Client-Instance her.
-
Installieren Sie die OpenSSL Dynamic Engine für AWS CloudHSM Client SDK 5
Generieren eines Zertifikats
-
Besorgen Sie sich eine Kopie Ihrer gefälschten PEM-Datei, die in einem früheren Schritt generiert wurde.
-
Erstellen einer CSR
Führen Sie den folgenden Befehl aus, um mit der AWS CloudHSM OpenSSL Dynamic Engine eine Certificate Signing Request (CSR) zu erstellen.
<web_server_fake_pem.key>Ersetzen Sie ihn durch den Namen der Datei, die Ihren gefälschten privaten PEM-Schlüssel enthält.<web_server.csr>Ersetzen Sie es durch den Namen der Datei, die Ihre CSR enthält.Der Befehl
reqist interaktiv. Füllen Sie jedes Feld aus. Die Feldinformationen werden in Ihr SSL/TLS Zertifikat kopiert.Anmerkung
Die CSR-Erstellung wird derzeit vom OpenSSL Provider nicht unterstützt. Sie müssen für diesen Schritt die OpenSSL Engine verwenden, aber TLS-Verschlüsselungsoperationen funktionieren mit dem Anbieter.
$openssl req -engine cloudhsm -new -key<web_server_fake_pem.key>-out<web_server.csr> -
Erstellen eines selbstsignierten Zertifikats
Führen Sie den folgenden Befehl aus, um die AWS CloudHSM OpenSSL Dynamic Engine zu verwenden, um Ihre CSR mit Ihrem privaten Schlüssel auf Ihrem HSM zu signieren. Dadurch wird ein selbstsigniertes Zertifikat erstellt. Ersetzen Sie die folgenden Werte in dem Befehl durch Ihre eigenen.
-
<web_server.csr>— Name der Datei, die die CSR enthält. -
<web_server_fake_pem.key>— Name der Datei, die den gefälschten privaten PEM-Schlüssel enthält. -
<web_server.crt>— Name der Datei, die Ihr Webserver-Zertifikat enthalten wird.
$openssl x509 -engine cloudhsm -req -days 365 -in<web_server.csr>-signkey<web_server_fake_pem.key>-out<web_server.crt> -
Nachdem Sie einen privaten Schlüssel und ein Zertifikat haben, gehen Sie zuSchritt 3: Konfigurieren des Webservers.
Schritt 3: Konfigurieren des Webservers
Aktualisieren Sie die Konfiguration Ihrer Webserver-Software, um das HTTPS-Zertifikat und den zugehörigen gefälschten privaten PEM-Schlüssel 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 das Auslagern von SSL/TLS Serveridentitäten mit abgeschlossen. AWS CloudHSM
Führen Sie die Schritte aus einem der folgenden Abschnitte aus.
Konfigurieren eines NGINX-Webservers
Verwenden Sie diesen Abschnitt, um NGINX mit dem OpenSSL Provider zu konfigurieren.
So konfigurieren Sie NGINX für OpenSSL Provider
-
Stellen Sie eine Verbindung mit Ihrer Client-Instance her.
-
Führen Sie den folgenden Befehl aus, um die erforderlichen Verzeichnisse für das Webserverzertifikat und den gefälschten privaten PEM-Schlüssel zu erstellen.
$mkdir -p /etc/pki/nginx/private -
Führen Sie den folgenden Befehl aus, um Ihr Webserverzertifikat an die erforderliche Stelle zu kopieren. Ersetzen Sie es
<web_server.crt>durch den Namen Ihres Webserver-Zertifikats.$cp<web_server.crt>/etc/pki/nginx/server.crt -
Führen Sie den folgenden Befehl aus, um den gefälschten privaten PEM-Schlüssel an die erforderliche Stelle zu kopieren.
<web_server_fake_pem.key>Ersetzen Sie es durch den Namen der Datei, die Ihren gefälschten privaten PEM-Schlüssel enthält.$cp<web_server_fake_pem.key>/etc/pki/nginx/private/server.key -
Führen Sie den folgenden Befehl aus, um die Eigentümerschaft für diese Dateien zu ändern, sodass der Benutzer mit dem Namen nginx diese lesen kann.
$chown nginx /etc/pki/nginx/server.crt /etc/pki/nginx/private/server.key -
Konfigurieren Sie OpenSSL für die Verwendung des AWS CloudHSM Anbieters. Weitere Informationen zur Konfiguration des OpenSSL Providers finden Sie unter AWS CloudHSM OpenSSL Provider for Client SDK 5.
-
Suchen Sie Ihre OpenSSL-Konfigurationsdatei:
$openssl version -dSie sollten eine Ausgabe sehen, die der folgenden ähnelt:
OPENSSLDIR: "/etc/pki/tls"Die Konfigurationsdatei befindet sich
openssl.cnfin diesem Verzeichnis. -
Anmerkung
Ändern Sie die Standarddatei openssl.cnf Ihres Systems nicht direkt. Dadurch wird verhindert, dass systemweite OpenSSL-Operationen (SSH, TLS-Verbindungen und andere Dienste) unbeabsichtigt über den CloudHSM-Anbieter weitergeleitet werden.
Durch die Verwendung einer separaten Konfigurationsdatei können Sie die Nutzung des CloudHSM Providers auf bestimmte Anwendungen beschränken, die HSM-gestützte kryptografische Operationen erfordern.
Erstellen Sie eine neue OpenSSL-Konfigurationsdatei mit dem folgenden Inhalt:
$cat >## NOTE: This should point to the system default openssl config file. # Replace /etc/pki/tls with the path to your OpenSSL configuration directory .include<example-cloudhsm-openssl.cnf><< 'EOF'</etc/pki/tls>/openssl.cnf # Override the existing provider_section to include AWS CloudHSM OpenSSL Provider as a 3rd party OpenSSL provider [provider_sect] default = default_sect # Include AWS CloudHSM CloudHSM OpenSSL provider cloudhsm = cloudhsm_sect [default_sect] activate = 1 [cloudhsm_sect] activate = 1EOF -
Stellen Sie sicher, dass die
CLOUDHSM_PINUmgebungsvariable mit Ihren Crypto-Benutzeranmeldedaten (CU) gesetzt ist:$export CLOUDHSM_PIN=<username>:<password> -
Stellen Sie die
OPENSSL_CONFUmgebungsvariable so ein, dass sie auf Ihre aktualisierte Konfigurationsdatei verweist, und stellen Sie sicher, dass der Anbieter geladen ist:$OPENSSL_CONF=/path/to/example-cloudhsm-openssl.cnf openssl list -providersSie sollten sowohl den Standardanbieter als auch den CloudHSM-Anbieter aufgelistet sehen:
OPENSSL_CONF=/path/to/example-cloudhsm-openssl.cnf openssl list -providers Providers: default name: OpenSSL Default Provider version: 3.2.2 status: active cloudhsm name: AWS CloudHSM OpenSSL Provider version: 5.17.0 status: active
-
-
Führen Sie den folgenden Befehl aus, um die Datei
/etc/nginx/nginx.confzu sichern.$cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup -
Aktualisieren Sie die NGINX-Konfiguration.
Anmerkung
Jeder Cluster kann maximal 1000 NGINX-Worker-Prozesse auf allen NGINX-Webservern unterstützen.
Speichern Sie die Datei.
-
Sichern Sie die
systemd-Konfigurationsdatei und legen Sie dann denEnvironmentFile-Pfad fest. -
Überprüfen Sie, ob die Datei
/etc/sysconfig/nginxvorhanden ist, und führen Sie dann einen der folgenden Schritte aus:-
Wenn die Datei vorhanden ist, sichern Sie die Datei, indem Sie den folgenden Befehl ausführen:
$cp /etc/sysconfig/nginx /etc/sysconfig/nginx.backup -
Öffnen Sie einen Texteditor und erstellen Sie im Ordner
/etc/sysconfig/eine Datei mit dem Namennginx, wenn die Datei nicht vorhanden ist.
-
-
Konfigurieren Sie die NGINX-Umgebung.
-
Starten Sie den NGINX-Webserver.
Nachdem Sie NGINX konfiguriert haben, gehen Sie zu. Verifizieren, dass HTTPS das konfigurierte Zertifikat verwendet
Webserver konfigurieren HAProxy
Verwenden Sie diesen Abschnitt, um HAProxy mit dem OpenSSL Provider zu konfigurieren. Die folgenden Beispiele zeigen, wie Sie HAProxy mit Ihren CloudHSM-Zertifikaten und -Schlüsseln einrichten.
So konfigurieren Sie HAProxy für OpenSSL Provider
-
Erstellen Sie eine Sicherungskopie der vorhandenen kombinierten Zertifikatsdatei, falls vorhanden:
$cp server-combined.pem server-combined.pem.backup -
Erstellen Sie eine kombinierte Zertifikatsdatei für die HAProxy Verwendung Ihres Zertifikats und des gefälschten CloudHSM-PEM-Schlüssels:
$cat server.crt server.key > server-combined.pem -
Erstellen Sie eine Sicherungskopie der vorhandenen Konfiguration: HAProxy
$cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.backup -
Erstellen Sie eine neue CloudHSM-TLS-Offload-Konfiguration unter:
/etc/haproxy/haproxy.cfgglobal daemon ssl-provider cloudhsm # It is *strongly* recommended to generate unique DH parameters # Generate them with: openssl dhparam -out /etc/haproxy/dhparams.pem 2048 # ssl-dh-param-file /etc/haproxy/dhparams.pem ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305 ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend haproxy_frontend bind *:443 ssl crt /path/to/server-combined.pem default_backend web_servers backend web_servers server web1 127.0.0.1:8080 checkAktualisieren Sie den Zertifikatspfad so, dass er mit Ihrem Dateispeicherort übereinstimmt.
-
Konfigurieren Sie Systemd so, dass es eine Umgebungsdatei für HAProxy verwendet. Der Speicherort hängt von Ihrer Linux-Distribution ab.
-
Erstellen Sie die Umgebungsdatei am entsprechenden Speicherort für Ihr System.
Ersetzen Sie
<CU user name>und<password>durch Ihre CU-Anmeldeinformationen. -
Laden Sie die Systemd-Konfiguration neu:
$systemctl daemon-reload -
Beginnen Sie HAProxy mit der CloudHSM TLS-Offload-Konfiguration:
$systemctl start haproxySie können den Vorgang auch HAProxy direkt mit einer benutzerdefinierten Konfigurationsdatei ausführen:
$haproxy -f /path/to/haproxy-cloudhsm.cfg
Gehen Sie nach HAProxy der Konfiguration zuVerifizieren, dass HTTPS das konfigurierte Zertifikat verwendet.
Schritt 4: Aktivieren von HTTPS-Datenverkehr und Verifizieren des Zertifikats
Nachdem Sie Ihren Webserver für 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 das 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
Um den SSL/TLS Offload mit einem Webbrowser zu überprüfen
-
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 es sich bei dem SSL/TLS Zertifikat um das Zertifikat handelt, für dessen Verwendung Sie Ihren Webserver konfiguriert haben.
Um den SSL/TLS Offload mit OpenSSL s_client zu überprüfen
-
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 es sich bei dem SSL/TLS Zertifikat um das Zertifikat handelt, für dessen Verwendung Sie Ihren 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 Einen Load Balancer mit Elastic Load Balancing hinzufügen für AWS CloudHSM(optional).