Tomcat 配置 HTTPS 訪問全攻略(CentOS 環境)
一、環境說明
- 操作系統:CentOS
- Tomcat 版本:Apache Tomcat/9.0.105
- 服務器 IP:192.168.1.35
- 目標:將 Tomcat 默認的 HTTP 訪問升級為 HTTPS,提升通信安全性
二、操作步驟詳解
(一)查詢 JDK 目錄
通過以下命令確認 JDK 安裝路徑:
echo $JAVA_HOME
預期輸出:
/opt/jdk1.8.0_451
關鍵點:后續操作需依賴 JDK 自帶的keytool工具,確保路徑正確。
(二)使用 keytool 生成證書
1. 進入 JDK 的 bin 目錄
cd $JAVA_HOME/bin
2. 執行證書生成命令
./keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat.keystore -validity 36500
3. 交互配置說明
- 密鑰庫口令:設置證書存儲密碼(如:123456)
- 個人信息:依次輸入姓名、組織單位、組織名稱、地區等(示例:CN=chen, OU=LG, O=LG, L=guangdong, ST=guangdong, C=CN)
- 密鑰口令:可與密鑰庫口令保持一致,直接按回車
4. 參數解析
- -keystore:指定證書存儲路徑及文件名(本例存放在/usr/local/目錄,文件名為tomcat.keystore)
- -validity:證書有效期(36500 天≈100 年,默認 90 天)
(三)配置 Tomcat 服務器
1. 修改 conf/server.xml
原 HTTP 連接器配置(修改前):
<Connector port="8800" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxParameterCount="1000"/>
修改點:
- 將redirectPort從 8443 改為 443(HTTPS 默認端口)
新增 HTTPS 連接器配置:
<Connector port="443"protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150"SSLEnabled="true"scheme="https"secure="true"clientAuth="false"sslProtocol="TLS"keystoreFile="/usr/local/tomcat.keystore"keystorePass="123456"/>
注意事項:
- protocol必須使用Http11NioProtocol,不可用HTTP/1.1
- keystoreFile路徑需與實際證書存儲路徑一致(Linux 系統注意路徑大小寫)
2. 配置 conf/web.xml 安全約束
在</welcome-file-list>標簽后添加以下內容:
<login-config><!-- 客戶端證書認證 --><auth-method>CLIENT-CERT</auth-method><realm-name>Client Cert Users-only Area</realm-name></login-config><security-constraint><!-- 保護所有Web資源 --><web-resource-collection><web-resource-name>SSL</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection><!-- 強制加密傳輸 --><user-data-constraint><transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint></security-constraint>
配置意義:
- CLIENT-CERT 認證:要求客戶端提供有效證書方可訪問
- CONFIDENTIAL 傳輸:確保所有數據通過 SSL/TLS 加密傳輸,防止竊聽
(四)重啟 Tomcat 服務
# 停止服務
./shutdown.sh
# 啟動服務
./startup.sh
三、訪問驗證與常見問題
(一)瀏覽器訪問測試
- 訪問地址:https://192.168.1.35:443
- 預期結果:
- 首次訪問可能出現安全警告(因使用自簽名證書)
- 點擊 “高級”→“繼續訪問” 可進入 Tomcat 歡迎頁面
(二)證書信息查看
- 證書主題信息:
- 頒發者:自簽名(CN=chen, OU=LG, O=LG, L=guangdong, ST=guangdong, C=CN)
- 有效期:從當前時間起 100 年
- 公鑰信息:RSA 算法,2048 位密鑰長度
(三)安全警告處理
- 原因:自簽名證書未經過 CA 機構認證
- 解決方案:
- 生成證書請求(CSR)并提交給正規 CA 機構申請證書
- 使用keytool -importkeystore命令將證書轉換為 PKCS12 格式(參考生成證書時的警告提示)
四、總結
通過以上步驟,成功在 CentOS 環境下為 Tomcat 9 配置了 HTTPS 訪問。核心要點包括:
- 使用keytool生成自簽名證書并正確配置路徑
- 在server.xml中添加 HTTPS 連接器并指定證書信息
- 通過web.xml強制要求加密傳輸和客戶端證書認證
生產環境中建議替換為 CA 簽名證書以消除瀏覽器警告,進一步提升安全性。如需進一步優化性能,可考慮啟用 TLSv1.2 + 協議并配置加密套件策略。
參考資料:
- Tomcat 官方 HTTPS 配置指南
- Keytool 命令行參考手冊