Auf dieser Seite finden Sie eine Anleitung zum Einrichten von mTLS für das Backend mit selbst verwalteten Zertifikaten für globale externe Application Load Balancer.
Die Schritte zum Konfigurieren von mTLS für das Backend ähneln denen für die backendgestützte TLS-Authentifizierung, mit der Ausnahme, dass Sie auch ein Zertifikat für den Load Balancer erstellen müssen. Dieses Zertifikat, auch Clientzertifikat genannt, ist an die Backend-Authentifizierungs-Konfigurationsressource angehängt. Der Load Balancer verwendet dieses Clientzertifikat, um sich bei den Backends zu authentifizieren.
So konfigurieren Sie mTLS für das Backend:
- Erstellen Sie eine TrustConfig-Ressource, die aus Root- und Zwischenzertifikaten besteht.
- Erstellen Sie ein Clientzertifikat und laden Sie es in Zertifikatmanager hoch.
- Erstellen Sie eine Ressource „Konfiguration der Backend-Authentifizierung“, die sowohl auf die Vertrauenskonfiguration als auch auf das Clientzertifikat verweist.
- Hängen Sie die Ressource „Backend Authentication Config“ an den Backend-Dienst des Load Balancers an.
Hinweise
- Weitere Informationen finden Sie unter Übersicht über backend-authentifiziertes TLS und backend-mTLS.
- Weitere Informationen finden Sie unter Vertrauenskonfigurationen verwalten.
Wenn Sie die Anleitung in diesem Leitfaden mit der Google Cloud CLI befolgen möchten, müssen Sie sie installieren. Befehle für das Load Balancing finden Sie in den Referenzen zur API und zur gcloud CLI.
Wenn Sie die gcloud CLI noch nicht ausgeführt haben, führen Sie zuerst den Befehl
gcloud init
zur Authentifizierung aus.Aktivieren Sie die folgenden APIs: Compute Engine API, Certificate Manager API, Network Security API und Network Services API. Weitere Informationen finden Sie unter APIs aktivieren.
Konfigurieren Sie einen globalen externen Application Load Balancer mit einem der folgenden unterstützten Back-Ends:
- Back-Ends von VM-Instanzgruppen
- Hybridkonnektivitäts-NEGs
- Zonale NEGs
Berechtigungen
In diesem Abschnitt sind die Berechtigungen aufgeführt, die zum Konfigurieren von mTLS für das Backend erforderlich sind.Vorgang | Berechtigung |
---|---|
Vertrauenskonfiguration erstellen | certificatemanager.trustconfigs.create für das Ziel-Google Cloud-Projekt |
Clientzertifikat erstellen | certificatemanager.certs.create für das Ziel-Google Cloud-Projekt |
Konfigurationsressource für die Backend-Authentifizierung erstellen |
certificatemanager.certs.use für das Zielzertifikatcertificatemanager.trustconfigs.use für die Ziel-Trust-Konfigurationnetworksecurity.backendauthenticationconfigs.create für das Ziel-Google Cloud-Projekt |
Hängen Sie die Ressource „Backend Authentication Config“ an den Backend-Dienst des Load Balancers an. |
compute.backendservice.update für den Ziel-Backend-Dienstnetworksecurity.backendauthenticationconfigs.use für die Zielressource „Konfiguration der Backend-Authentifizierung“ |
Einrichtung: Übersicht
In den folgenden Abschnitten werden die Schritte zum Konfigurieren von mTLS für das Backend anhand der im folgenden Diagramm dargestellten Architektur beschrieben:
Root- und Zwischenzertifikate erstellen
In diesem Abschnitt wird die OpenSSL-Bibliothek verwendet, um das Root-Zertifikat (Trust Anchor) und das Zwischenzertifikat zu erstellen.
Ein Root-Zertifikat steht an der Spitze der Zertifikatskette. Ein Zwischenzertifikat ist Teil der Vertrauenskette bis zum Root-Zertifikat. Das Zwischenzertifikat wird kryptografisch vom Stammzertifikat signiert. Wenn der Load Balancer ein Serverzertifikat empfängt, validiert er es, indem er eine Vertrauenskette vom Serverzertifikat zum konfigurierten Trust Anchor herstellt.
Verwenden Sie die folgenden Befehle, um das Root- und das Zwischenzertifikat zu erstellen.
Erstellen Sie eine OpenSSL-Konfigurationsdatei.
Im folgenden Beispiel enthält die Konfigurationsdatei (
example.cnf
) den Abschnitt[ca_exts]
, in dem X.509-Erweiterungen angegeben sind, die das Zertifikat als für eine Zertifizierungsstelle geeignet kennzeichnen. Weitere Informationen zu den Anforderungen an Stamm- und Zwischenzertifikate finden Sie unter Anforderungen an Zertifikate.cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command-line argument. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=serverAuth EOF
Erstellen Sie ein selbst signiertes X.509-Root-Zertifikat (
root.cert
). Das Root-Zertifikat wird mit seinem eigenen privaten Schlüssel (root.key
) selbst signiert.openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.cert
Erstellen Sie die CSR (Certificate Signing Request)
int.req
für das Zwischenzertifikat.openssl req -new \ -sha256 -newkey rsa:2048 -nodes \ -subj '/CN=int' \ -config example.cnf \ -extensions ca_exts \ -keyout int.key -out int.req
Signieren Sie die CSR, um das X.509-Zwischenzertifikat (
int.cert
) zu erstellen. Die CSR wird mit dem Stammzertifikat signiert.openssl x509 -req \ -CAkey root.key -CA root.cert \ -set_serial 1 \ -days 3650 \ -extfile example.cnf \ -extensions ca_exts \ -in int.req -out int.cert
Zertifikate formatieren
Wenn Sie neue oder vorhandene Zertifikate in einen Trust Store aufnehmen möchten, formatieren Sie die Zertifikate in einer einzelnen Zeile und speichern Sie sie in Umgebungsvariablen, damit sie in der YAML-Datei der Trust-Konfiguration referenziert werden können.
export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
TrustConfig-Ressource erstellen
Eine Vertrauenskonfiguration ist eine Ressource, die Ihre Konfiguration der Public-Key-Infrastruktur (PKI) im Zertifikatmanager darstellt.
So erstellen Sie eine Vertrauensstellungsressource:
Console
Rufen Sie in der Google Cloud Console die Seite Zertifikatmanager auf.
Klicken Sie auf dem Tab Trust Configs (Vertrauenskonfigurationen) auf Add Trust Config (Vertrauenskonfiguration hinzufügen).
Geben Sie einen Namen für die Konfiguration ein.
Wählen Sie unter Standort die Option Global aus. Der Speicherort gibt an, wo die Trust-Config-Ressource gespeichert ist. Für globale externe Application Load Balancer müssen Sie eine globale Vertrauenskonfiguratierungsressource erstellen.
Klicken Sie im Bereich Trust Store auf Trust Anchor hinzufügen und laden Sie die PEM-codierte Zertifikatsdatei hoch oder kopieren Sie den Inhalt des Zertifikats.
Klicken Sie auf Hinzufügen.
Klicken Sie im Bereich Trust Store auf Zwischen-CA hinzufügen und laden Sie die PEM-codierte Zertifikatsdatei hoch oder kopieren Sie den Inhalt des Zertifikats. Mit diesem Schritt können Sie eine weitere Vertrauensebene zwischen dem Root-Zertifikat und Ihrem Serverzertifikat hinzufügen.
Klicken Sie auf Hinzufügen, um die Zwischenzertifizierungsstelle hinzuzufügen.
Klicken Sie auf Hinzufügen, um das Zertifikat hinzuzufügen, das Sie der Zulassungsliste hinzugefügt haben.
Klicken Sie auf Erstellen.
Prüfen Sie, ob die neue Trust-Konfigurationsressource in der Liste der Konfigurationen aufgeführt ist.
gcloud
Erstellen Sie eine YAML-Datei für die Vertrauensstellung (
trust_config.yaml
), in der die Parameter für die Vertrauensstellung angegeben sind. Diese Beispielressource für die Vertrauenskonfiguration enthält einen Trust Store mit einem Trust-Anchor und einem Zwischenzertifikat. In dieser Beispielressource für die Vertrauenskonfiguration wird der Zertifikatsinhalt aus den Umgebungsvariablen gelesen, die im vorherigen Schritt Zertifikate formatieren erstellt wurden.cat << EOF > trust_config.yaml trustStores: - trustAnchors: - pemCertificate: "${ROOT_CERT}" intermediateCas: - pemCertificate: "${INTERMEDIATE_CERT}" EOF
Fügen Sie im entsprechenden Abschnitt
pemCertificate
-Zeilen hinzu, um einen Trust Store mit zusätzlichen Trust-Anchors oder Zwischen-CA-Zertifikaten zu erstellen.Verwenden Sie den Befehl
gcloud certificate-manager trust-configs import
, um die YAML-Datei für die Vertrauensstellung zu importieren:Geben Sie für globale externe Application Load Balancer
global
als Speicherort der Trust-Konfigurationsressource an.gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=global
Ersetzen Sie Folgendes:
TRUST_CONFIG_NAME
: der Name der Vertrauenskonfigurationsressource
Clientzertifikat erstellen
Bei der Backend-mTLS-Verschlüsselung fungiert der Load Balancer als Client und das Backend als Server.
Um mTLS für das Backend zu aktivieren, muss der Load Balancer seine Identität gegenüber dem Backend nachweisen. Diese Authentifizierung erfolgt mit einem Clientzertifikat, das der Load Balancer dem Backend vorlegt. Der Backend-Server muss das Clientzertifikat mit seiner eigenen Vertrauenskette validieren.
Beim Herstellen einer Verbindung zu einem Backend-Server setzt der Load Balancer den Servernamenindikator (SNI) auf den in der TLS-Konfiguration angegebenen Hostnamen. Der Back-End-Server wählt anhand dieses SNI-Werts das entsprechende SSL/TLS-Zertifikat aus. Der Load Balancer erwartet, dass der SNI-Wert mit einem alternativen Antragstellernamen (Subject Alternative Name, SAN) übereinstimmt, der im Zertifikat des Backend-Servers aufgeführt ist.
Clientzertifikate können verwaltete Zertifikate von einer privaten Zertifizierungsstelle über den Certificate Authority Service oder selbst verwaltete private PKI-Zertifikate sein. In diesem Beispiel wird das Clientzertifikat mit selbst verwalteten Zertifikaten ausgestellt. In diesem Abschnitt wird die OpenSSL-Bibliothek verwendet, um das Root-Zertifikat der Zertifizierungsstelle und das Clientzertifikat zu erstellen.
So erstellen Sie ein Clientzertifikat:
Erstellen Sie eine OpenSSL-Konfigurationsdatei.
Im folgenden Beispiel enthält die Konfigurationsdatei (
example.cnf
) den Abschnitt[ca_exts]
, in dem X.509-Erweiterungen angegeben sind, die das Zertifikat als für eine Zertifizierungsstelle (CA) geeignet kennzeichnen. DasextendedKeyUsage
-Attribut ist aufclientAuth
festgelegt. Weitere Informationen zu den Anforderungen an Stamm- und Zwischenzertifikate finden Sie unter Anforderungen an Zertifikate.cat > example.cnf << EOF [req] distinguished_name = empty_distinguished_name [empty_distinguished_name] # Kept empty to allow setting via -subj command-line argument. [ca_exts] basicConstraints=critical,CA:TRUE keyUsage=keyCertSign extendedKeyUsage=clientAuth EOF
Erstellen Sie ein selbst signiertes X.509-Root-Zertifikat (
root.cert
). Das Root-Zertifikat wird mit seinem eigenen privaten Schlüssel (root.key
) selbst signiert.openssl req -x509 \ -new -sha256 -newkey rsa:2048 -nodes \ -days 3650 -subj '/CN=root' \ -config example.cnf \ -extensions ca_exts \ -keyout root.key -out root.cert
Erstellen Sie eine Konfigurationsdatei, um die CSR für das Clientzertifikat zu generieren.
Die folgende Konfigurationsdatei (
client.config
) enthält den Abschnitt[extension_requirements]
, in dem die X.509-Erweiterungen angegeben sind, die in die CSR aufgenommen werden sollen. Weitere Informationen zu den Anforderungen an Clientzertifikate finden Sie unter Zertifikatsanforderungen.cat > client.config << EOF [req] default_bits = 2048 req_extensions = extension_requirements distinguished_name = dn_requirements prompt = no [extension_requirements] basicConstraints = critical, CA:FALSE keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth [dn_requirements] countryName = US stateOrProvinceName = California localityName = San Francisco 0.organizationName = example organizationalUnitName = test commonName = test.example.com emailAddress = test@example.com EOF
Erstellen Sie die CSR (
client.csr
) für das Clientzertifikat.openssl req -new \ -config client.config \ -keyout client.key -out client.csr
Erstellen Sie das Clientzertifikat (
client.cert
) aus der CSR. Das CSR wird vom Stamm-CA-Zertifikat signiert, um das X.509-Clientzertifikat auszustellen.openssl x509 -req \ -CAkey root.key -CA root.cert \ -days 365 \ -extfile client.config \ -extensions extension_requirements \ -in client.csr -out client.cert
Clientzertifikat in den Zertifikatmanager hochladen
So laden Sie das Clientzertifikat in den Zertifikatsmanager hoch:
Console
Rufen Sie in der Google Cloud Console die Seite Zertifikatmanager auf.
Klicken Sie auf dem Tab Zertifikate auf Zertifikat hinzufügen.
Geben Sie einen Namen für das Zertifikat ein.
Dieser Name muss für das Projekt eindeutig sein.
Optional: Geben Sie eine Beschreibung für das Zertifikat ein. Anhand der Beschreibung können Sie ein bestimmtes Zertifikat später leichter identifizieren.
Wählen Sie unter Standort die Option Global aus.
Wählen Sie unter Umfang die Option Clientauthentifizierung aus.
Wählen Sie unter Zertifikattyp die Option Selbstverwaltetes Zertifikat erstellen aus.
Laden Sie für das Feld Zertifikat eine PEM-codierte Zertifikatdatei hoch oder kopieren Sie den Inhalt eines PEM-codierten Zertifikats und fügen Sie ihn ein.
Laden Sie für das Feld Zertifikat mit privatem Schlüssel einen PEM-codierten privaten Schlüssel hoch, der nicht mit einer Passphrase geschützt ist, oder kopieren Sie den Inhalt des PEM-codierten privaten Schlüssels und fügen Sie ihn ein.
Geben Sie ein Label an, das dem Zertifikat zugeordnet werden soll. Sie können bei Bedarf mehrere Labels hinzufügen. Klicken Sie auf
Label hinzufügen, um ein Label hinzuzufügen, und geben Sie einenkey
und einenvalue
für das Label an.Klicken Sie auf Erstellen. Prüfen Sie, ob das neue Zertifikat in der Liste der Zertifikate angezeigt wird.
gcloud
Verwenden Sie den Befehl
gcloud certificate-manager certificates create
, um das Clientzertifikat in den Zertifikatmanager hochzuladen. Der Geltungsbereich dieses Zertifikats istclient-auth
. Das bedeutet, dass es als Clientzertifikat in der Backend-mTLS-Authentifizierung verwendet wird.gcloud certificate-manager certificates create CLIENT_ CERTIFICATE_NAME \ --certificate-file=client.cert \ --private-key-file=client.key \ --scope=client-auth \ --global
Ersetzen Sie Folgendes:
CLIENT_CERTIFICATE_NAME
: der Name der Clientzertifikatsressource. Dieses Clientzertifikat mit dem Gültigkeitsbereichclient-auth
wird von der Ressource „Backend Authentication Config“ verwendet.
Konfigurationsressource für die Backend-Authentifizierung erstellen
So erstellst du eine Backend-Authentifizierungskonfiguration (BackendAuthenticationConfig
):
Console
- Rufen Sie in der Google Cloud Console die Seite Authentifizierungskonfiguration auf.
- Klicken Sie auf dem Tab Backend-Authentifizierung auf Erstellen.
- Geben Sie einen Namen für die Ressource „Backend Authentication Config“ ein.
- Wählen Sie die Clientzertifikatressource aus, die Sie zuvor erstellt haben.
- Optional: Wählen Sie die öffentlichen Stammzertifizierungsstellen aus.
- Wählen Sie die zuvor erstellte Konfigurationsressource für die Vertrauensstellung aus.
- Klicken Sie auf Erstellen.
Prüfen Sie, ob die Ressource „Backend Authentication Config“ angezeigt wird.
gcloud
Erstellen Sie eine YAML-Datei, in der die verschiedenen Attribute der Backend-Authentifizierungskonfigurationsressource deklarativ angegeben werden.
Hängen Sie das Clientzertifikat an die Ressource „Backend Authentication Config“ an, um mTLS für das Backend zu aktivieren.
cat << EOF > BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME.yaml name: projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/BACKEND_AUTH_CONFIG_NAME trustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME clientCertificate: projects/PROJECT_ID/locations/global/certificates/CLIENT_ CERTIFICATE_NAME wellKnownRoots: PUBLIC_ROOTS EOF
Ersetzen Sie Folgendes:
BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME
: der Name der YAML-Datei, in der die Backend-Authentifizierungs-Konfigurationsressource definiert ist.PROJECT_ID
: die ID Ihres Google Cloud-ProjektsBACKEND_AUTH_CONFIG_NAME
: der Name der Konfiguration der Backend-AuthentifizierungTRUST_CONFIG_NAME
: Der Name der zuvor erstellten Vertrauenskonfigurationsressource.CLIENT_CERTIFICATE_NAME
: Der Name der Clientzertifikatressource, die Sie zuvor erstellt haben.
Verwenden Sie den Befehl
gcloud beta network-security backend-authentication-configs import
, um die Back-End-Authentifizierungskonfiguration zu importieren:gcloud beta network-security backend-authentication-configs import BACKEND_AUTH_CONFIG_NAME \ --source=BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME.yaml \ --location=global
Ersetzen Sie Folgendes:
BACKEND_AUTH_CONFIG_NAME
: der Name der Backend-AuthentifizierungskonfigurationsressourceBACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME
: der Name der YAML-Datei, in der die Backend-Authentifizierungs-Konfigurationsressource definiert ist.
Hängen Sie die Ressource „Backend Authentication Config“ an den Backend-Dienst des Load Balancers an.
So binden Sie die Ressource „Backend Authentication Config“ (BackendAuthenticationConfig
) an den Backend-Dienst des Load Balancers an:
Console
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
Wählen Sie auf dem Tab Backends den Backend-Dienst aus, für den Sie backendauthentifiziertes TLS und backend-mTLS aktivieren möchten.
Klicken Sie auf
Bearbeiten.Maximieren Sie den Abschnitt Erweiterte Konfigurationen.
Klicken Sie im Abschnitt Backend-Authentifizierung das Kästchen Aktivieren an.
Optional: Geben Sie den SNI-Hostnamen und die zulässigen SANs an, um das Backend-Zertifikat zu validieren.
Wenn Sie die Ressource „Backend Authentication Config“ (Konfiguration der Backend-Authentifizierung) an den Back-End-Dienst anhängen möchten, wählen Sie sie in der Liste Backend Authentication Config (Konfiguration der Backend-Authentifizierung) aus.
Klicken Sie auf Weiter.
Klicken Sie auf Aktualisieren, um die Einstellungen für den Backend-Dienst zu aktualisieren.
gcloud
Verwenden Sie den Befehl
gcloud compute backend-services list
, um alle Backend-Dienstressourcen in Ihrem Projekt aufzulisten.gcloud compute backend-services list
Notieren Sie sich den Namen des Backend-Dienstes, an den die
BackendAuthenticationConfig
-Ressource angehängt werden soll. Dieser Name wird in den folgenden Schritten alsBACKEND_SERVICE_NAME
bezeichnet.Verwenden Sie den Befehl
gcloud beta compute backend-services export
, um die Konfiguration des Back-End-Dienstes in eine Datei zu exportieren.gcloud beta compute backend-services export BACKEND_SERVICE_NAME \ --destination=BACKEND_SERVICE_FILENAME.yaml \ --global
Ersetzen Sie Folgendes:
BACKEND_SERVICE_NAME
: der Name des Backend-DienstesBACKEND_SERVICE_FILENAME
: Name und Pfad zu einer YAML-Datei, in die die Konfiguration des Backend-Dienstes exportiert wird
Aktualisieren Sie das Attribut
tlsSettings
des Backend-Dienstes und verweisen Sie darauf. Außerdem können Sie den SNI-Hostnamen und die zulässigen SANs im Backend-Dienst konfigurieren, um das Backend-Zertifikat zu validieren.cat << EOF >> BACKEND_SERVICE_FILENAME.yaml tlsSettings: authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/BACKEND_AUTH_CONFIG_NAME sni: examplepetstore.com subjectAltNames: - dnsName: examplepetstore.com - dnsName: api.examplepetstore.com EOF
Die SNI- und SAN-Werte in der vorherigen YAML-Deklaration dienen nur als Beispiele. Sie können sie durch realistische Werte ersetzen, die für Ihre Konfiguration relevant sind.
Ersetzen Sie Folgendes:
BACKEND_SERVICE_FILENAME
: der Name der YAML-Datei, in die die Backend-Dienstkonfiguration exportiert wirdPROJECT_ID
ist die ID Ihres Google Cloud-ProjektsBACKEND_AUTH_CONFIG_NAME
: der Name der Backend-Authentifizierungskonfigurationsressource
Verwenden Sie den Befehl
gcloud beta compute backend-services import
, um die aktualisierte Konfiguration des Backend-Dienstes aus einer Datei zu importieren.gcloud beta compute backend-services import BACKEND_SERVICE_NAME \ --source=BACKEND_SERVICE_FILENAME.yaml \ --global
Ersetzen Sie Folgendes:
BACKEND_SERVICE_NAME
: der Name des Backend-DienstesBACKEND_SERVICE_FILENAME
: der Name der YAML-Datei für die Konfiguration des Backend-Dienstes
Backend-Serverzertifikat erstellen
Dieser Abschnitt bietet eine zusätzliche Konfigurationsoption zum Erstellen eines Serverzertifikats (untergeordnetes Zertifikat), das vom Zwischenzertifikat signiert ist, das Teil der Vertrauenskonfiguration ist. So kann eine Vertrauenskette vom Serverzertifikat bis zum Trust Anchor hergestellt werden.
Wenn Sie bereits eine TrustConfig-Ressource mit einem Zwischenzertifikat erstellt haben, gehen Sie so vor:
Erstellen Sie eine Konfigurationsdatei, um die CSR für das Serverzertifikat zu generieren.
Die folgende Konfigurationsdatei (
server.config
) enthält den Abschnitt[extension_requirements]
, in dem die X.509-Erweiterungen angegeben sind, die in das CSR aufgenommen werden sollen. Weitere Informationen zu den Anforderungen an Serverzertifikate finden Sie unter Zertifikatsanforderungen.cat > server.config << EOF [req] default_bits = 2048 req_extensions = extension_requirements distinguished_name = dn_requirements prompt = no [extension_requirements] basicConstraints = critical, CA:FALSE keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = examplepetstore.com DNS.2 = api.examplepetstore.com [dn_requirements] countryName = US stateOrProvinceName = California localityName = San Francisco 0.organizationName = example organizationalUnitName = test commonName = examplepetstore.com emailAddress = test@examplepetstore.com EOF
Erstellen Sie die CSR (
server.csr
) für das Serverzertifikat.openssl req -new \ -sha256 -newkey rsa:2048 -nodes \ -config server.config \ -keyout server.key -out server.csr
Signieren Sie die CSR, um das X.509-Serverzertifikat (
server.cert
) auszustellen. Die CSR wird vom Zwischenzertifikat signiert.openssl x509 -req \ -CAkey int.key -CA int.cert \ -days 365 \ -extfile server.config \ -extensions extension_requirements \ -in server.csr -out server.cert
Wenn der Load Balancer eine Verbindung zum Back-End-Server herstellt, präsentiert dieser sein Zertifikat (
server.cert
), um sich beim Load Balancer zu authentifizieren. Damit ist die Back-End-Authentifizierung abgeschlossen.
Zusätzliche SSL-Konfigurationsoptionen auf einem Apache-Webserver
In diesem optionalen Abschnitt erfahren Sie, wie Sie die SSL-Konfigurationsoptionen auf einem Apache-Server anhand der zuvor erstellten Client- und Serverzertifikate aktualisieren.-
Kopieren Sie den privaten Serverschlüssel (
server.key
) und das Serverzertifikat (server.cert
) auf den Apache-Webserver.cat > server.key << EOF -----BEGIN PRIVATE KEY----- [...] -----END PRIVATE KEY----- EOF sudo cp ./server.key /etc/ssl/private/server.key
Ersetzen Sie
[...]
durch den PEM-codierten privaten Serverschlüssel, den Sie zuvor erstellt haben.cat > server.cert << EOF -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- EOF sudo cp ./server.cert /etc/ssl/certs/server.cert
Ersetzen Sie
[...]
durch das PEM-codierte Serverzertifikat, das Sie zuvor erstellt haben. -
Laden Sie das Clientzertifikat in die Vertrauensstellung des Servers hoch, um das Clientzertifikat zu validieren.
cat > client.cert << EOF -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- EOF sudo cp ./client.cert /etc/ssl/certs/client.cert
Ersetzen Sie [...] durch das PEM-codierte Clientzertifikat, das Sie zuvor erstellt haben.
-
Aktualisieren Sie die SSL-Konfiguration des Apache-Webservers.
Aktualisieren Sie die SSL-Konfiguration von Apache, um HTTPS-Traffic mit dem angegebenen SSL-Zertifikat und dem privaten Schlüssel zu aktivieren.
sudo vi /etc/apache2/sites-available/default-ssl.conf ---- SSLCertificateFile /etc/ssl/certs/server.cert SSLCertificateKeyFile /etc/ssl/private/server.key ----
Aktualisieren Sie die SSL-Konfiguration von Apache, damit eine Clientzertifikatauthentifizierung erforderlich ist, und geben Sie das CA-Zertifikat für die Validierung an.
sudo vi /etc/apache2/sites-available/default-ssl.conf ---- SSLVerifyClient require SSLVerifyDepth 5 SSLCACertificateFile /etc/ssl/certs/client.cert ----
-
CA-Zertifikate noch einmal hashieren.
sudo c_rehash /etc/ssl/certs/
-
Starten Sie den Apache-Webserver neu, damit die Änderungen übernommen werden.
sudo systemctl restart apache2.service