本文演示了在產生服務器端和客戶端證書之后, 如何在 Tomcat 5.5 上進行雙向 SSL 的配置.
關于如何產生證書, 請參考 Tomcat5SSL_ServerAndClient.
首先, 到 http://tomcat.apache.org 下載 Tomcat 5.5 的最新版本, 我下載的是 Tomcat 5.5.15 的 tar.gz 方式發布版本, 解壓縮到一個目錄(本文中是解壓縮在 C:"TEMP"ssl 目錄下).
說明: 本文所使用的例子可以在這里下載(使用右鍵菜單"目標另存為...")
下面開始進行配置:
第一步: 將服務器端證書 ssl-test.net-tomcat.keystore 復制到 Tomcat 的 conf 目錄中
第二步: 修改 Tomcat 的 conf 目錄下 server.xml 文件, 加上 SSL Connector 的定義
- 注意: 如果需要使用雙向 SSL(即客戶端也要求使用證書), 那么必須設置 clientAuth="true";
- 順便把 HTTP Connector 的 URLEncoding 也設置成 UTF-8, 這個主要是為了解決一些中文問題(與本試驗無關, 你也可以不配置):

第三步: 在 Tomcat 的 webapps 目錄下建立一個新的 Web 應用 "ssltest", 編輯 ssltest 目錄下 WEB-INF/web.xml, 配置 ssltest/ssl/ 目錄下的內容為必須通過 SSL 方式才能訪問
第四步: 寫兩個完全一樣的測試頁面, 分別放在 ssltest/ 和 ssltest/ssl/ 目錄下, 按照上一步的配置, ssltest/ssl/ 目錄下的測試頁面必須通過 SSL 方式才能訪問
第五步: 導入客戶端證書到瀏覽器中(雙擊客戶端證書文件 "web-client.p12" 即可導入 IE)
實際運行效果
配置完畢后, 啟動 Tomcat, 可以看到
http://localhost:8080/ssltest/test.jsp 能夠使用普通的 HTTP 方式訪問, 而通過
http://localhost:8080/ssltest/ssl/test.jsp 對 ssltest/ssl 目錄下內容的訪問則會自動切換到
https://localhost:8443 上去了; 同時可以看到, 使用 HTTPS 方式訪問時, 客戶端證書的 Subject 可以被 jsp 頁面獲得:
試著在瀏覽器里面把導入的證書刪除, 你會發現 ssltest/ssl 目錄下的內容已經不能訪問了:
相關下載
本文所涉及的文件可以在下列地址下載: