為什麼 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

谷歌搜尋結果山貓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 請求的實際回應類型是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)。這對於這個問題來說並不重要,但它確實使發現重定向變得有點困難 - 您需要先清除快取或打開私人瀏覽視窗。

相關內容