| 組件 | 版本 | 安裝路徑 | 監聽端口 |
|---|---|---|---|
| Windows Server | 2003 SP4 | — | — |
| JDK | 1.5.0 | — | — |
| Apache HTTPD | 2.0.54 | D:/Apache2 | 80 |
| Tomcat | 5.5.14 | D:/Tomcat51 | 8080 (AJP 8009) |
| 連接器 | mod_jk2.so (JK2) | D:/Apache2/modules | — |
編輯 D:/Apache2/conf/httpd.conf,在 LoadModule 區段添加:
LoadModule jk2_module modules/mod_jk2.so
# 修改預設編碼
AddDefaultCharset GB2312
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot "D:/Tomcat51/webapps/jsp-examples"
ServerName localhost
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
workers2.properties)放置於 D:/Apache2/conf/:
[logger.apache2]
file="D:/Apache2/logs/error.log"
level=ERROR
[config]
file=D:/Apache2/conf/workers2.properties
debug=1
[shm]
file=D:/Apache2/conf/jk2.shm
size=1000000
[channel.socket:localhost:8009]
port=8009
host=localhost
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# URI 映射規則
[uri:/jsp-examples/*]
[uri:/*.jsp]
在 D:/Tomcat51/webapps/jsp-examples/sessiontest.jsp 放置測試頁,重啟 Apache + Tomcat,訪問 https://localhost/jsp-examples/sessiontest.jsp 應正常響應。
server02.jks → 放入 D:/Tomcat51/conf/dwp.p12 → 雙擊安裝至瀏覽器/系統憑證存儲server.xml)<Connector
port="8443"
maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100"
scheme="https" secure="true"
clientAuth="true"
sslProtocol="TLS"
keystoreFile="conf/server02.jks" keystorePass="123456"
truststoreFile="conf/server02.jks" truststorePass="123456"
/>
關鍵屬性:
clientAuth="true":啟用雙向認證,強制客戶端出示憑證keystoreFile:服務端私鑰與證書鏈truststoreFile:信任的 CA 證書庫(此處複用同一文件,生產環境應分離)web.xml)編輯 D:/Tomcat51/webapps/jsp-examples/WEB-INF/web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/*</url-pattern> <!-- 全站強制 HTTPS -->
</web-resource-collection>
<!-- 註釋掉角色限制,僅強制傳輸加密 -->
<!--
<auth-constraint>
<role-name>tomcat</role-name>
<role-name>role1</role-name>
</auth-constraint>
-->
<user-data-constraint>
<description>全站強制機密傳輸</description>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
https://localhost/jsp-examples/sessiontest.jspdwp.p12 對應憑證https://localhost:8443/jsp-examples/sessiontest.jsp| 現象 | 可能原因 | 解決方案 |
|---|---|---|
| 瀏覽器提示「連接不安全」 | 自簽證書不被信任 | 將 CA 證書導入瀏覽器「受信任的根憑證機構」 |
| 403 Forbidden / Client Certificate Required | 未安裝/選擇客戶端憑證 | 確認 dwp.p12 已正確安裝至用戶/機器存儲 |
| JK2 無法連接 Tomcat | AJP 端口衝突/防火牆 | 檢查 server.xml <Connector port="8009" protocol="AJP/1.3"/> 已啟用 |
| 中文亂碼 | URI 編碼不一致 | Tomcat URIEncoding="UTF-8" + Apache AddDefaultCharset UTF-8 |
keystore 存服務端私鑰,truststore 存 CA 公鑰,權限 600ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" 禁用弱套件Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"SSLUseStapling on 減少客戶端驗證延遲Apache 靜態資源/反向代理 + Tomcat 動態應用 + SSL 雙向認證,構建經典的「DMZ 前端 + 內網應用」安全架構。JK2 雖已被 mod_jk/mod_proxy_ajp 取代,但配置邏輯互通。核心要點:連接器正確映射 URI、SSL Connector 雙向認證參數精確、web.xml 強制傳輸機密性、憑證鏈完整可信。遷移至現代版本 (Apache 2.4 + Tomcat 9/10 + mod_proxy_ajp) 時,配置結構同理可循。