Amazon DocumentDB 클러스터에 연결하려고 하면 ‘SSLHandshakeFailed’ 오류가 발생합니다.
간략한 설명
기본적으로 Amazon DocumentDB는 Secure Socket Layer(SSL) 또는 Transport Layer Security(TLS) 구성을 활성화하고 암호화된 연결만 허용합니다. 애플리케이션에서 SSL/TLS 연결을 사용하지 않는 경우 사용자 지정 Amazon DocumentDB 클러스터 파라미터 그룹을 사용하여 이 옵션을 비활성화하십시오. 자세한 내용은 Amazon DocumentDB 클러스터 TLS 설정 관리를 참조하십시오.
참고: TLS는 정적 파라미터입니다. 클러스터 파라미터 그룹 변경 사항을 모두 적용하려면 클러스터를 재부팅해야 합니다. 자세한 내용은 Amazon DocumentDB 클러스터 파라미터 수정을 참조하십시오.
다음과 같은 이유 중 하나로 인해 ‘SSLHandshakeFailed’ 오류가 발생할 수 있습니다.
- Amazon DocumentDB 클러스터 또는 인스턴스의 이름을 변경하면 SSL 인증서 불일치가 발생합니다.
- SSH 터널링을 사용하여 가상 프라이빗 클라우드(VPC) 외부에서 클러스터에 연결합니다.
- Amazon DocumentDB 엔드포인트의 Amazon Route 53 CNAME 레코드를 만듭니다.
해결 방법
SSL 인증서 불일치 해결
Amazon DocumentDB 인스턴스를 만들면 Amazon DocumentDB가 자동으로 SSL 인증서를 만들어 DB 인스턴스에 할당합니다. 이 SSL 인증서에는 DB 클러스터, 인스턴스 및 해당 엔드포인트에 대한 정보가 포함되어 있습니다. 클러스터 이름 또는 인스턴스 이름을 수정하면 인증서 수준에서 불일치가 발생합니다.
인증서를 업데이트하려면 Amazon DocumentDB 클러스터를 재부팅합니다. sslAllowInvalidHostnames 또는 tlsAllowInvalidHostnames 연결 문자열 옵션을 임시 해결 방법으로 사용하십시오.
SSH 터널링을 사용하여 VPC 외부에서 연결 관련 문제 해결
VPC 외부에서 Amazon DocumentDB 클러스터에 연결하는 경우 SSH 터널링은 중간 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 호스트 이름을 사용합니다. SSL/TLS 연결을 설정하면 클라이언트는 호스트 이름이 인증서에 언급된 Amazon DocumentDB 엔드포인트와 일치할 것으로 예상합니다.
호스트 이름 검증을 비활성화하려면 연결 문자열에 sslAllowInvalidHostnames 또는 tlsAllowInvalidHostnames 옵션을 사용하십시오.
참고: SSH 터널을 사용할 때는 연결 문자열에 replicaSet=rs0을 지정하여 복제본 세트 모드로 연결하지 마십시오. 터널 설정에서는 rs0을 복제본 세트 구성으로 인식하는지 검증할 수 없으며, 복제본 세트 모드에서 연결하려고 하면 오류가 발생합니다.
고객 관리형 Route 53 CNAME을 사용하는 SSL 연결 관련 문제 해결
SSL/TLS를 사용하여 고객 관리형 Route 53 CNAME 레코드에 연결하는 경우 Route 53 레코드의 이름이 DB 클러스터 이름과 일치해야 합니다. 호스트 이름이 Amazon DocumentDB 리소스의 SSL 인증서에 언급된 것과 동일하지 않기 때문에 오류가 발생합니다.
Amazon DocumentDB에서는 CNAME 레코드를 통해 SSL 연결을 수립하는 데 필요한 정보가 포함된 사용자 지정 인증서를 업로드할 수 없습니다. 대신 CNAME 레코드를 통한 최종 사용자 연결에 대해 동일한 호스트 이름 검사 무시 플래그를 사용하십시오(예: sslAllowInvalidHostnames 또는 tlsAllowInvalidHostnames).
참고: 프로덕션 환경에서는 sslAllowInvalidHostnames 또는 tlsAllowInvalidHostnames를 사용하지 않는 것이 보안 모범 사례입니다.
관련 정보
Amazon VPC 외부에서 Amazon DocumentDB 클러스터에 연결
Amazon DocumentDB에 복제본 세트로 연결
연결 문제 해결
전송 중 데이터 암호화