系統需求:
1、 Windows系統或Linux系統
2、 安裝并配置JDK 1.6.0_13
3、 安裝并配置Tomcat 6.0
第一步:為服務器生成證書
1、 Windows系統
- “運行”控制臺,進入%JAVA_HOME%/bin目錄
- 使用keytool為Tomcat生成證書,假定目標機器的域名是“localhost”,keystore文件存放在“D:\home\tomcat.keystore”,口令為“password”,使用如下命令生成:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home\tomcat.keystore -validity 36500
(參數簡要說明:“D:\home\tomcat.keystore”含義是將證書文件的保存路徑,證書文件名稱是tomcat.keystore ;“-validity 36500”含義是證書有效期,36500表示100年,默認值是90天)
A、輸入keystore密碼:此處需要輸入大于6個字符的字符串
B、“您的名字與姓氏是什么?”這是必填項,并且必須是TOMCAT部署主機的域名或者IP[如:gbcom.com 或者 10.1.25.251](就是你將來要在瀏覽器中輸入的訪問地址),否則瀏覽器會彈出警告窗口,提示用戶證書與所在域不匹配。在本地做開發測試時,應填入“localhost”
C、“你的組織單位名稱是什么?”、“您的組織名稱是什么?”、“您所在城市或區域名稱是什么?”、“您所在的州或者省份名稱是什么?”、“該單位的兩字母國家代碼是什么?”可以按照需要填寫也可以不填寫直接回車,在系統詢問“正確嗎?”時,對照輸入信息,如果符合要求則使用鍵盤輸入字母“y”,否則輸入“n”重新填寫上面的信息
D、輸入<tomcat>的主密碼,這項較為重要,會在tomcat配置文件中使用,建議輸入與keystore的密碼一致,設置其它密碼也可以
- 完成上述輸入后,直接回車則在你在第二步中定義的位置找到生成的文件
2、 Linux系統
- “運行”控制臺,進入%JAVA_HOME%/bin目錄
- 使用如下命令生成:
./keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/ac/web/tomcat.keystore -validity 36500
(參數簡要說明:“/etc/tomcat.keystore”含義是將證書文件保存在路徑/usr/local/ac/web/下,證書文件名稱是tomcat.keystore ;“-validity 36500”含義是證書有效期,36500表示100年,默認值是90天)
A、Enter keystore password:此處需要輸入大于6個字符的字符串
B、“What is your first and last name?”這是必填項,并且必須是TOMCAT部署主機的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你將來要在瀏覽器中輸入的訪問地址
C、“What is the name of your organizational unit?”、“What is the name of your organization?”、“What is the name of your City or Locality?”、“What is the name of your State or Province?”、“What is the two-letter country code for this unit?”可以按照需要填寫也可以不填寫直接回車,在系統詢問“correct?”時,對照輸入信息,如果符合要求則使用鍵盤輸入字母“y”,否則輸入“n”重新填寫上面的信息
D、Enter key password for <tomcat>,這項較為重要,會在tomcat配置文件中使用,建議輸入與keystore的密碼一致,設置其它密碼也可以
- 完成上述輸入后,直接回車則在你在第二步中定義的位置找到生成的文件
第二步:為客戶端生成證書
- 為瀏覽器生成證書,以便讓服務器來驗證它。為了能將證書順利導入至IE和Firefox,證書格式應該是PKCS12,因此,使用如下命令生成:
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\home\mykey.p12
對應的證書庫存放在“D:\home\mykey.p12”,客戶端的CN可以是任意值。雙擊mykey.p12文件,即可將證書導入至瀏覽器(客戶端)。
第三步:讓服務器信任客戶端證書
- 由于是雙向SSL認證,服務器必須要信任客戶端證書,因此,必須把客戶端證書添加為服務器的信任認證。由于不能直接將PKCS12格式的證書庫導入,必須先把客戶端證書導出為一個單獨的CER文件,使用如下命令:
keytool -export -alias mykey -keystore D:\home\mykey.p12 -storetype PKCS12 -storepass password -rfc -file D:\home\mykey.cer
- 通過以上命令,客戶端證書就被我們導出到“D:\home\mykey.cer”文件了。下一步,是將該文件導入到服務器的證書庫,添加為一個信任證書:
keytool -import -v -file D:\home\mykey.cer -keystore D:\home\tomcat.keystore
- 通過list命令查看服務器的證書庫,可以看到兩個證書,一個是服務器證書,一個是受信任的客戶端證書:
keytool -list -keystore D:\home\tomcat.keystore
第四步:讓客戶端信任服務器證書
- 由于是雙向SSL認證,客戶端也要驗證服務器證書,因此,必須把服務器證書添加到瀏覽的“受信任的根證書頒發機構”。由于不能直接將keystore格式的證書庫導入,必須先把服務器證書導出為一個單獨的CER文件,使用如下命令:
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer
- 通過以上命令,服務器證書就被我們導出到“D:\home\tomcat.cer”文件了。雙擊tomcat.cer文件,按照提示安裝證書,將證書填入到“受信任的根證書頒發機構”。
第四步:配置Tomcat服務器
打開Tomcat根目錄下的/conf/server.xml,找到如下配置段,修改如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="D:\\home\\test.keystore" keystorePass="123456"
truststoreFile="D:\\home\\test.keystore" truststorePass="123456" />
屬性說明:
- clientAuth:設置是否雙向驗證,默認為false,設置為true代表雙向驗證
- keystoreFile:服務器證書文件路徑
- keystorePass:服務器證書密碼
- truststoreFile:用來驗證客戶端證書的根證書,此例中就是服務器證書
- truststorePass:根證書密碼
第五步:測試
在瀏覽器中輸入:https://localhost:8443/,會彈出選擇客戶端證書界面,點擊“確定”,會進入tomcat主頁,地址欄后會有“鎖”圖標,表示本次會話已經通過HTTPS雙向驗證,接下來的會話過程中所傳輸的信息都已經過SSL信息加密。
注意事項:貌似導入證書的時候,最好導入到“個人”那一欄里面,貌似客戶端的用戶名不填寫也是可以的,或者隨便填寫。
http://licg1234.blog.163.com/blog/static/13908233320121165356868/