在無法添加額外證書的伺服器上通過 https 執行站點的最佳方式
所以我處於一個奇怪的情況,因為我正在使用特定的伺服器來託管我無法在其他任何地方託管的東西(它可以訪問無法訪問的使用者數據庫等)。我已經與系統管理員進行了相當多的討論,它看起來像是執行我們網站的唯一方法:通過 https 的 www.foo.com 可能是通過某種代理。
目前,使用者訪問 www.foo.com 並被重定向到 https://host-server.com/foo,因為上面安裝了 SSL 證書。我希望使用者訪問 https://www.foo.com。
有人告訴我,由於各種原因,向主機伺服器添加額外的 SSL 證書將非常困難。
所以我想知道是否可以讓 DNS 記錄指向一個新伺服器,然後創建與瀏覽器的 HTTPS 連接。然後它將請求轉發到 https://host-server.com/foo 並將回復回饋給原始請求者。
這有意義嗎?這完全可行嗎?我在 SSL 方面的經驗充其量是有限的,所以在此先感謝您的幫助 :)
ps 超連結中的空白,因為 ServerFault 對我發布的連結數量感到不滿!
無論使用何種協議(HTTP、HTTPS、…),主機名 www.foo.com 將始終產生相同的 IP 地址。可以提供 HTTP(預設埠 80)和 HTTPS(預設埠 443)。因此,如果無法使用埠 443(無論出於何種原因),您必須為 HTTP 和 HTTPS 移動到不同的 IP 地址。
非預設埠
正如 ‘Frands Hansen’ 已經提到的,您可以為 HTTPS 使用非預設埠。但是您必須在所有 URL 中包含此內容(例如https://www.foo.com:1234/)。這可能是不合適的。
HTTPS 反向代理
如果您想或必須保持 HTTP 伺服器原樣,您可以考慮將 HTTPS 放在單獨的主機名上,例如https://secure.foo.com/。在您的範例中,它可以是像https://host-server.com/foo這樣的 SSL 代理。
為此,您需要一個可以通過公共 IP 和 TCP 埠 443 訪問的主機。在這台機器上,您執行一個響應所有 HTTPS 請求的 Web 伺服器。它將所有請求轉發到現有的 HTTP 伺服器,並通過加密通道將答案返回給客戶端。您可以為此使用任何常見的網路伺服器,例如 apache、nginx 或 lighttpd 或更專業的解決方案,例如pound。你應該找到很多如何做到這一點的例子。請記住,預設情況下,HTTPS 代理和 HTTP 網路伺服器之間的所有流量都是未加密的。
同樣,在同一台機器上執行 HTTP 和 HTTPS 並沒有錯。它僅取決於現有的安裝和要求。主要是客戶端使用的公網IP和埠以及與SNI證書的兼容性。