我可以獲得 IP 地址的 HTTPS 證書嗎?
好的,這是案例:我建構了一個基於 dns 的廣告和內容攔截器。我已經使用 dnsmasq 作為它的 dns 轉發器。如果試圖訪問的域使用者被列入黑名單,則 dnsmasq 會將域解析為另一個 IP 地址,該地址託管一個 HTML 頁面,通知使用者該限制。這適用於 http 域,但不適用於使用 https 和 hsts 的域。
是的,您可以為 IP 申請證書。不,它不會按照您想要的方式工作,IP 必須是主機標頭(https://192.0.2.10)。
如果您控制所有客戶端,則可以使用您控制的私有證書頒發機構退出所有網站,類似於“Content Keeper”等系統
如果您重定向使用者(例如通過 DNS 重寫),那麼您嘗試做的是創建一個(合法的)中間人(MitM)。實際上,您是在假裝自己不是。
就 HTTPS 而言,沒有適合所有人的解決方案。唯一可行的解決方案是使用自己的頒發證書(不受任何 CA 信任)動態創建證書,然後使該證書受信任(通過導入過程)到您的所有客戶端設備中,因此他們看到您的 MitM 為有效。
…當然HSTS除外。當你做這個中間人的事情時,你必須維護一個例外列表,或者自動檢測什麼時候不做中間人,否則你會破壞使用 HSTS/證書固定的移動/銀行應用程序之類的事情。
這就是大型下一代防火牆所做的(例如,FortiNet、Palo-Alto 等)。
但是,由於您說您使用的是基於 DNS 的方法,而不是解析為您假裝的 IP 地址,您可能會考慮將其重寫為 0.0.0.0 (或 :: 在 IPv6 AAAA 記錄的情況下) . 這將導致連接立即失敗。
這就像將以下內容放在 /etc/hosts 文件中一樣。
0.0.0.0 backend1.example.com
如果我有一項服務(例如反向代理)想要與多個後端之一通信,並且我需要快速取出一個後端(可能是因為存在網路問題並且有很多),我會使用此技巧例如 ARP 超時)。這很好,因為它會導致客戶端本身的底層“連接”請求失敗(不需要網路 IO)。