View a markdown version of this page

Gegenseitige Authentifizierung mit TLS im Application Load Balancer - Elastic Load Balancing

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.

Gegenseitige Authentifizierung mit TLS im Application Load Balancer

Die gegenseitige TLS-Authentifizierung ist eine Variante von Transport Layer Security (TLS). Herkömmliches TLS stellt eine sichere Kommunikation zwischen einem Server und einem Client her, bei der der Server seinen Clients seine Identität mitteilen muss. Bei gegenseitigem TLS handelt ein Load Balancer die gegenseitige Authentifizierung zwischen dem Client und dem Server aus, während gleichzeitig TLS ausgehandelt wird. Wenn Sie gegenseitiges TLS mit Ihrem Application Load Balancer verwenden, vereinfachen Sie die Authentifizierungsverwaltung und reduzieren die Belastung Ihrer Anwendungen.

Durch die Verwendung von gegenseitigem TLS kann Ihr Load Balancer die Client-Authentifizierung verwalten, um sicherzustellen, dass nur vertrauenswürdige Clients mit Ihren Backend-Anwendungen kommunizieren. Wenn Sie diese Funktion verwenden, authentifiziert der Load Balancer Clients mithilfe von Zertifikaten einer Drittanbieter-Zertifizierungsstelle (CA) oder mithilfe der AWS Private Certificate Authority (PCA), optional mit Sperrprüfungen. Der Load Balancer leitet die Client-Zertifikatsinformationen mithilfe von HTTP-Headern, die Ihre Anwendungen für die Autorisierung verwenden können, an das Backend weiter.

Mutual TLS for Application Load Balancers bietet die folgenden Optionen für die Validierung Ihrer Client-Zertifikate: X.509v3

  • Gegenseitiges TLS-Passthrough: Der Load Balancer sendet die gesamte Client-Zertifikatskette an das Ziel, ohne sie zu verifizieren. Ziele sollten die Client-Zertifikatskette verifizieren. Anschließend können Sie mithilfe der Client-Zertifikatskette die Load Balancer-Authentifizierungs- und Zielautorisierungslogik in Ihrer Anwendung implementieren.

  • Gegenseitige TLS-Überprüfung: Der Load Balancer führt die X.509 Client-Zertifikatsauthentifizierung für Clients durch, wenn ein Load Balancer TLS-Verbindungen aushandelt.

Um gegenseitiges TLS-Passthrough zu verwenden, müssen Sie den Listener so konfigurieren, dass er die Zertifikate von Clients akzeptiert. Informationen zur Verwendung von gegenseitigem TLS mit Überprüfung finden Sie unter. Konfiguration von gegenseitigem TLS auf einem Application Load Balancer

Bevor Sie mit der Konfiguration von gegenseitigem TLS auf Ihrem Application Load Balancer beginnen

Bevor Sie mit der Konfiguration von gegenseitigem TLS auf Ihrem Application Load Balancer beginnen, sollten Sie Folgendes beachten:

Kontingente

Für Application Load Balancer gelten bestimmte Grenzwerte in Bezug auf die Anzahl der in Ihrem AWS Konto verwendeten Trust Stores, CA-Zertifikate und Zertifikatssperrlisten.

Weitere Informationen finden Sie unter Kontingente für Application Load Balancer.

Anforderungen für Zertifikate

Application Load Balancer unterstützen Folgendes für Zertifikate, die mit gegenseitiger TLS-Authentifizierung verwendet werden:

  • Unterstütztes Zertifikat: X.509v3

  • Unterstützte öffentliche Schlüssel: RSA 2K — 8K oder ECDSA secp256r1, secp384r1, secp521r1

  • Unterstützte Signaturalgorithmen: SHA256, 384, 512 mit, 384, 512 mit ,384,512 Hash mit MGF1 RSA/SHA256 EC/SHA256 RSASSA-PSS

CA-Zertifikatspakete

