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 ermöglicht eine sichere Kommunikation zwischen einem Server und einem Client, wobei der Server seinen Clients seine Identität mitteilen muss. Bei Mutual TLS handelt ein Load Balancer bei der Aushandlung von TLS die gegenseitige Authentifizierung zwischen dem Client und dem Server aus. Wenn Sie Mutual TLS mit Application Load Balancer verwenden, vereinfachen Sie das Authentifizierungsmanagement und reduzieren die Belastung Ihrer Anwendungen.

Durch die Verwendung von Mutual TLS mit Application Load Balancer 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 Application Load Balancer Clients mit Zertifikaten von einer Zertifizierungsstelle (CA) eines Drittanbieters oder mithilfe der AWS Private Certificate Authority (PCA), optional, mit Sperrprüfungen. Application Load Balancer leitet Client-Zertifikatsinformationen an das Backend weiter, die Ihre Anwendungen für die Autorisierung verwenden können. Durch die Verwendung von Mutual TLS in Application Load Balancer erhalten Sie eine integrierte, skalierbare, verwaltete Authentifizierung für zertifikatsbasierte Entitäten, die etablierte Bibliotheken verwendet.

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

Hinweis: X.509v1-Client-Zertifikate werden nicht unterstützt.

  • Gegenseitiger TLS-Passthrough: Wenn Sie den Mutual TLS-Passthrough-Modus verwenden, sendet Application Load Balancer die gesamte Client-Zertifikatskette mithilfe von HTTP-Headern an das Ziel. Mithilfe der Client-Zertifikatskette können Sie dann die entsprechende Load Balancer-Authentifizierung und Zielautorisierungslogik in Ihrer Anwendung implementieren.

  • Gegenseitige TLS-Überprüfung: Wenn Sie den Modus für die gegenseitige TLS-Überprüfung verwenden, führt Application Load Balancer die X.509-Client-Zertifikatsauthentifizierung für Clients durch, wenn ein Load Balancer TLS-Verbindungen aushandelt.

Um mit Mutual TLS in Application Load Balancer mithilfe von Passthrough zu beginnen, müssen Sie den Listener nur so konfigurieren, dass er Zertifikate von Clients akzeptiert. Um Mutual TLS mit Verifizierung zu verwenden, müssen Sie wie folgt vorgehen:

  • Erstellen Sie eine neue Trust Store-Ressource.

  • Laden Sie Ihr Zertifizierungsstellenpaket (CA) und optional Sperrlisten hoch.

  • Hängen Sie den Trust Store an den Listener an, der für die Überprüfung von Client-Zertifikaten konfiguriert ist.

step-by-stepVerfahren zur Konfiguration des Modus für die gegenseitige TLS-Überprüfung mit Ihrem Application Load Balancer finden Sie unterKonfiguration von Mutual TLS auf einem Application Load Balancer.

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

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

Kontingente

Application Load Balancers enthalten bestimmte Beschränkungen 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 Ihre Application Load Balancers.

Anforderungen für Zertifikate

Application Load Balancers 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 SHA256 Signaturalgorithmen:, 384, RSA/SHA256, 384, 512 with EC/SHA 512 mit 256.384.512 Hash mit RSASSA-PSS mit MGF1

CA-Zertifikatspakete

Folgendes gilt für Zertifizierungsstellen-Pakete (CA):

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

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

Reihenfolge der Zertifikate für Passthrough

Wenn Sie den gegenseitigen 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 Sitzungswiederaufnahme wird nicht unterstützt, wenn der Modus Mutual TLS Passthrough oder Verify mit einem Application Load Balancer verwendet wird.

HTTP-Header

Application Load Balancer verwenden X-Amzn-Mtls Header, um Zertifikatsinformationen zu senden, wenn es Clientverbindungen mit gegenseitigem TLS aushandelt. 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.

  • Den Kommentaren muss ein # Zeichen vorangestellt werden und sie dürfen 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-----

Beispielzertifikate, die akzeptiert werden (gültig):

  1. Einzelzertifikat (PEM-codiert):

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

    # 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 Balancers verwenden, um Zertifikatsinformationen zu senden, wenn Verbindungen mit Clients, die gegenseitiges TLS verwenden, aushandeln. 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.

Hinweise 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 Mutual TLS im Passthrough-Modus verwenden Application Load Balancer den folgenden Header.

Dieser Header enthält das URL-kodierte PEM-Format der gesamten Client-Zertifikatskette, die in der Verbindung dargestellt wird, mit sicheren Zeichen. +=/

Inhalt eines Beispiel-Headers:

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 Überprüfungsmodus

Für gegenseitiges TLS im Überprüfungsmodus verwenden Application Load Balancer die folgenden Header.

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

Beispiel für den Inhalt der Kopfzeile:

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

Dieser Header enthält eine RFC2253 Zeichenkettendarstellung des definierten Namens (DN) des Emittenten.

Beispiel für den Inhalt der Kopfzeile:

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

Dieser Header enthält eine RFC2253 Zeichenkettendarstellung des definierten Namens (DN) des Betreffs.

Beispiel für den Inhalt einer Kopfzeile:

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 Format 01. ISO86 notBefore notAfter

Beispiel für den Inhalt einer Kopfzeile:

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

Dieser Header enthält ein URL-codiertes PEM-Format des Leaf-Zertifikats mit sicheren Zeichen. +=/

Beispiel für den Inhalt einer Kopfzeile:

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 Kunden dabei helfen, zu bestimmen, welche Zertifikate bei der gegenseitigen TLS-Authentifizierung akzeptiert werden.

Wenn Sie die Option Betreffnamen von Zertifizierungsstellen ankündigen aktivieren, kündigt der Application Load Balancer die Liste der Zertifizierungsstellen (CAs), denen er vertraut, basierend auf dem Vertrauensspeicher, dem er zugeordnet ist, an. 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 eine Liste vertrauenswürdiger CA Distinguished Names (DNs) in seine Zertifikatsanforderungsnachricht auf. Dies hilft den Clients bei der Auswahl gültiger Zertifikate, die den angegebenen CA-Betreffnamen entsprechen, wodurch der Authentifizierungsprozess optimiert und Verbindungsfehler reduziert werden.

Sie können den Betreffnamen der Zertifizierungsstelle für neue und bestehende Listener ankündigen aktivieren. Weitere Informationen finden Sie unter Hinzufügen eines HTTPS-Listeners.

Verbindungsprotokolle für Application Load Balancer

Elastic Load Balancing stellt Verbindungsprotokolle bereit, die Attribute der an Ihre Application Load Balancer gesendeten Anfragen erfassen. Verbindungsprotokolle enthalten Informationen wie die Client-IP-Adresse und den Port, Informationen zum Client-Zertifikat, die Verbindungsergebnisse und die verwendeten 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