keytool+tomcat配置HTTPS雙向證書認證




系統需求:

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配置文件中使用,建議輸入與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配置文件中使用,建議輸入與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,找到如下配置段,修改如下:


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/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章