API Gateway에서 생성된 SSL 인증서의 오류를 해결하려면 어떻게 해야 하나요?

3분 분량
0

백엔드 시스템에 자체 서명되고 만료된 SSL 인증서를 설치하는 데 문제가 있습니다. 이러한 문제를 해결하려면 어떻게 해야 하나요?

간략한 설명

Amazon API Gateway가 백엔드와 SSL 핸드셰이크를 수행할 때 API Gateway는 백엔드가 신뢰할 수 있는 발급자로부터 받은 인증서를 제공할 것으로 예상합니다. API Gateway는 인증서가 유효하고 만료되지 않았을 것으로 예상합니다. 또한 API Gateway는 신뢰 체인이 손상되지 않았을 것으로 예상합니다. 즉, API Gateway는 인증서에 루트 인증 기관(CA), 중간 CA 및 상위 인증서 세부 정보가 포함되어 있을 것으로 예상합니다. API Gateway는 이 정보를 사용하여 인증서 체인을 통해 인증서 검증을 완료할 수 있습니다.

해결 방법

HTTP 프록시 통합 테스트

HTTP 프록시 통합에 익숙해지려면 API Gateway 콘솔에서 잘못된 SSL 인증서를 테스트하세요. 잘못된 SSL 인증서 및 테스트에 대한 자세한 내용은 잘못된 SSL 웹 사이트를 참조하세요.

1.    GET 메서드를 사용하여 이름이 ‘/selfsigned’인 리소스를 생성합니다. 그런 다음 URL https://self-signed.badssl.com/을 사용하여 HTTP 프록시 통합을 구성합니다.

API Gateway 콘솔에서 API를 테스트합니다. 다음과 같은 오류가 발생합니다.

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.    GET 메서드를 사용하여 이름이 ‘/expiredcert’인 리소스를 생성합니다. 그런 다음 URL https://expired.badssl.com/을 사용하여 HTTP 프록시 통합을 구성합니다.

API Gateway 콘솔에서 API를 테스트합니다. 다음과 같은 오류가 발생합니다.

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.    GET 메서드를 사용하여 이름이 ‘/untrustedRootCA’인 리소스를 생성합니다. URL https://untrusted-root.badssl.com/을 사용하여 HTTP 프록시 통합을 구성합니다.

API Gateway 콘솔에서 API를 테스트합니다. 다음과 같은 오류가 발생합니다.

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 링크 통합

VPC 링크 통합을 통해 API Gateway는 TLS 종료를 수행하는 다음 홉에서 인증서 검증을 수행합니다.

Network Load Balancer에 TLS 리스너가 있는 경우, Network Load Balancer는 TLS 종료를 수행하고 대상에 대한 또 다른 연결을 생성합니다. Network Load Balancer에 연결된 인증서는 모든 요구 사항을 충족해야 합니다. Network Load Balancer는 대상과의 SSL 핸드셰이크 중에 인증서 검증을 수행하지 않습니다. Network Load Balancer는 대상 인스턴스에 설치된 만료되었거나 자체 서명된 인증서를 수락합니다. Network Load Balancer와 대상 그룹이 VPC 내에 바인딩되며 통신은 안전합니다. Network Load Balancer가 TCP 리스너를 사용하는 경우 TLS 핸드셰이크는 엔드 투 엔드로 발생합니다. 이러한 경우 백엔드 애플리케이션은 SSL 요구 사항을 준수해야 합니다.

API Gateway는 VPC 링크 통합을 통한 SSL 핸드셰이크 중에 서버 이름 표시(SNI)를 지원합니다.

백엔드 Network Load Balancer에 CA에서 발급하지 않은 자체 서명 또는 사설 인증서가 있는 경우 다음 오류가 표시됩니다.

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

실행 실패 오류를 해결하는 차선책은 통합의 tlsConfig 객체에서 insecureSkipVerificationtrue로 설정하는 것입니다.

참고: EXAMPLE-REST-API-IDEXAMPLE-RESOURCE-ID를 사용자 값으로 변경합니다.

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"

관련 정보

백엔드 인증을 위한 SSL 인증서 생성 및 구성

HTTP 및 HTTP 프록시 통합에 대한 API Gateway 지원 인증 기관

Network Load Balancers 대상 그룹

AWS 공식
AWS 공식업데이트됨 일 년 전