我對 SSL 和 TLS 憑證幾乎一無所知。對於那個很抱歉。
我的公司是這樣問我的:
- 他們需要在本地網路上放置一台伺服器,全國各地的人們都可以透過 VPN 存取該伺服器。
- 他們希望該伺服器使用 HTTPS 進行通訊。
- 他們希望伺服器擁有由經過認證的 CA 創建的 TLS 憑證。
- 他們告訴我該伺服器是 Microsoft IIS 伺服器。
到目前為止我發現了什麼:
- 不可能擁有由經過認證的 CA 為
server.mydomain.local
無法從 Internet 存取位址的 Intranet 伺服器建立 SSL 憑證。 - 為該伺服器擁有 SSL 證書的唯一方法是自簽名證書,但這些證書並不被 iOS 等設備信任。
我需要的是確認我是對的,如果不對,如何解決這個將死問題。
謝謝
答案1
您是對的,公共 CA 只會向公共網域頒發憑證(因為這是他們能夠驗證的)。但是,您忽略了這並不一定與伺服器是否可公開存取有關,甚至與伺服器是否具有公用 IP 位址也不一定有關。伺服器不必是public 以取得公共網域名稱。
CA 只關心驗證 URL 中的名稱的所有權。一些CA(例如 Let's Encrypt)通常透過 HTTP 連接到伺服器來實現此目的(儘管這不再是唯一的選擇)。但許多其他 CA 將允許您僅驗證整個網域的所有權(可能透過 Whois 記錄),然後為任何子網域自由頒發證書,甚至是沒有 Web 伺服器或沒有任何公開內容的子網域可訪問,甚至是根本不存在的子域。
所以我假設該公司已經有一個網站,因此也有一個公共網域。您可以採取多種方式來實現這一目標,具體取決於公司的喜好:
您可以讓伺服器使用常規公共 IP 位址並將其放入 DNS 中,就像往常一樣...然後讓伺服器拒絕所有不是透過 VPN 建立的連接,例如,使用 Windows 防火牆或某些特定於 IIS 的設定。
(大多數 VPN 系統可以配置為透過安全隧道路由任何 IP 位址範圍,無論 IP 位址是“公共”還是“私人”,都沒有關係。透過公司 VPN 路由公司的公共 IP 範圍是很正常的事情去做。 )
您可以建立一個指向內部 IP 位址的子網域(例如,
server.corp.mydomain.com
可以是指向 192.168.7.1 的公用子網域,這是一個只能透過 VPN 存取的私人 IP 位址),但這仍然不會阻止它擁有已頒發公開有效的HTTPS 證書。(這不需要任何特殊的 DNS 設置,您只需將網域指向您想要的任何地址即可。)
您可以在私人 IP 位址上擁有實際的 Web 伺服器,但在公用 IP 位址上使用「反向代理」前端伺服器。反向代理可以處理基於 IP 的存取以及 SSO 或密碼身份驗證。它甚至可以代表真正的私有伺服器處理基於 Let's Encrypt HTTP 的憑證授權。
(我們使用此方法為一些生鏽的舊Web 應用程式提供安全的HTTPS 存取- 其中一個應用程式仍然在Server 2003 上運行,根本無法處理現代瀏覽器,相反,反向代理提供了必要的TLS 1.2 支持以及SAML 身份驗證。
(還有其他選擇。除了公共CA 之外,任何人都可以創建自己的CA,而大多數運行Microsoft AD 的企業網路實際上都會有一個– 唯一的問題是讓設備信任該CA,但對於企業發行的iPhone,應該透過公司使用的任何「行動裝置管理」系統都可以輕鬆完成,但不要告訴人們在個人系統上安裝公司 CA...)