舉例如下:
在Tomcat 6 中配置 SSL 雙向認證是相當容易的,本文將介紹如何使用 JDK 的 keytool 來爲 Tomcat 配置雙向SSL 認證。
系統需求:
JDK 5.0
Tomcat 6.0.16
第一步:爲服務器生成證書
使用keytool 爲 Tomcat 生成證書,假定目標機器的域名是“ localhost ”, keystore 文件存放在“C:\tomcat.keystore ”,口令爲“ password ”,使用如下命令生成:
keytool -genkey -v -alias tomcat -keyalg RSA -validity 3650 -keystore c:\tomcat.keystore -dname "CN=localhost,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass password -keypass password
如下圖:
如果Tomcat 所在服務器的域名不是“ localhost ”,應改爲對應的域名,如“ www.sina.com.cn ”,否則瀏覽器會彈出警告窗口,提示用戶證書與所在域不匹配。在本地做開發測試時,應填入“ localhost ”
第二步:爲客戶端生成證書
下一步是爲瀏覽器生成證書,以便讓服務器來驗證它。爲了能將證書順利導入至IE 和 Firefox ,證書格式應該是PKCS12 ,因此,使用如下命令生成:
keytool -genkey -v -alias myKey -keyalg RSA -storetype PKCS12 -validity 3650 -keystore C:\my.p12 -dname "CN=MyKey,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass password -keypass password
對應的證書庫存放在“C:\my.p12 ”,客戶端的 CN 可以是任意值。稍候,我們將把這個“ my.p12 ”證書庫導入到 IE和 Firefox 中。
第三步:讓服務器信任客戶端證書
由於是雙向SSL 認證,服務器必須要信任客戶端證書,因此,必須把客戶端證書添加爲服務器的信任認證。由於不能直接將 PKCS12 格式的證書庫導入,我們必須先把客戶端證書導出爲一個單獨的 CER 文件,使用如下命令:
keytool -export -alias myKey -keystore C:\my.p12 -storetype PKCS12 -storepass password -rfc -file C:\my.cer
通過以上命令,客戶端證書就被我們導出到“C:\my.cer ”文件了。下一步,是將該文件導入到服務器的證書庫,添加爲一個信任證書:
keytool -import -v -file C:\my.cer -keystore c:\tomcat.keystore -storepass password
通過list 命令查看服務器的證書庫,我們可以看到兩個輸入,一個是服務器證書,一個是受信任的客戶端證書:
keytool -list -keystore c:\tomcat.keystore -storepass password
第四步:配置Tomcat 服務器
打開Tomcat 根目錄下的 /conf/server.xml ,找到如下配置段,修改如下:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="C:/tomcat.keystore" keystorePass="password"
truststoreFile="C:/tomcat.keystore" truststorePass="password"/>
應用程序的web.xml 可以加上這句話:
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<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>
第五步:導入客戶端證書
果設置了clientAuth="true" ,則需要強制驗證客戶端證書。雙擊 “C:\my.p12” 即可將證書導入至 IE :
導入證書後,即可啓動Tomcat ,用 IE 進行訪問。如果需要用 FireFox 訪問,則需將證書導入至 FireFox :