Ip

如何使用帶有 Host 標頭的 curl 打開 google.com(證書不匹配)

  • November 21, 2019

由於 Google 使用的是 HTTPS/SSL,我無法使用 Google.com 的 IP 並傳遞 Host 標頭來訪問它。我不明白為什麼這不起作用。

這是我到目前為止所嘗試的。

  1. 我得到了 Google.com 的 IP
tracert google.com
Tracing route to google.com [216.58.207.238]
  1. 接下來,我嘗試使用帶有 Host 標頭的 IP 進行連接
$ curl -H "Host: google.com" https://216.58.207.238

我收到一個錯誤:

curl:(51)SSL:證書主題名稱“*.google.com”與目標主機名“216.58.207.238”不匹配

  1. 接下來我嘗試了這個
$ curl https://216.58.207.238 --resolve "google.com:443:216.58.207.238" -H "Host: google.com"

但我得到了同樣的錯誤資訊。那麼使用IP地址打開google.com真的是完全不可能嗎?

提供的證書中的某些欄位應與您要連接的名稱或地址匹配,否則證書將被聲明為“假”並且客戶端應斷開連接。這就是你的 curl 所做的。

如果您通過域名連接,該名稱應與證書中的“cname”欄位匹配,或者列在伺服器證書的“subjectAltName”DNS 子欄位中。

如果您通過指定原始 IP 地址進行連接,則該 IP 地址應列在證書的“subjectAltName”IP 子欄位中。

正如您可以輕鬆檢查的那樣,Google 沒有在其證書的 SAN 欄位中指定任何 IP 地址,所以是的,他們不希望任何人使用直接 IP 地址連接到他們。他們只希望您使用主機名。

您可以使用 禁用 curl 中的證書檢查--insecure,但您知道,這將使 HTTPS 無用。

另請參閱有關安全性和RFC5280的相關問題

引用自:https://serverfault.com/questions/992699