Wie behebe ich Fehler mit SSL-Zertifikaten, die von API Gateway generiert werden?

Lesedauer: 4 Minute
0

Ich habe Probleme mit selbstsignierten und abgelaufenen SSL-Zertifikaten, die auf meinem Backend-System installiert sind. Wie behebe ich diese Fehler?

Kurzbeschreibung

Wenn Amazon API Gateway einen SSL-Handshake mit dem Backend durchführt, erwartet API Gateway, dass das Backend Zertifikate bereitstellt, die von vertrauenswürdigen Ausstellern bezogen wurden. API Gateway erwartet, dass die Zertifikate gültig und nicht abgelaufen sind. API Gateway geht auch davon aus, dass die Vertrauenskette intakt ist. Das bedeutet, dass API Gateway erwartet, dass das Zertifikat eine Stammzertifizierungsstelle (CA), Zwischenzertifizierungsstellen und die Details des übergeordneten Zertifikats enthält. Mit diesen Informationen kann API Gateway die Zertifikatsvalidierung abschließen, indem es die Zertifikatskette durchläuft.

Lösung

HTTP-Proxy-Integrationen testen

Um sich mit HTTP-Proxy-Integrationen vertraut zu machen, testen Sie schlechte SSL-Zertifikate von der API-Gateway-Konsole aus. Weitere Informationen zu schlechten SSL-Zertifikaten und zum Testen finden Sie auf der Website Bad SSL.

1.    Erstellen Sie eine Ressource mit dem Namen „/selfsigned“ mit einer GET-Methode. Konfigurieren Sie anschließend eine HTTP-Proxy-Integration mit der URL https://self-signed.badssl.com/.

Testen Sie die API von der API-Gateway-Konsole aus. Sie erhalten 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

2.    Erstellen Sie eine Ressource mit dem Namen „/expiredcert“ mit einer GET-Methode. Konfigurieren Sie anschließend eine HTTP-Proxy-Integration mit der URL https://expired.badssl.com/.

Testen Sie die API von der API-Gateway-Konsole aus. Sie erhalten 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

3.    Erstellen Sie eine Ressource mit dem Namen „/untrustedRootCA“ mit einer GET-Methode. Konfigurieren Sie eine HTTP-Proxy-Integration mit der URL https://untrusted-root.badssl.com/.

Testen Sie die API von der API-Gateway-Konsole aus. Sie erhalten 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

VPC-Link-Integration

Bei der VPC-Link-Integration führt API Gateway die Zertifikatsvalidierung mit dem nächsten Hop durch, der die TLS-Terminierung durchführt.

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 dem Network Load Balancer beigefügte Zertifikat 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 auf den Ziel-Instances installiert sind. Der Network Load Balancer und die Zielgruppen sind innerhalb einer VPC gebunden und die Kommunikation ist sicher. Wenn der Network Load Balancer einen TCP-Listener verwendet, erfolgt der TLS-Handshake von Ende zu Ende. In diesen Fällen 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 nicht von einer Zertifizierungsstelle ausgestellt wurde, erhalten Sie 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

Die Problemumgehung für den Fehler, dass die Ausführung fehlgeschlagen ist, besteht darin, insecureSkipVerification im tlsConfig-Objekt der Integration auf wahr zu setzen:

Hinweis: Ersetzen Sie EXAMPLE-REST-API-ID und EXAMPLE-RESOURCE-ID durch Ihre Werte.

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"

Ähnliche Informationen

SSL-Zertifikat für die Backend-Authentifizierung generieren und konfigurieren

Von API Gateway unterstützte Zertifizierungsstellen für HTTP- und HTTP-Proxy-Integrationen

Zielgruppen für Ihre Network Load Balancer

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr