Direkt zum Inhalt

Wie behebe ich einen 502-Fehler „The request could not be satisfied“ in CloudFront?

Lesedauer: 5 Minute
0

Ich habe eine Amazon CloudFront-Distribution mit einer benutzerdefinierten Domain konfiguriert. Ich möchte den 502-Fehler „The request could not be satisfied“ beheben, den ich erhalte, wenn ich CloudFront verwende, um die alternative Canonical Name (CNAME)-Domain (CNAME) anzufordern.

Lösung

CloudFront kann die Ursprungs-IP-Adresse nicht auflösen

Wenn CloudFront die Ursprungs-Domain nicht auflösen kann, wird der Fehler „The request could not be satisfied“ zurückgegeben. Sofern die Distribution nicht ausschließlich Amazon Virtual Private Cloud (Amazon VPC) Origins verwendet, muss CloudFront in der Lage sein, die Ursprungs-Domain über öffentliche DNS-Abfragen aufzulösen.

Du musst deinen Ursprung nicht öffentlich zugänglich machen, aber du musst in der Lage sein, seine Domain öffentlich abzufragen. Um dieses Problem zu beheben, verwende den Befehl dig oder nslookup, um zu ermitteln, ob die Ursprungs-Domain in eine IP-Adresse aufgelöst wird.

Wenn du Linux verwendest, führe den folgenden Befehl aus:

dig ORIGIN_DOMAIN_NAME

Wenn du Windows verwendest, führe den folgenden Befehl aus:

nslookup ORIGIN_DOMAIN_NAME

Hinweis: Ersetze ORIGIN_DOMAIN_NAME durch den ursprünglichen Domainnamen.

Die Befehle geben die IP-Adresse des Ursprungs-Domainnamens zurück. Verwende ein DNS-Checker-Tool, um die DNS-Auflösung in verschiedenen Regionen zu überprüfen. Du kannst beispielsweise das Tool DNS-Propagierung überprüfen auf der DNS Checker-Website verwenden. Überprüfe, ob die Bestätigungsmethoden die Ursprungs-Domain nicht abfragen. Wende dich dann an den öffentlichen DNS-Anbieter, um zu bestätigen, dass ein öffentlich auflösbarer DNS-Eintrag für die Ursprungs-Domain existiert.

Weitere Informationen zur DNS-Fehlerbehebung findest du unter Wie funktioniert DNS und wie behebe ich teilweise oder zeitweise auftretende DNS-Fehler?

Das SSL/TLS-Zertifikat stimmt nicht mit dem Domainnamen überein

Das SSL/TLS-Zertifikat am Ursprung muss einen der folgenden Domainnamen enthalten:

  • Der Name der Ursprungs-Domain im Feld ** Allgemeiner Name oder im ** Feld Alternative ** Betreffnamen ** des Zertifikats.
  • Der Domainname des Host-Headers für eingehende Viewer-Host-Header, die die Anfrage an den Ursprung in der CloudFront-Distribution weiterleitet.

Führe den folgenden Befehl aus, um im Zertifikat nach Allgemeiner Name und Alternativer Subjektname zu suchen:

openssl s_client -connect DOMAIN:443 -servername SERVER_DOMAIN | openssl x509 -text | grep -E '(CN|Alternative)' -A 2

Hinweis: Ersetze DOMAIN durch den Namen der Ursprungs-Domain und SERVER_DOMAIN durch den Namen der Ursprungs-Domain. Wenn die Anfrage den Host-Header des Viewers an den Ursprung weiterleitet, ersetze SERVER_DOMAIN durch den eingehenden Host-Header-Wert.

Du musst die Cache-Richtlinie oder die Richtlinie für Ursprungsanfragen so konfigurieren, dass der Host-Header in den folgenden Szenarien enthalten ist:

  • Das Ursprungszertifikat enthält den Viewer-Host-Header-Wert entweder als allgemeinen Namen des SSL/TLS-Zertifikats oder als alternativen Subjektnamen (SAN).
  • Die Anfrage leitet den Host-Header nicht an den Ursprung weiter.

Das Ursprungszertifikat ist abgelaufen, nicht vertrauenswürdig, selbstsigniert oder die Zertifikatskette ist in der falschen Reihenfolge

Eine vertrauenswürdige Zertifizierungsstelle (CA) muss das Zertifikat signieren, das du im benutzerdefinierten Ursprung installiert hast. Eine Liste der vertrauenswürdigen Zertifizierungsstellen findest du unter Zertifizierungsstellen auf der Mozilla-Website. CloudFront unterstützt keine Ursprünge, die selbstsignierte SSL/TLS-Zertifikate verwenden.

