Come posso risolvere l'errore 502: "The request could not be satisfied" (Impossibile soddisfare la richiesta) di CloudFront?

Ultimo aggiornamento: 22/12/2022

Ho configurato una distribuzione Amazon CloudFront con un dominio personalizzato. Quando richiedo un nome canonico (CNAME) di dominio alternativo su CloudFront, visualizzo una risposta di errore 502 con il messaggio "The request could not be satisfied" (Impossibile soddisfare la richiesta).

Breve descrizione

Un errore 502 si verifica quando CloudFront non è in grado di connettersi all'origine. Consulta le sezioni seguenti relative alle cause dell'errore e alla risoluzione dei problemi.

Risoluzione

CloudFront non riesce a stabilire una connessione TCP con il server di origine

Per impostazione predefinita, CloudFront si connette all'origine mediante le porte 80 (per HTTP) e 443 (per HTTPS). Se l'origine non consente il traffico su queste porte o blocca la connessione dell'indirizzo IP di CloudFront, la connessione TCP non riesce. L'esito negativo produce un errore 502. Per risolvere il problema, verifica che l'impostazione Protocol (Protocollo) della distribuzione di CloudFront sia configurata sulla porta corretta per le connessioni HTTP o HTTPS.

Esegui il seguente comando per testare la connettività delle porte:

telnet ORIGIN_DOMAIN/ORIGIN_IP PORT

Nota: nel campo ORIGIN_DOMAIN inserisci l'ID del dominio di origine. Nel campo ORIGIN_IP inserisci l'indirizzo IP dell'origine. Nel campo PORT inserisci il numero di porta che stai utilizzando per connetterti all'origine.

Negoziazione SSL/TLS con il server di origine non riuscita

Se la transazione SSL/TLS ha esito negativo, la connessione tra CloudFront e l'origine non riesce e genera un errore 502. Consulta le sezioni seguenti per scoprire le cause di un errore di transazione SSL/TLS e come risolverlo.

Il certificato SSL non corrisponde al nome di dominio

Il certificato SSL all'origine deve includere o coprire uno dei seguenti nomi di dominio:

  • Il nome del dominio di origine nei seguenti campi del certificato: Common Name (Nome comune) o Subject Alternative Names (Nomi alternativi del soggetto).
  • Il nome di dominio dell'intestazione host per le intestazioni host del visualizzatore in entrata che vengono inoltrate all'origine nella distribuzione di CloudFront.

Per verificare il Common Name (Nome comune) e i Subject Alternative Names (Nomi alternativi del soggetto) nel certificato, esegui il seguente comando:

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

Nota: nel campo DOMAIN inserisci il nome del dominio di origine. Nel campo SERVER_DOMAIN inserisci il nome del dominio di origine. In alternativa, se l'intestazione host del visualizzatore viene inoltrata all'origine, nel campo SERVER_DOMAIN inserisci il valore dell'intestazione host in entrata.

Se si verificano le seguenti condizioni, configura la policy di cache o la policy delle richieste di origine in modo da includere l'intestazione host:

  1. Il nome comune o la rete SAN (Storage Area Network) del certificato SSL include il valore dell'intestazione host del visualizzatore.
  2. L'intestazione host non viene inoltrata all'origine.

Il certificato di origine è scaduto, non attendibile o autofirmato

Il certificato installato nell'origine personalizzata deve essere firmato da un'autorità di certificazione attendibile. Le autorità di certificazione considerate attendibili da CloudFront sono riportate nell'elenco di certificati CA inclusi in Mozilla disponibile sul sito Web di Mozilla.

CloudFront non supporta i certificati autofirmati per la configurazione SSL con l'origine. I certificati autofirmati vengono emessi dalle organizzazioni stesse o sono generati localmente su un server Web anziché essere emessi da un'autorità di certificazione attendibile.

Per verificare se il tuo certificato di origine è scaduto, esegui il seguente comando OpenSSL. Nell'output, trova i parametri Not Before (Non prima) e Not After (Non dopo). Conferma che la data e l'ora correnti rientrano nel periodo di validità del certificato.

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

Nota: nel campo DOMAIN inserisci il nome del dominio di origine. Nel campo SERVER_DOMAIN inserisci il nome del dominio di origine. In alternativa, se l'intestazione host del visualizzatore viene inoltrata all'origine, nel campo SERVER_DOMAIN inserisci il valore dell'intestazione host in entrata.

La mancanza di certificati CA intermedi o l'ordine errato dei certificati intermedi causa un errore tra la comunicazione HTTPS e l'origine. Per verificare la catena di certificati, esegui il seguente comando.

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

Nota: in DOMAIN, inserisci il nome del dominio di origine e in SERVER_DOMAIN inserisci il nome del dominio di origine. In alternativa, se l'intestazione host del visualizzatore viene inoltrata all'origine, nel campo SERVER_DOMAIN inserisci il valore dell'intestazione host in entrata.

CloudFront non supporta la suite di crittografia dell'origine

Le transazioni SSL/TLS tra CloudFront e l'origine hanno esito negativo se non esiste una suite di crittografia negoziata comune. Per verificare se stai utilizzando la suite di crittografia corretta, consulta Protocolli e cifrari supportati tra i visualizzatori e CloudFront.

Puoi anche utilizzare uno strumento di test del server SSL per verificare se il tuo nome di dominio di origine è incluso nell'elenco delle crittografie supportate.

CloudFront non è in grado di risolvere l'indirizzo IP di origine

Se non è in grado di risolvere il dominio di origine, CloudFront restituisce l'errore 502. Per risolvere questo problema, utilizza un comando dig/nslookup per verificare se il dominio di origine si risolve in un IP.

Linux:

$ dig ORIGIN_DOMAIN_NAME

Windows:

nslookup ORIGIN_DOMAIN_NAME

Nota: in ORIGIN_DOMAIN_NAME inserisci il nome del dominio di origine.

In caso di esito positivo, il comando restituisce l'IP del nome di dominio di origine. Utilizza uno strumento di verifica DNS per verificare la risoluzione DNS in diverse aree geografiche.

L'errore è causato a un'origine a monte

L'origine personalizzata definita nella distribuzione di CloudFront può essere un proxy, un nome host di rete di distribuzione di contenuti (CDN) o un sistema di bilanciamento del carico connesso all'origine effettiva. Se uno di questi servizi intermedi non riesce a connettersi all'origine, a CloudFront viene restituito un errore 502. Per risolvere il problema, rivolgiti al tuo fornitore di servizi.

La funzione Lambda@Edge associata alla distribuzione di CloudFront ha avuto esito negativo

Se la funzione Lambda@Edge restituisce una risposta non valida a CloudFront, quest'ultimo restituisce un errore 502. Per risolvere questa situazione, controlla la funzione Lambda@Edge per vedere se si verificano i seguenti problemi comuni:

  • Oggetto JSON restituito
  • Campi obbligatori mancanti
  • Oggetto non valido nella risposta
  • Aggiunta o aggiornamento di intestazioni non consentite o di sola lettura
  • Superamento delle dimensioni massime del testo
  • Caratteri o valori non validi

Per ulteriori informazioni, consulta Esecuzione di test e debugging delle funzioni Lambda@Edge.


Questo articolo è stato utile?


Hai bisogno della fattura o di supporto tecnico?