
다음 명령으로 OpenSSL을 사용하여 Sparkfun의 CDN URL을 쿼리하는 경우:
openssl s_client -showcerts -connect dlnmh9ip6v2uc.cloudfront.net:443
인증서에 반환된 일반 이름은 이며 *.sparkfun.com
확인에 실패했지만 Chrome에서 호스트를 로드하면 표시되는 일반 이름은 다음과 같습니다.*.cloudfront.net
여기서 무슨 일이 일어나고 있는 걸까요?
내가 있는 환경은 도메인에 대해 로컬로 신뢰할 수 있는 CA에서 서명한 인증서를 생성하는 Squid SSL_Bump를 통해 SSL을 프록시하기 때문에 문제가 발생합니다. OpenSSL을 사용하여 새 인증서가 생성되므로 CN이 일치하지 않으므로 위 도메인을 제외한 모든 도메인에서 작동합니다.
편집하다- 프록시나 필터링 없이 인터넷에 직접 연결된 원격 데이터 센터의 서버에서 OpenSSL에서도 동일한 현상이 발생하는 것을 확인했습니다.
편집하다- 문제는 SNI로 인해 발생하지만 Squid 및 SSL_Bump에 문제가 발생하는 이유에 대한 정보를 입력해야 합니다.
이 프로젝트는 SSL 서버 이름 표시(SNI) 정보를 원본 서버로 전달하는 것을 지원하지 않으며 이러한 지원을 좀 더 어렵게 만듭니다. 그러나 SNI 전달에는 추가된 전달 어려움보다 훨씬 더 심각한 자체 문제(이 문서의 범위를 넘어선)가 있습니다.
답변1
CloudFront는 단일 IP에서 여러 인증서를 사용할 수 있는 방법인 SNI를 사용합니다. openssl의 s_client 명령과 마찬가지로 모든 최신 브라우저는 이를 지원하지만 s_client는 마술처럼 이를 수행하지 않습니다. 그것을 사용하려면 다음과 같이 지시해야 합니다.
openssl s_client -servername dlnmh9ip6v2uc.cloudfront.net -connect dlnmh9ip6v2uc.cloudfront.net:443 -showcerts
답변2
크롬은 지원합니다SNI, 보낼 인증서를 서버에 알려줍니다. 명령은 s_client
그렇지 않습니다.
CloudFront의 SNI 사용에 대한 자세한 내용이 있습니다.여기.
SNI 사용자 지정 SSL을 사용하는 경우 일부 이전 브라우저는 SNI를 지원하지 않고 CloudFront와의 연결을 설정하여 콘텐츠의 HTTPS 버전을 로드할 수 없기 때문에 일부 사용자는 콘텐츠에 액세스하지 못할 수 있습니다. 지원되는 브라우저 목록을 포함하여 SNI에 대한 자세한 내용을 보려면 다음을 방문하세요.자주하는 질문페이지.
그리고:
SNI 사용자 정의 SSL은 전송 계층 보안 프로토콜의 SNI 확장을 사용합니다. 이를 통해 뷰어가 연결하려는 호스트 이름을 포함하여 여러 도메인이 동일한 IP 주소를 통해 SSL 트래픽을 제공할 수 있습니다. 전용 IP 사용자 지정 SSL과 마찬가지로 CloudFront는 전용 IP 사용자 지정 SSL 기능과 동일한 보안으로 각 Amazon CloudFront 엣지 로케이션의 콘텐츠를 제공합니다. SNI Custom SSL은 Chrome 버전 6 이상(Windows XP 이상 또는 OS X 10.5.7 이상에서 실행), Safari 버전 3 이상(Windows Vista 이상 또는 Mac OS X 10.5에서 실행)을 포함한 대부분의 최신 브라우저에서 작동합니다. 6. 이상), Firefox 2.0 이상, Internet Explorer 7 이상(Windows Vista 이상에서 실행) SNI를 지원하지 않는 이전 브라우저는 CloudFront와의 연결을 설정하여 콘텐츠의 HTTPS 버전을 로드할 수 없습니다. SNI 사용자 지정 SSL은 표준 CloudFront 데이터 전송 및 요청 비용 외에 추가 비용 없이 사용할 수 있습니다.