一、概述
憑證是單點登入認證系統中很重要的一把鑰匙,用戶端與伺服器的交互安全靠的就是憑證;本教程由於是示範所以就自己用 JDK 自帶的 keytool 工具生成憑證;如果以後真正在産品環境中使用肯定要去憑證提供商去購買,憑證認證一般都是由 VeriSign、GlobalSign 等國際公認的 CA 機構認證。
本文介紹在 Windows 系統中一種利用自帶工具生成 SSL 憑證及在 Tomcat 伺服器中配置的方法。
二、操作步驟
1
建立憑證。
首先需要安裝 JRE,然後運作 cmd 或者 Windows Powershell,右鍵以管理者身分運作,按確定啟動命令提示符視窗。輸入【cd %JRE_HOME%\bin】進入 JRE 的 bin 目錄下,執行命令建立如下,執行步驟如下圖1所示。
注:該 JRE 是配置 Tomcat 時所用的 JRE。
keytool -genkey -alias tomcat-servers -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore
需要遷移到行業標準格式 PKCS12,執行命令:
keytool -importkeystore -srckeystore server.keystore -destkeystore server.keystore -deststoretype pkcs12
輸入鍵庫通行碼:【changeit】,如下圖2所示。
您的名稱與姓氏,本例輸入是 maria,其實這個域名是不存在的,但是這裏為了示範所以虛擬了這個域名,所以需要在 hosts 檔案裏映射一個虛擬域名,設定方式如下圖3所示。
注:您的名稱與姓氏,這裏不能輸入 IP 位址,只能輸入域名。
這樣在存取 maria 的時候其實是存取的 127.0.0.1 也就是本機。
2
匯出憑證。
執行命令如下,將憑證匯出,如下圖所示。
keytool -export -alias tomcat-servers -storepass changeit -file server.cer -keystore server.keystore
3
將憑證匯入到 JDK 憑證信任庫。
執行命令如下所示:
keytool -import -trustcacerts -alias servers -file server.cer -keystore cacerts -storepass changeit
系統訊問是否信任此憑證,回答 y ,如下圖所示。
4
將憑證移動至 Tomcat 安裝目錄下。
進入【%JRE_HOME%\bin】目錄下,將新生成【server.keystore】,【server.cer】,【cacerts】複制到 Tomcat 安裝目錄下%TOMCAT_HOME%,如下圖1所示。
把【%JRE_HOME%\bin】目錄下 cacerts 檔案改寫到 JRE 的 security 目錄下【%JRE_HOME%\lib\security】,如下圖2所示。
5
應用憑證到 Web 伺服器。
配置 server.xml 檔案,以管理者身分運作文字編輯器,開啟【%TOMCAT_HOME%\conf\server.xml】。尋找 SSL 配置新增憑證的位址【keystoreFile】以及密碼【keystorePass】,如下圖1所示。
注:位址可以填絕對路徑或者在 Tomcat 中的相對路徑。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" keystoreFile="D:\tomcat\apache-tomcat-8.5.50\server.keystore" keystorePass="changeit"/>
重啓 Tomcat 服務,存取【https://maria:8443/】,如下圖2所示。
如果看到圖2的介面,說明 Tomcat 的 SSL 配置成功。
三、注意事項
1
其他說明。
如果配置完後啟動不了 Tomcat 服務,則說明第二章第5節配置不正確,仔細檢查是否按上述步驟配置。
若存取連結提示【此網站的安全憑證存在問題】,是由於使用 Java 生成的憑證使用 https 存取時會提示憑證風險,可以申請一個阿裏雲雲盾的免費憑證。
2
HTTPS 設定。
Tomcat 配置 SSL 憑證實現 HTTPS 存取後,若要保證 Websocket 連結正常,需要配置 HTTPS 設定。
注1:HTTPS 設定各設定項介紹請參見:B05-01 系統管理-標準 的第3章第3節內容。
注2:若數據決策系統中不顯示下圖所示的 HTTPS 設定,說明 Websocket 連結已正確配置,無需修改。
3
無法遠端連結。
問題描述:設計器 遠程設計 https 工程失敗。
原因分析:配置的 https 工程,憑證格式為 PKCS12 ,但設計器用戶端目前僅支援預設格式 jks 。
解決方案:把 https 工程的憑證格式 PKCS12 轉換成 jks 格式。