HTTPS를 통해 사용자 지정 오리진에 CloudFront 배포를 연결하는 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 7월 9일

HTTPS를 사용하여 사용자 지정 오리진에 연결하도록 Amazon CloudFront 배포를 구성했습니다. 이제 HTTP 상태 코드 502(잘못된 게이트웨이)와 함께 ‘CloudFront가 오리진에 연결할 수 없습니다’라는 오류가 표시됩니다.

해결 방법

CloudFront 배포의 오리진 도메인 이름이 인증서 도메인 이름과 일치하는지 확인

CloudFront 배포에 지정된 오리진 도메인 이름이 오리진 SSL/TLS 인증서의 도메인 이름과 일치하는지 확인합니다. 배포의 오리진 도메인 이름은 다음 중 하나와 일치할 수 있습니다.

  • 인증서의 일반 이름(CN)으로 지정된 도메인 이름
  • 인증서의 주체 대체 이름(SAN)에 지정된 도메인 이름

오리진 도메인 이름이 인증서에 연결된 도메인 이름과 일치하지 않는 경우, CloudFront는 HTTP 상태 코드 502(잘못된 게이트웨이)를 반환합니다.

중간 인증 기관의 누락 여부 확인

SSL 검사기를 사용하여 오리진의 인증서 체인을 사용할 수 있으며 중간 인증 기관이 필요하지 않은지 테스트합니다.

Elastic Load Balancing을 사용자 지정 오리진으로 사용하고 인증서 체인을 업데이트해야 하는 경우 다음을 수행합니다.

올바른 인증서 체인을 사용하여 인증서를 다시 업로드합니다.

-또는-

AWS Certificate Manager(ACM)를 사용하여 도메인을 보호하는 공개 인증서를 요청합니다. ACM은 Elastic Load Balancing과 완벽하게 통합됩니다.

오리진의 지원되는 프로토콜 정책 및 암호 테스트

SSL 핸드섀이크가 성공하려면 오리진이 CloudFront가 사용하는 암호를 지원해야 합니다.

오리진 프로토콜 정책에 SSLv3이 활성화되어 있는 경우, CloudFront는 SSLv3만 사용하여 명령줄 또는 Windows 터미널에서 오리진과 통신합니다.

참고: OpenSSL은 일반적으로 리눅스와 macOS 시스템에서 기본적으로 사용할 수 있습니다. Windows용 OpenSSL은 OpenSSL 웹 사이트에서 사용할 수 있습니다.

오리진이 CloudFront가 사용하는 암호를 지원하는지 테스트하려면 다음 OpenSSL 명령을 실행합니다.

오리진 프로토콜 정책이 SSLv3로 설정된 경우 다음을 실행합니다.

echo | openssl s_client -ssl3 -cipher 'ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES256-SHA AES128-SHA DES-CBC3-SHA RC4-MD5 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA' -connect your.origin.domain:443

오리진이 TLS를 사용하는 경우, 다음 명령을 사용하여 각 프로토콜에 대해 오리진을 테스트합니다.

TLS의 경우 다음을 실행합니다.

echo | openssl s_client -tls1 -cipher 'ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES256-SHA AES128-SHA DES-CBC3-SHA RC4-MD5 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA' -connect your.origin.domain:443 -servername your.origin.domain

TLS 1.1의 경우 다음을 실행합니다.

echo | openssl s_client -tls1_1 -cipher 'ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES256-SHA AES128-SHA DES-CBC3-SHA RC4-MD5 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA' -connect your.origin.domain:443 -servername your.origin.domain

TLS 1.2의 경우 다음을 실행합니다.

echo | openssl s_client -tls1_2 -cipher 'ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-SHA384 AES256-SHA AES128-SHA DES-CBC3-SHA RC4-MD5 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA' -connect your.origin.domain:443 -servername your.origin.domain

참고: -servername 값을 원본 도메인 이름으로 설정합니다. 또는 CloudFront를 사용하여 호스트 헤더를 전달하는 경우 CloudFront 요청에서 -servername을 CNAME으로 설정합니다.

오리진에 성공적으로 연결하면 앞의 명령에서 다음과 유사한 출력을 볼 수 있습니다. 출력은 SSL 또는 TLS 버전 및 지원되는 암호를 사용하여 연결이 성공적으로 설정되었음을 확인합니다.

New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-SHA256
....
Timeout : 7200 (sec)
Verify return code: 0 (ok)
----
DONE

참고: 502 오류에 대한 추가 문제 해결 지침은 HTTP 502 상태 코드(잘못된 게이트웨이)를 참조하세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?