HTTPS-Backend-TLS-Handshake nicht erfolgreich

Erfahren Sie, wie Sie Fehler beim HTTPS-Backend-TLS-Handshake beheben, wenn Sie API-Deployments mit dem API-Gateway-Service erstellen.

Wenn ein API-Deployment ein HTTPS-Backend verwendet, kann ein TLS-Handshake-Fehler die Anforderung stoppen, bevor der Backend-Service HTTP-Traffic verarbeitet. Der Fehler bedeutet normalerweise, dass das API-Gateway die Zertifikatskette oder TLS-Konfiguration, die das Backend darstellt, nicht validieren kann.

Problemsymptome

Möglicherweise sehen Sie eines oder mehrere der folgenden Symptome:

  • Die Backend-URL ist korrekt, die Anforderung verläuft jedoch nicht erfolgreich, bevor der Backend-Service die HTTP-Anforderung verarbeitet.

  • Im Ausführungslog wird der httpBackend.requestError-Logcode angezeigt.

  • Die Execution-Log-Meldung endet mit HANDSHAKE_FAILED.

  • Anforderungen verlaufen nicht erfolgreich, wenn der Backend-Service eine private Certificate Authority (CA), ein benutzerdefiniertes CA-Bundle oder eine Zertifikatskette verwendet, der das API-Gateway nicht vertraut.

Mögliche Gründe

HTTPS-Backend-TLS-Handshake-Fehler haben in der Regel eine der folgenden Ursachen:

  • Das Backend-Zertifikat ist abgelaufen, unvollständig oder ungültig.

  • In der Backend-Zertifikatskette fehlt ein Zwischenzertifikat.

  • Die Zertifikatskette verwendet eine CA, die nicht im API-Gateway-Truststore enthalten ist.

  • Der Backend-TLS-Listener ist falsch konfiguriert, einschließlich nicht unterstützter oder falscher TLS-Einstellungen.

  • Die TLS-Session ist nicht erfolgreich, bevor API Gateway die HTTP-Anforderung an das Backend senden kann.

Logmeldungen prüfen

Wiederholen Sie die Anforderung über API Gateway, und prüfen Sie dann das Ausführungslog für dieselbe Anforderung.

Verwenden Sie den folgenden Befehl, um die Anforderung zu wiederholen:

  • curl -i https://<gateway-hostname>/<deployment-path-prefix>/<api-route-path>

Prüfen Sie in Logging die folgenden Logdetails:

  • Erfassen Sie opc-request-id für die nicht erfolgreiche Anforderung.

  • Öffnen Sie das Ausführungslog für dieselbe Anforderung.

  • Prüfen Sie, ob der Logcode httpBackend.requestError lautet.

  • Bestätigen Sie, ob die Nachricht mit HANDSHAKE_FAILED endet.

Die folgende Logmeldung gibt an, dass der TLS-Handshake nicht erfolgreich war, bevor das Gateway die HTTP-Anforderung an das Backend gesendet hat:

  • An error occurred whilst sending request to https://<backend-url>: HANDSHAKE_FAILED

HTTPS-Backend-Konfiguration prüfen

Prüfen Sie die Routen- und Backend-Konfiguration für die nicht erfolgreiche Anforderung.

  • Stellen Sie sicher, dass backend.url auf das erwartete HTTPS-Backend verweist.

  • Vergewissern Sie sich, dass der Backend-Listener eine vollständige Zertifikatskette darstellt.

  • Wenn das Backend eine private CA oder ein benutzerdefiniertes CA-Bundle verwendet, bestätigen Sie, dass der API-Gateway-Truststore das erforderliche CA- oder CA-Bundle enthält.

  • Vergewissern Sie sich, dass die TLS-Listener-Konfiguration den HTTPS-Backend- und Truststore-Anforderungen für das API-Deployment entspricht.

HTTPS-Backend direkt validieren

Testen Sie den HTTPS-Listener von einem System, das das Backend direkt erreichen kann, außerhalb von API Gateway.

Verwenden Sie den folgenden Befehl, um den TLS-Handshake zu prüfen:

  • curl -v <backend-url>

Prüfen Sie die direkten Testergebnisse auf folgende Details:

  • Die Zertifikatskette, die der Backend-Listener anzeigt.

  • Das Ablaufdatum des Zertifikats und die Abdeckung des Hostnamens.

  • Das TLS-Protokoll und die Cipher-Konfiguration.

  • Alle Zertifikatsvalidierungsfehler, die auftreten, bevor die HTTP-Anforderung gesendet wird.

HTTPS-Backend-TLS-Probleme beheben

Wenden Sie den Fix an, der dem gefundenen Problem entspricht.

  • Wenn das Backend-Zertifikat abgelaufen ist, unvollständig ist oder ungültig ist, ersetzen oder korrigieren Sie die Zertifikatskette.

  • Wenn der Zertifikatskette ein Zwischenzertifikat fehlt, konfigurieren Sie den Backend-Listener so, dass die vollständige Kette angezeigt wird.

  • Wenn das Backend eine private CA oder ein benutzerdefiniertes CA-Bundle verwendet, fügen Sie das erforderliche CA- oder CA-Bundle zum API-Gateway-Truststore hinzu.

  • Wenn der Backend-Listener falsche TLS-Einstellungen verwendet, aktualisieren Sie die Listener-Konfiguration, und wiederholen Sie die Anforderung.

  • Wenn im Ausführungslog httpBackend.requestError mit HANDSHAKE_FAILED angezeigt wird, beheben Sie die Fehler beim HTTPS-Listener, bevor Sie die API-Gateway-Routenkonfiguration ändern.

HTTPS-Backend-Konnektivität überprüfen

Nachdem Sie die TLS-Konfiguration korrigiert haben, prüfen Sie, ob das API-Deployment das HTTPS-Backend erreichen kann.

  • Senden Sie dieselbe Anforderung über API Gateway.

  • Stellen Sie sicher, dass im Ausführungslog httpBackend.requestError nicht mehr mit HANDSHAKE_FAILED angezeigt wird.

  • Bestätigen Sie, dass der Backend-Service die HTTP-Anforderung empfängt und verarbeitet.

Weitere Informationen

Weitere Informationen finden Sie unter: