Come posso risolvere gli errori relativi ai certificati SSL generati da Gateway API?

4 minuti di lettura
0

Riscontro problemi con i certificati SSL autofirmati e scaduti installati sul mio sistema di back-end. Come posso correggere tali errori?

Breve descrizione

Quando esegue un handshake SSL con il back-end, Gateway Amazon API si aspetta che il back-end fornisca certificati ottenuti da emittenti affidabili. Gateway API prevede che i certificati siano validi e non scaduti. Il servizio si aspetta inoltre che la catena di fiducia sia intatta. Ciò significa che si aspetta che il certificato contenga un'autorità di certificazione (CA) root, CA intermedie e i dettagli del certificato principale. Con queste informazioni, Gateway API può completare la convalida dei certificati passando attraverso la catena di certificati.

Risoluzione

Test dell'integrazione di proxy HTTP

Per acquisire familiarità con le integrazioni di proxy HTTP, testa i certificati SSL non validi nella console Gateway API. Per ulteriori informazioni sui certificati SSL non validi e per i test, consulta il sito Web SSL non validi.

1.    Crea una risorsa denominata "/selfsigned" con un metodo GET. Quindi, configura un'integrazione di proxy HTTP con l'URL https://self-signed.badssl.com/.

Nella console Gateway API, testa l'API. Viene visualizzato il seguente errore:

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.    Crea una risorsa denominata "/expiredcert" con un metodo GET. Quindi, configura un'integrazione di proxy HTTP con l'URL https://expired.badssl.com/.

Nella console Gateway API, testa l'API. Viene visualizzato il seguente errore:

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.    Crea una risorsa denominata "/untrustedRootCA" con un metodo GET. Configura un'integrazione di proxy HTTP con l'URL https://untrusted-root.badssl.com/.

Nella console Gateway API, testa l'API. Viene visualizzato il seguente errore:

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

Integrazione del collegamento VPC

Con l'integrazione del collegamento VPC, Gateway API esegue la convalida dei certificati con l'hop successivo che esegue la terminazione TLS.

Quando dispone di un ascoltatore TLS, il Network Load Balancer esegue una terminazione TLS e crea un'altra connessione alla destinazione. Il certificato allegato al Network Load Balancer deve soddisfare tutti i requisiti. Un Network Load Balancer non esegue la convalida del certificato durante l'handshake SSL con la destinazione. Il Network Load Balancer accetta certificati scaduti o autofirmati installati nelle istanze di destinazione. Il Network Load Balancer e i gruppi di destinazione sono vincolati all'interno di un VPC e le comunicazioni sono sicure. Se il Network Load Balancer utilizza un ascoltatore TCP, l'handshake TLS avviene end-to-end. In questi casi, l'applicazione di back-end deve soddisfare i requisiti SSL.

Gateway API supporta l'indicazione del nome del server (SNI) durante un handshake SSL su un'integrazione del collegamento VPC.

Se il Network Load Balancer di back-end dispone di un certificato autofirmato o privato che non è stato emesso da una CA, viene visualizzato il seguente errore:

Execution failed due to configuration error: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

La soluzione alternativa per l'errore di esecuzione non riuscita consiste nell'impostare insecureSkipVerification su vero nell'oggetto tlsConfig dell'integrazione:

Nota: sostituisci EXAMPLE-REST-API-ID ed EXAMPLE-RESOURCE-ID con i tuoi valori.

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"

Informazioni correlate

Generazione e configurazione di un certificato SSL per l'autenticazione back-end

Autorità di certificazione supportate da API Gateway per le integrazioni HTTP e proxy HTTP

Gruppi di destinazione per i bilanciatori del carico di rete