잘못된 인증서를 사용하는 동안 https://gmail.com/에서 SSL 오류가 발생하지 않는 이유는 무엇입니까?

잘못된 인증서를 사용하는 동안 https://gmail.com/에서 SSL 오류가 발생하지 않는 이유는 무엇입니까?

그것은 다음과 같습니다https://gmail.com호스트 이름에 대한 SSL 인증서를 사용합니다 mail.google.com. SSL 인증서 호스트 이름이 브라우저 URL과 일치하지 않는데 왜 작동합니까? 대신 경고를 받아야 해요!

Firefox와 Chromium으로 테스트했습니다(다음과 같습니다).전에는 작동하지 않았어).

echo | openssl s_client -connect gmail.com:443다음 명령을 사용하여 인증서를 확인했습니다.

Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=mail.google.com

답변1

gmail.com은 좋은 인증서를 사용하지만 연결하려는 서버는서버 이름 표시단일 주소+포트에서 가상 호스트를 실행합니다. 이것이 작동하려면 클라이언트는 SSL/TLS 협상이 완료되기 전에 찾고 있는 가상 호스트가 무엇인지 서버에 알려야 합니다. Firefox와 Chromium(및 비슷한 크기의 다른 클라이언트)은 이 작업을 자동으로 수행합니다.

를 사용하여 유효한 인증서를 얻으려면 옵션 openssl s_client을 사용해야 합니다 -servername.

openssl s_client -servername gmail.com -connect gmail.com:443

다음에 대한 Google 검색결과살쾡이 SNI안 좋아 보이는데.

답변2

https://gmail.com/잘못된 인증서를 사용하지 않습니다. Fiddler2가 가로채는 현재 인증서는 다음과 같습니다.

== Server Certificate ==========
[Subject]
  CN=gmail.com, O=Google Inc, L=Mountain View, S=California, C=US

[Issuer]
  CN=Google Internet Authority G2, O=Google Inc, C=US

[Serial Number]
  4F4A246099981C2C

[Not Before]
  16/07/2014 10:04:37 PM

[Not After]
  14/10/2014 11:00:00 AM

[Thumbprint]
  8F1065D237732F71CAD350A3FD0089AEEAAB675E

.CN=gmail.com

HTTP 요청의 실제 응답 유형은 a 301 Moved Permanentlyto 입니다 https://mail.google.com/. 여기에는 두 가지 효과가 있습니다.

  1. 브라우저는 새 터널(도메인이 다르기 때문에)과 다른 인증서를 사용하여 새 요청을 작성하여 대상으로 리디렉션합니다. 이것이 인증서를 보는 이유입니다 mail.google.com.~ 후에리디렉션. 주소창을 보면 실제 접속하고 있는 사이트는 가 http://mail.google.com/아닌 입니다 http://gmail.com/. 브라우저에서 사전 리디렉션 인증서를 잡기가 약간 어렵기 때문에 Fiddler2를 사용했습니다.

  2. 브라우저는 이 리디렉션을 캐시하고 나중에 자동으로 수행하며 다른 요청을 하지 않습니다 https://gmail.com/(이것이 의 요점입니다 Moved Permanently). 이는 이 질문에서 별로 중요하지 않지만 리디렉션을 찾는 것이 조금 더 어려워집니다. 먼저 캐시를 지우거나 개인 탐색 창을 열어야 합니다.

관련 정보