Direkt zum Inhalt

Wie behebe ich Fehler mit von API Gateway generierten SSL-Zertifikaten?

Lesedauer: 4 Minute
0

Ich möchte Probleme mit von Amazon API Gateway generierten selbstsignierten und abgelaufenen SSL-Zertifikaten lösen, die ich auf meinem Backend-System installiert habe.

Lösung

HTTP-Proxy-Testintegration

Verwende die API Gateway-Konsole, um schlechte SSL-Zertifikate zu testen. Eine Liste der schlechten SSL-Zertifikate findest du unter badssl.com auf der Website zu Bad SSL.

Führe die folgenden Schritte aus:

  1. Erstelle eine Ressource mit dem Namen /selfsigned.
  2. Erstelle eine GET-Methode für die Ressource.
  3. Konfiguriere eine HTTP-Proxyintegration mit der URL.
  4. Öffne die API Gateway-Konsole.
  5. Teste die API.
  6. Wiederhole jeden der vorherigen Schritte mit einer Ressource /expiredcert und dann mit einer weiteren Ressource mit dem Namen /untrustedRootCA.

Für die Ressource mit dem Namen /selfsigned erhältst du die folgende Fehlermeldung:

„Thu Dec 15 16:05:05 UTC 2022 : Sending request to https://self-signed.badssl.com/
Thu Dec 15 16:05:05 UTC 2022 : Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target“ (Donnerstag, 15. Dezember, 16:05:05 UTC 2022: Anfrage an https://self-signed.badssl.com/ senden Donnerstag, 15. Dezember, 16:05:05 UTC 2022: Ausführung fehlgeschlagen aufgrund eines Konfigurationsfehlers: Fehler beim Erstellen des PKIX-Pfads: sun.security.provider.certpath.SunCertPathBuilderException: Es konnte kein gültiger Zertifizierungspfad zum angeforderten Ziel gefunden werden)

Für die Ressource mit dem Namen /expiredcert erhältst du die folgende Fehlermeldung:

„Thu Dec 15 16:06:02 UTC 2022 : Sending request to https://expired.badssl.com/
Thu Dec 15 16:06:02 UTC 2022 : Execution failed due to configuration error: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed“ (Donnerstag, 15. Dezember, 16:06:02 UTC 2022: Anfrage an https://expired.badssl.com/ senden Donnerstag, 15. Dezember, 16:06:02 UTC 2022:Ausführung fehlgeschlagen aufgrund eines Konfigurationsfehlers: PKIX-Pfadvalidierung fehlgeschlagen: java.security.cert.certPathValidatorException: Gültigkeitsprüfung fehlgeschlagen)

Für die Ressource mit dem Namen /untrustedRootCA erhältst du die folgende Fehlermeldung:

„Thu Dec 15 16:06:28 UTC 2022 : Sending request to https://untrusted-root.badssl.com/
Thu Dec 15 16:06:28 UTC 2022 : Execution failed due to configuration error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target“ (Donnerstag, 15. Dezember, 16:06:28 UTC 2022: Anfrage an https://untrusted-root.badssl.com/ senden Donnerstag, 15. Dezember, 16:06:28 UTC 2022: Ausführung fehlgeschlagen aufgrund eines Konfigurationsfehlers: Fehler beim Erstellen des PKIX-Pfads: sun.security.provider.certpath.SunCertPathBuilderException: Es konnte kein gültiger Zertifizierungspfad zum angeforderten Ziel gefunden werden)

Konfigurationsfehler beheben

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.

Wenn ein Network Load Balancer über einen TLS-Listener verfügt, führt der Network Load Balancer eine TLS-Terminierung durch und stellt eine weitere Verbindung zum Ziel her. Das Zertifikat, das an den Network Load Balancer angehängt ist, muss alle Anforderungen erfüllen.

Ein Network Load Balancer führt während des SSL-Handshakes mit dem Ziel keine Zertifikatsvalidierung durch. Der Network Load Balancer akzeptiert abgelaufene oder selbstsignierte Zertifikate, die du auf den Ziel-Instances installiert hast. Der Network Load Balancer und die Zielgruppen sind innerhalb einer Virtual Private Cloud (VPC) miteinander verbunden. Wenn der Network Load Balancer einen TCP-Listener verwendet, erfolgt der TLS-Handshake Ende-zu-Ende. In diesem Fall muss die Backend-Anwendung die SSL-Anforderungen erfüllen.

API Gateway unterstützt Server Name Indication (SNI) während eines SSL-Handshakes über eine VPC-Link-Integration.

Wenn der Backend-Network Load Balancer über ein selbstsigniertes oder privates Zertifikat verfügt, das keine Zertifizierungsstelle (CA) ausgestellt hat, erhältst du die folgende Fehlermeldung:

„Execution failed due to configuration error: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target“ (Ausführung fehlgeschlagen aufgrund eines Konfigurationsfehlers: Fehler beim Erstellen des PKIX-Pfads: sun.security.provider.certpath.SunCertPathBuilderException: Es konnte kein gültiger Zertifizierungspfad zum angeforderten Ziel gefunden werden)

Um dieses Problem zu beheben, führe den folgenden AWS-CLI-Befehl update-integration aus und setze insecureSkipVerification im TLSConfig-Objekt der Integration auf true:

aws apigateway update-integration --rest-api-id EXAMPLE-REST-API-ID --resource-id EXAMPLE-RESOURCE-ID --http-method GET --patch-operations "op='replace',path='/tlsConfig/insecureSkipVerification',value=true"

Hinweis: Ersetze EXAMPLE-REST-API-ID und EXAMPLE-RESOURCE-ID durch deine Werte.

Ähnliche Informationen

Generieren und Konfigurieren eines SSL-Zertifikats für die Backend-Authentifizierung in API Gateway