OpenSSL은 Chrome에 표시된 것과 다른 SSL 인증서를 반환합니다


13

다음 명령으로 OpenSSL을 사용하여 Sparkfun의 CDN URL을 쿼리 할 때 :

openssl s_client -showcerts -connect dlnmh9ip6v2uc.cloudfront.net:443

인증서에 반환 된 일반 이름은입니다. *.sparkfun.com확인에 실패하지만 Chrome에 호스트를로드하면 표시된 일반 이름은*.cloudfront.net

무슨 일이야?

이는 Squid SSL_Bump를 통해 SSL을 프록시로 사용하는 환경에서 도메인에 대해 로컬에서 신뢰할 수있는 CA에서 서명 한 인증서를 생성하기 때문에 문제가됩니다. OpenSSL을 사용하여 새 인증서가 생성되므로 CN이 일치하지 않기 때문에 위의 모든 도메인에서 작동합니다.

편집 -프록시 또는 필터링을 사용하지 않고 인터넷에 직접 연결되어있는 원격 데이터 센터의 서버에서 OpenSSL과 동일한 문제가 발생 함을 확인했습니다.

편집 -문제는 SNI로 인해 발생하지만 Squid 및 SSL_Bump에 문제가 발생하는 이유에 대한 정보를 작성해야합니다.

이 프로젝트는 SSL 서버 이름 표시 (SNI) 정보를 오리진 서버로 전달하는 것을 지원하지 않으며 그러한 지원을 좀 더 어렵게 만듭니다. 그러나 SNI 전달에는 추가 된 전달 어려움보다 훨씬 큰 고유 한 문제 (본 문서의 범위를 넘어서)가 있습니다.

http://wiki.squid-cache.org/Features/BumpSslServerFirst 에서 가져온

답변:


23

CloudFront는 단일 IP에서 여러 인증서를 사용할 수있는 방법 인 SNI를 사용합니다. openssl의 s_client 명령과 마찬가지로 모든 최신 브라우저가이를 지원하지만 s_client는 마술처럼이를 수행하지 않습니다. 그것을 사용하도록 지시해야합니다.

openssl s_client -servername dlnmh9ip6v2uc.cloudfront.net  -connect dlnmh9ip6v2uc.cloudfront.net:443 -showcerts

2
Yaaay Dennis, 그게 내 "오오 , 나는 그 사실을 몰랐다 "는 오늘 SF를 위해 분류되었고 아직 오전 9 시가 아니었다 ! 나에게서 +1
MadHatter

9

Chrome은 SNI를 지원 하여 서버에게 보낼 인증서를 알려줍니다. s_client명령은하지 않습니다.

CloudFront의 SNI 사용에 대한 자세한 내용은 여기를 참조하십시오 .

SNI 사용자 정의 SSL을 사용하는 경우 일부 이전 브라우저는 SNI를 지원하지 않으며 CloudFront와 연결하여 HTTPS 버전의 컨텐츠를로드 할 수 없으므로 일부 사용자가 컨텐츠에 액세스하지 못할 수 있습니다. 지원되는 브라우저 목록을 포함하여 SNI에 대한 자세한 내용은 FAQ 페이지를 참조하십시오.

과:

SNI 사용자 정의 SSL은 전송 계층 보안 프로토콜의 SNI 확장을 사용하므로 호스트 이름 뷰어가 연결하려고하는 것을 포함하여 여러 도메인이 동일한 IP 주소를 통해 SSL 트래픽을 제공 할 수 있습니다. 전용 IP 사용자 정의 SSL과 마찬가지로 CloudFront는 각 Amazon CloudFront 엣지 로케이션에서 전용 IP 사용자 정의 SSL 기능과 동일한 보안을 통해 컨텐츠를 제공합니다. 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 버전을로드 할 수 없습니다.


s_client는 SNI를 잘 지원합니다 ...
Dennis Kaarsemaker

훌륭한 문서로 인해 어쨌든 +1했습니다.
MadHatter

s_clientCLI를 지원 하지 않는다고 말하지 않았습니다. 나는 s_client명령 (OP)이 그렇지 않다고 말했다 .
David Schwartz

@DavidSchwartz-실제로 OpenSSL 클라이언트는 SNI를 지원하며 여기에 설명 된 정보를 사용하여 확인할 수 있습니다.
Geoffrey

@Geoffrey 동의합니다. SNI를 지원하지 않는 것이 OP의 명령입니다.
David Schwartz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.