Certificate

我可以在 Tomcat 中為私有 API 使用自簽名證書,為公共頁面使用商業證書嗎?

  • March 28, 2015

我分發了一個 Java 桌面應用程序,該應用程序需要與 Spring Boot webapp 中的嵌入式 Tomcat 提供的一些 RESTful API 進行通信。

我計劃使用自簽名證書在桌面和伺服器之間進行通信。但是如果我以後想公開一些需要加密的公共網頁,我相信我需要一個商業證書。

是否可以在 Tomcat 中使用多個證書?如果是這樣,伺服器如何區分哪些請求是由哪個證書加密的?

該協議本身不允許您在同一 IP 的同一埠上託管兩個 SSL 證書。

Tomcat SSL 配置 HOW-TO

在安全連接上使用基於名稱的虛擬主機可能會出現問題。這是 SSL 協議本身的設計限制。客戶端瀏覽器接受伺服器證書的 SSL 握手必須在訪問 HTTP 請求之前發生。結果,在認證之前無法確定包含虛擬主機名的請求資訊,因此無法將多個證書分配給單個IP地址。

一封發給 Tomcat 使用者列表的電子郵件指出,您可以使用“您想要保護的每個 IP(或 IP/埠)的連接器和關聯的密鑰庫”來執行此操作。

這將允許您在單獨的埠(例如0.0.0.0:443,公開的和0.0.0.0:4443用於您的 API)和/或地址(例如192.0.2.1:443,公開的和192.0.2.2:443用於您的 API)上提供服務。


理論上可以在 SSL 握手之前在每個介面或每個CIDR192.168.0.1/16級別上進行這種區分(例如,來自的流量獲得一個證書,其他流量獲得另一個證書),但我不知道任何單個軟體這樣做;您需要通過防火牆使用埠轉發。

使用簡單的埠轉發來做到這一點:將埠 443 上的內部基礎設施的連接轉發到本地埠 4443,並在 Tomcat 中的埠 4443 上提供內部 SSL 證書。

注意:我從未聽說過這樣做。

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