Folgendes gilt für CA (Certificate Authority) -Pakete:

  • Application Load Balancer laden jedes Zertifikatspaket der Zertifizierungsstelle (CA) als Batch hoch. Application Load Balancer unterstützen das Hochladen einzelner Zertifikate nicht. Wenn Sie neue Zertifikate hinzufügen müssen, müssen Sie die Zertifikatspaketdatei hochladen.

  • Verwenden Sie die ModifyTrustStore API, um ein CA-Zertifikatspaket zu ersetzen.

Bestellung eines Zertifikats für Passthrough

Wenn Sie gegenseitiges TLS-Passthrough verwenden, fügt der Application Load Balancer Header ein, um den Backend-Zielen die Zertifikatskette des Clients zu präsentieren. Die Reihenfolge der Präsentation beginnt mit den Leaf-Zertifikaten und endet mit dem Stammzertifikat.

Wiederaufnahme der Sitzung

Die Wiederaufnahme der Sitzung wird nicht unterstützt, wenn Sie den Modus „Mutual TLS Passthrough“ oder „Verify“ mit einem Application Load Balancer verwenden.

HTTP-Header

Application Load Balancer verwenden X-Amzn-Mtls Header, um Zertifikatsinformationen zu senden, wenn sie Client-Verbindungen mithilfe von gegenseitigem TLS aushandeln. Weitere Informationen und Beispiel-Header finden Sie unter. HTTP-Header und gegenseitiges TLS

CA-Zertifikatsdateien

CA-Zertifikatsdateien müssen die folgenden Anforderungen erfüllen:

  • Die Zertifikatsdatei muss das PEM-Format (Privacy Enhanced Mail) verwenden.

  • Der Inhalt des Zertifikats muss innerhalb der -----END CERTIFICATE----- Grenzen -----BEGIN CERTIFICATE----- und liegen.

  • Kommentaren muss ein # Zeichen vorangestellt sein und darf keine - Zeichen enthalten.

  • Es dürfen keine Leerzeilen vorhanden sein.

Beispielzertifikat, das nicht akzeptiert wird (ungültig):

# comments Certificate: Data: Version: 3 (0x2) Serial Number: 01 Signature Algorithm: ecdsa-with-SHA384 Issuer: C=US, O=EXAMPLE, OU=EXAMPLE, CN=EXAMPLE Validity Not Before: Jan 11 23:57:57 2024 GMT Not After : Jan 10 00:57:57 2029 GMT Subject: C=US, O=EXAMPLE, OU=EXAMPLE, CN=EXAMPLE Subject Public Key Info: Public Key Algorithm: id-ecPublicKey Public-Key: (384 bit) pub: 00:01:02:03:04:05:06:07:08 ASN1 OID: secp384r1 NIST CURVE: P-384 X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Encipherment, Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE X509v3 Subject Key Identifier: 00:01:02:03:04:05:06:07:08 X509v3 Subject Alternative Name: URI:EXAMPLE.COM Signature Algorithm: ecdsa-with-SHA384 00:01:02:03:04:05:06:07:08 -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----

Beispiele für akzeptierte Zertifikate (gültig):

  1. Einzelzertifikat (PEM-codiert):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----
  2. Mehrere Zertifikate (PEM-codiert):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----

HTTP-Header und gegenseitiges TLS

In diesem Abschnitt werden die HTTP-Header beschrieben, die Application Load Balancer zum Senden von Zertifikatsinformationen verwenden, wenn sie Verbindungen mit Clients aushandeln, die gegenseitiges TLS verwenden. Die spezifischen X-Amzn-Mtls Header, die der Application Load Balancer verwendet, hängen vom von Ihnen angegebenen gegenseitigen TLS-Modus ab: Passthrough-Modus oder Verifizierungsmodus.

Informationen zu anderen HTTP-Headern, die von Application Load Balancers unterstützt werden, finden Sie unter. HTTP-Header und Application Load Balancer

HTTP-Header für den Passthrough-Modus

Für gegenseitiges TLS im Passthrough-Modus verwenden Application Load Balancer den folgenden Header.

Dieser Header enthält das URL-encoded PEM-Format der gesamten Client-Zertifikatskette, die in der Verbindung dargestellt wird, in Form von +=/ Sicherheitszeichen.