Um zu überprüfen, ob das Ursprungszertifikat abgelaufen ist, führe den folgenden OpenSSL-Befehl aus:

openssl s_client -connect DOMAIN:443 -servername SERVER_DOMAIN | openssl x509 -text | grep Validity -A 3

Hinweis: Ersetze DOMAIN durch den Namen der Ursprungs-Domain und SERVER_DOMAIN durch den Namen der Ursprungs-Domain. Wenn die Anfrage den Host-Header des Viewers an den Ursprung weiterleitet, ersetze SERVER_DOMAIN durch den eingehenden Host-Header-Wert.

Suche in der Befehlsausgabe nach den Parametern Not Before und Not After. Vergewissere dich, dass das aktuelle Datum und die aktuelle Uhrzeit innerhalb der Gültigkeitsdauer des Zertifikats liegen.

Fehlende CA-Zwischenzertifikate oder eine falsche Reihenfolge der Zwischenzertifikate führen dazu, dass die Kommunikation zwischen HTTPS und dem Ursprung fehlschlägt.

Führe den folgenden Befehl aus, um die Zertifikatskette zu überprüfen:

openssl s_client -showcerts -connect DOMAIN:443 -servername SERVER_DOMAIN

Hinweis: Ersetze DOMAIN durch den Namen der Ursprungs-Domain und SERVER_DOMAIN durch den Namen der Ursprungs-Domain. Wenn die Anfrage den Host-Header des Viewers an den Ursprung weiterleitet, ersetze SERVER_DOMAIN durch den eingehenden Host-Header-Wert.

Weitere Informationen findest du unter Anforderungen für die Verwendung von SSL/TLS-Zertifikaten mit CloudFront.

CloudFront unterstützt die Cipher Suite des Ursprungs nicht

SSL/TLS-Transaktionen zwischen CloudFront und dem Ursprung schlagen fehl, wenn es keine gemeinsame, ausgehandelte Cipher Suite gibt. Um dieses Problem zu beheben, musst du unterstützte Protokolle und Chiffren verwenden.

Verwende ein SSL-Server-Testtool, um zu überprüfen, ob die Liste der unterstützten Chiffren die Ursprungs-Cipher-Suite enthält. Du kannst beispielsweise den SSL-Servertest auf der Qualys-Website verwenden.

Es gibt Probleme mit dem Upstream-Ursprung

Du kannst einen Proxy Content Delivery Network (CDN)-Hostnamen oder einen Load Balancer, der mit dem Ursprung verbunden ist, als benutzerdefinierten Ursprung in der CloudFront-Distribution verwenden. Wenn einer dieser Vermittlungsdienste keine Verbindung zum Ursprung herstellen kann, erhältst du einen 502-Fehler. Um dieses Problem zu lösen, wende dich an den Ursprungs-Serviceanbieter.

Wenn du einen Application Load Balancer als Ursprung verwendest, findest du weitere Informationen unter Wie behebe ich HTTP 502-Fehler beim Application Load Balancer?

Wenn du Amazon API Gateway verwenden, findest du weitere Informationen unter Wie behebe ich HTTP 502-Fehler von API Gateway-REST-APIs mit Lambda-Proxy-Integration?

Die Lambda @Edge-Funktion, die der CloudFront-Distribution zugeordnet ist, hat die Überprüfung nicht bestanden

Wenn die Lambda @Edge-Funktion eine ungültige Antwort an CloudFront zurückgibt, gibt CloudFront einen 502-Fehler zurück. Um dieses Problem zu beheben, überprüfe die Lambda @Edge-Funktion auf die folgenden Probleme:

  • Das JSON-Objekt wird zurückgegeben.
  • Erforderliche Felder fehlen.
  • Objekte in der Antwort sind nicht gültig.
  • Die Möglichkeit, etwas hinzuzufügen oder zu aktualisieren, ist nicht zulässig.
  • Die Header sind schreibgeschützt.
  • Du hast die maximale Körpergröße überschritten.
  • Zeichen oder Werte sind nicht gültig.

Informationen zur Behebung dieser Probleme findest du unter Testen und Debuggen von Lambda @Edge-Funktionen. Weitere Informationen findest du unter Wie behebe ich 502- und 503-Fehler, die durch Lambda @Edge-Funktionen in CloudFront verursacht werden?

AWS OFFICIALAktualisiert vor einem Jahr