1. 概述
啟動 HTTPS 協定需要使用有效的 SSL 憑證,憑證中包含的身分驗證資訊可幫助使用者進行加密通訊。
在單點登入認證系統中,憑證是很重要的一把鑰匙,用戶端與伺服器的交互安全靠的就是憑證。
本文僅介紹CentOS系統下Tomcat如何安裝SSL憑證,以滿足HTTPS存取的訴求。其他環境建議諮詢你的憑證籤發機構進行安裝。
2. 在Tomcat安裝SSL憑證
2.1 獲取憑證
在配置憑證前,首先需要申請憑證。
使用者需自行向 CA 廠商購買憑證,憑證認證一般都是由 VeriSign、GlobalSign 等國際公認的 CA 機構進行。
注:對於正式環境,不可使用 JDK 自帶的 keytool 工具生成憑證,會出現不安全提醒,導致工程嵌入第三方平台後無法存取。
2.2 上傳憑證
1)以管理者身分進入Tomcat安裝目錄,建立cert資料夾。
2)以管理者身分進入%Tomcat_HOME%/cert資料夾,將憑證檔案上傳到該資料夾。
注1:不同廠商的憑證格式不完全相同,不一定和下圖檔案格式相同。
注2:如有金鑰檔案,請也同步上傳到該位置。
2.3 配置server.xml檔案
1)以管理者身分進入%TOMCAT_HOME%/conf資料夾,使用正文編輯器開啟server.xml檔案。
2)在server.xml檔案中,找到以下配置塊:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
在該配置塊上方新增以下配置塊,請根據你的憑證地址、憑證格式和密碼,修改keystoreFile、keystoreType和keystorePass:
keystoreFile 支援填寫絕對路徑或在 Tomcat 中的相對路徑。
Connector port為你後續存取時所佔的埠,請確定埠防火牆已開放,可正常存取。 如希望在存取時不新增埠,直接透過域名存取,請使用 HTTPS 的預設埠 443 。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/path/to/your/keystore/file"
keystoreType="your_keystore_type"
keystorePass="your_keystore_password"
clientAuth="false" sslProtocol="TLS" />
注1:不建議直接複製貼上上文程式碼,可自行找尋檔案中該配置庫,去除相關程式碼註釋,並修改憑證說明即可。
注2:上文程式碼範例中,憑證格式為.pfx格式。若憑證格式為.crt,需要微調程式碼,範例如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https">
<SSLHostConfig sslProtocol="TLS">
<Certificate certificateFile="/opt/ssl_file/server.crt" certificateKeyFile="/opt/ssl_file/server.key" certificateChainFile="/opt/ssl_file/root.crt"
type="RSA"/>
</SSLHostConfig>
</Connector>
3)儲存並關閉server.xml檔案
2.4 確認web.xml檔案(可選)
如需配置HTTP請求自動跳轉HTTPS,可執行本節操作。
1)以管理者身分進入%TOMCAT_HOME%/conf資料夾,使用正文編輯器開啟web.xml檔案。
2)在web.xml檔案中,確認存在以下配置塊,並確認<transport-guarantee>標籤的值為CONFIDENTIAL即可:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
3)儲存並關閉web.xml檔案。
2.5 重啟Tomcat
請參考 關閉或重啟FineBI工程 文檔,重啟Tomcat伺服器,以使配置生效。
2.6 效果預覽
使用瀏覽器存取https://your_domain:port,確定能夠成功存取,如果網頁地址欄出現小鎖標籤,表示憑證已經安裝成功。
your_domain是你的域名或IP地址。
埠為2.3節配置的Connector port。
3. 注意事項
Tomcat 配置 SSL 憑證實現 HTTPS 存取後,若要保證 Websocket 連結正常,需要配置 HTTPS 設定。
請先使用管理者帳號登入數據決策系統,查看「管理系統>系統管理>標準」中是否出現 HTTPS 設定項。
不出現:說明 Websocket 連結已正確配置,無需修改。
出現:說明 Websocket 連結未正常配置,請參考文檔修改:HTTPS配置WebSocket