Gegenseitiges TLS verwenden
Die mTLS-Authentifizierung (mutual Transport Layer Security) stellt sicher, dass der Datenverkehr zwischen Client und Server in beiden Richtungen sicher und vertrauenswürdig ist. Sie ist nur für Kunden mit einem Enterprise-Tarif verfügbar.
Wenn mTLS konfiguriert ist, wird der Zugriff nur für Anforderungen mit entsprechendem Clientzertifikat gewährt. Wenn eine Anfrage Ihre Anwendung erreicht, antwortet CIS mit einer Anfrage nach dem Client-Zertifikat. Kann der Client kein Zertifikat vorlegen, darf die Anforderung nicht fortgesetzt werden. Andernfalls erfolgt der Schlüsselaustausch.
Gegenseitige TLS konfigurieren
Mutual TLS ( mTLS ) bietet eine zertifikatsbasierte Client-Authentifizierung für mehr Sicherheit. mTLS ist nicht standardmäßig aktiviert und erfordert eine vorherige Autorisierung auf Domänenbasis. Gehen Sie folgendermaßen vor, um mTLS, zu konfigurieren:
-
Genehmigung beantragen. Erstellen Sie einen Support-Fall, um die Aktivierung von mTLS für Ihr IBM Cloud Konto zu beantragen.
Nachdem mTLS aktiviert wurde, kann es nicht mehr deaktiviert werden.
-
Aktivieren Sie mTLS:
- Klicken Sie in der Konsole CIS auf Sicherheit und wählen Sie dann die Registerkarte Gegenseitiges TLS.
- Klicken Sie auf Aktivieren.
-
Root-Zertifikate hochladen:
-
Klicken Sie in der Tabelle Root-Zertifikate auf der Seite Gegenseitiges TLS auf Hinzufügen, um ein neues Root-Zertifikat zu definieren.
-
Fügen Sie den Inhalt des Zertifikats in das Feld Zertifikatsinhalt ein. Geben Sie einen Namen für das Root-CA-Zertifikat an, und fügen Sie einen oder mehrere vollqualifizierte Domänennamen (FQDNs) der Endpunkte hinzu, die dieses Zertifikat verwenden sollen.
Diese FQDNs sind die Hostnamen, die von den Ressourcen verwendet werden, die durch die Anwendungsrichtlinie mTLS geschützt sind. Sie müssen die Root-CA mit dem FQDN verknüpfen, der von der geschützten Anwendung verwendet wird.
-
Klicken Sie auf Speichern.
Wenn Sie ein Zwischenzertifikat verwenden, laden Sie die gesamte Zertifikatskette hoch.
-
-
Erstellen Sie eine mTLS Zugriffsrichtlinie:
-
Klicken Sie in der Tabelle MTLS-Zugangsrichtlinien auf der Seite Mutual TLS auf Erstellen, um eine Zugangsanwendung zu erstellen.
-
Wählen Sie oder geben Sie einen Hostnamen ein, der mit einem der FQDNs übereinstimmt, die mit dem hochgeladenen Stammzertifikat verknüpft sind, und klicken Sie auf Erstellen.
Die Anwendungsrichtlinie ist so voreingestellt, dass sie eine Entscheidung von
non_identity
verwendet und eine Regel enthält, die jedem gültigen Client-Zertifikat entspricht.
-
-
Aktivieren Sie die Weiterleitung von Client-Zertifikaten über die API:
Um validierte Client-Zertifikate an Ihren Ursprungsserver weiterzuleiten (nützlich für Protokollierung, Prüfung oder Back-End-Authentifizierung), müssen Sie die Weiterleitung aktivieren.
Das Client-Zertifikat wird nur mit der ersten Anfrage in jeder mTLS Verbindung weitergeleitet.
Ein API-Curl-Beispiel zum Aktivieren der Weiterleitung von Client-Zertifikaten finden Sie unter Einstellungen für Zugriffszertifikate aktualisieren API.
Client-Zertifikat-Header, die an Ihren Ursprungsserver gesendet werden:
Cf-Client-Cert-Der-Base64
: Base64-encoded DER-Version des Client-ZertifikatsCf-Client-Cert-Sha256
: SHA-256 Fingerabdruck des Client-Zertifikats
Um den Weiterleitungsstatus mit der API zu überprüfen:
curl -X GET https://api.cis.cloud.ibm.com/v1/crn:v1:bluemix:public:internet-svcs:global:a/<account-id>:<instance-id>::/zones/<zone-id>/access/certificates/settings \ -H 'X-Auth-User-Token: Bearer <IAM-TOKEN>'
-
Erstellen Sie eine benutzerdefinierte WAF-Regel, um unauthentifizierte Anfragen zu blockieren:
Zur Verbesserung der Sicherheit, insbesondere für sensible Endpunkte wie Anmeldepfade oder APIs, erstellen Sie eine WAF-Regel, um Anfragen zu blockieren, für die kein gültiges Client-Zertifikat vorliegt.
-
Navigieren Sie in der Konsole CIS zurück zum Abschnitt Sicherheit und wählen Sie dann die Registerkarte Benutzerdefinierte Regeln.
-
Klicken Sie auf Erstellen.
-
Klicken Sie im Seitenbereich Benutzerdefinierte WAF-Regel erstellen auf Ausdruckseditor verwenden.
-
Geben Sie die folgende Bedingung in das Feld Use Expression Builder ein (aktualisieren Sie
hostname
undpath
nach Bedarf).(http.host eq "example.com" and http.request.uri.path eq "/authenticate" and not cf.tls_client_auth.cert_verified)
-
Setzen Sie die Aktion auf Blockieren.
-
Klicken Sie auf Erstellen.
Diese Regel erlaubt den Zugang zur Authentifizierung nur, wenn das Client-Zertifikat erfolgreich überprüft wurde. Anfragen ohne mTLS oder mit ungültigen Zertifikaten werden blockiert.
-
Testen des mTLS Zugriffs
Das folgende Beispiel verwendet curl, um die Authentifizierung von mTLS zu testen, indem Anfragen mit und ohne Client-Zertifikat gestellt werden.
-
Versuch, ohne Client-Zertifikat auf die Website zuzugreifen.
Dieses Beispiel demonstriert die Verwendung von curl, um den Zugriff auf eine Website zu testen, die mTLS erzwingt. Das Ziel URL ist in diesem Beispiel
https://auth.example.com
.curl -sv https://auth.example.com
Da kein Client-Zertifikat zur Verfügung gestellt wird, wird die Anfrage voraussichtlich mit einer
403 Forbidden
Antwort fehlschlagen. -
Fügen Sie der Anfrage Ihr Client-Zertifikat und Ihren privaten Schlüssel hinzu:
curl -sv https://auth.example.com --cert example.pem --key key.pem
Wenn der Client ordnungsgemäß authentifiziert ist, enthält die Antwort einen
CF_Authorization Set-Cookie
Header, der die erfolgreiche mTLS Authentifizierung anzeigt.
Gegenseitiges TLS validieren
Wenn Sie diese Zugriffsrichtlinie aktivieren, verwenden Sie den folgenden Arbeitsablauf, um Client-Zertifikate zu validieren:
Alle an den Ursprung gerichteten Anforderungen werden auf ein gültiges Clientzertifikat überprüft.
- Der Client initiiert eine Verbindung durch Senden einer
Hello
Nachricht. - Die Zugangsanwendung antwortet mit einer
Hello
und fordert das Client-Zertifikat an. - Der Client sendet sein Zertifikat zur Validierung.
- Das Client-Zertifikat wird anhand der konfigurierten Stammzertifizierungsstelle authentifiziert.
- Wenn eine Zertifikatskette verwendet wird, prüft das System auch auf abgelaufene Zertifikate und validiert die gesamte Kette.
- Wenn das Client-Zertifikat vertrauenswürdig ist, wird ein signiertes JSON-Web-Token (JWT) für den Client generiert, das die Anfrage und nachfolgende Anfragen ermöglicht.
- Wenn der Client kein gültiges Zertifikat vorlegt, gibt der Server eine Antwort
403 Forbidden
zurück.
Um Zugangszertifikate über die API abzurufen, siehe Zugangszertifikate auflisten.