为什么 https://gmail.com/ 在使用错误证书时不会产生 SSL 错误?

Tot*_*tor 5 firefox gmail google-chrome certificate 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
Run Code Online (Sandbox Code Playgroud)

Bob*_*Bob 9

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
Run Code Online (Sandbox Code Playgroud)

请注意CN=gmail.com.

HTTP 请求的实际响应类型是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)发出另一个请求。这对这个问题来说并不重要,但它确实让发现重定向变得有点困难 - 您需要先清除缓存或打开一个隐私浏览窗口。

  • @Totor 可能是因为他们如何处理 HTTP 重定向? (2认同)

小智 7

gmail.com 使用了一个很好的证书,但是您要连接的服务器正在使用服务器名称指示在单个地址+端口上运行虚拟主机。为此,客户端必须在 SSL/TLS 协商完成之前告诉服务器它正在寻找的虚拟主机。Firefox 和 Chromium(以及其他类似大小的客户端)会自动执行此操作。

要使用 获得有效证书openssl s_client,您需要使用该-servername选项。

openssl s_client -servername gmail.com -connect gmail.com:443
Run Code Online (Sandbox Code Playgroud)

lynx SNI 的Google 搜索结果看起来不太好。