Beispiel für einen Header-Inhalt:

X-Amzn-Mtls-Clientcert: -----BEGIN%20CERTIFICATE-----%0AMIID<...reduced...>do0g%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIID1<...reduced...>3eZlyKA%3D%3D%0A-----END%20CERTIFICATE-----%0A

HTTP-Header für den Verifizierungsmodus

Für gegenseitiges TLS im Verifizierungsmodus verwenden Application Load Balancer die folgenden Header.

Dieser Header enthält eine hexadezimale Darstellung der Seriennummer des Leaf-Zertifikats.

Beispiel für einen Header-Inhalt:

X-Amzn-Mtls-Clientcert-Serial-Number: 03A5B1

Dieser Header enthält eine RFC2253-Zeichenfolge, die den Distinguished Name (DN) des Emittenten darstellt.

Beispiel für einen Header-Inhalt:

X-Amzn-Mtls-Clientcert-Issuer: CN=rootcamtls.com,OU=rootCA,O=mTLS,L=Seattle,ST=Washington,C=US

Dieser Header enthält eine RFC2253-Zeichenkette, die den Distinguished Name (DN) des Subjekts darstellt.

Beispiel für einen Header-Inhalt:

X-Amzn-Mtls-Clientcert-Subject: CN=client_.com,OU=client-3,O=mTLS,ST=Washington,C=US

Dieser Header enthält das UND-Datum im ISO8601-Format. notBefore notAfter

Beispiel für einen Header-Inhalt:

X-Amzn-Mtls-Clientcert-Validity: NotBefore=2023-09-21T01:50:17Z;NotAfter=2024-09-20T01:50:17Z

Dieser Header enthält ein URL-encoded PEM-Format des Blattzertifikats mit +=/ Sicherheitszeichen.

Beispiel für einen Header-Inhalt:

X-Amzn-Mtls-Clientcert-Leaf: -----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A

Die Betreffnamen der Advertising Certificate Authority (CA) verbessern den Authentifizierungsprozess, indem sie den Kunden helfen, zu bestimmen, welche Zertifikate bei der gegenseitigen TLS-Authentifizierung akzeptiert werden.

Wenn Sie die Option „CA-Betreffnamen bekannt geben“ aktivieren, gibt der Application Load Balancer die Liste der Betreffnamen von Zertifizierungsstellen (CAs) bekannt, denen er vertraut, basierend auf dem Trust Store, dem er zugeordnet ist. Wenn ein Client über den Application Load Balancer eine Verbindung zu einem Ziel herstellt, erhält der Client die Liste der vertrauenswürdigen CA-Betreffnamen.

Wenn der Application Load Balancer während des TLS-Handshakes ein Client-Zertifikat anfordert, nimmt er in seiner Zertifikatsanforderungsnachricht eine Liste vertrauenswürdiger CA Distinguished Names (DNs) auf. Auf diese Weise können Kunden gültige Zertifikate auswählen, die den angekündigten CA-Betreffnamen entsprechen, wodurch der Authentifizierungsprozess optimiert und Verbindungsfehler reduziert werden.

Sie können die Option „CA-Betreffnamen bekannt geben“ für neue und bestehende Listener aktivieren. Weitere Informationen finden Sie unter Hinzufügen eines HTTPS-Listeners.

Verbindungsprotokolle für Application Load Balancer

Elastic Load Balancing stellt Verbindungsprotokolle bereit, in denen Attribute zu den Anforderungen erfasst werden, die an Ihre Application Load Balancer gesendet wurden. Verbindungsprotokolle enthalten Informationen wie die Client-IP-Adresse und den Port, Informationen zum Client-Zertifikat, Verbindungsergebnisse und verwendete TLS-Chiffren. Diese Verbindungsprotokolle können dann verwendet werden, um Anforderungsmuster und andere Trends zu überprüfen.

Weitere Informationen zu Verbindungsprotokollen finden Sie unter Verbindungsprotokolle für Ihren Application Load Balancer