그것은 다음과 같습니다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 Permanently
to 입니다 https://mail.google.com/
. 여기에는 두 가지 효과가 있습니다.
브라우저는 새 터널(도메인이 다르기 때문에)과 다른 인증서를 사용하여 새 요청을 작성하여 대상으로 리디렉션합니다. 이것이 인증서를 보는 이유입니다
mail.google.com
.~ 후에리디렉션. 주소창을 보면 실제 접속하고 있는 사이트는 가http://mail.google.com/
아닌 입니다http://gmail.com/
. 브라우저에서 사전 리디렉션 인증서를 잡기가 약간 어렵기 때문에 Fiddler2를 사용했습니다.브라우저는 이 리디렉션을 캐시하고 나중에 자동으로 수행하며 다른 요청을 하지 않습니다
https://gmail.com/
(이것이 의 요점입니다Moved Permanently
). 이는 이 질문에서 별로 중요하지 않지만 리디렉션을 찾는 것이 조금 더 어려워집니다. 먼저 캐시를 지우거나 개인 탐색 창을 열어야 합니다.