利用tomcat服務(wù)器配置https雙向認(rèn)證酱讶。
1、為服務(wù)器生成證書
打開cmd彼乌,進(jìn)入jdk的bin目錄下泻肯,輸入下面的命令:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\homes\tomcat.keystore -validity 36500
命令解釋:
使用keytool為Tomcat生成證書,假定目標(biāo)機(jī)器的域名是“l(fā)ocalhost”囤攀,keystore文件想要存放在“D:\homes\tomcat.keystore”软免,口令為“123123”。
參數(shù)簡要說明:
“D:\homes\tomcat.keystore”含義是將證書文件的保存路徑焚挠,證書文件名稱是tomcat.keystore 膏萧;“-validity 36500”含義是證書有效期,36500表示100年蝌衔,默認(rèn)值是90天 “tomcat”為自定義證書名稱榛泛。
根據(jù)提示進(jìn)行遷移,命令為:
keytool -importkeystore -srckeystore D:\homes\tomcat.keystore -destkeystore D:\homes\tomcat.keystore -deststoretype pkcs12
在命令行填寫必要參數(shù):
A噩斟、 輸入keystore密碼:此處需要輸入大于6個(gè)字符的字符串曹锨。
B、 “您的名字與姓氏是什么剃允?”這是必填項(xiàng)沛简,并且必須是TOMCAT部署主機(jī)的域名或者IP[如:gbcom.com 或者 10.1.25.251](就是你將來要在瀏覽器中輸入的訪問地址)齐鲤,否則瀏覽器會彈出警告窗口,提示用戶證書與所在域不匹配椒楣。在本地做開發(fā)測試時(shí)给郊,應(yīng)填入“l(fā)ocalhost”。
C捧灰、 你的組織單位名稱是什么淆九?”、“您的組織名稱是什么毛俏?”炭庙、“您所在城市或區(qū)域名稱是什么?”煌寇、“您所在的州或者省份名稱是什么焕蹄?”、“該單位的兩字母國家代碼是什么唧席?”可以按照需要填寫也可以不填寫直接回車擦盾,在系統(tǒng)詢問“正確嗎?”時(shí)淌哟,對照輸入信息,如果符合要求則使用鍵盤輸入字母“y”辽故,否則輸入“n”重新填寫上面的信息徒仓。
D、 輸入<tomcat>的主密碼誊垢,這項(xiàng)較為重要掉弛,會在tomcat配置文件中使用,建議輸入與keystore的密碼一致喂走,設(shè)置其它密碼也可以殃饿,完成上述輸入后,直接回車則在你在第二步中定義的位置找到生成的文件芋肠。
2乎芳、為客戶端生成證書
為瀏覽器生成證書,以便讓服務(wù)器來驗(yàn)證它帖池。為了能將證書順利導(dǎo)入至IE和Firefox奈惑,證書格式應(yīng)該是PKCS12,因此睡汹,使用如下命令生成:
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\homes\mykey.p12
(mykey為自定義)肴甸。
對應(yīng)的證書庫存放在“D:\homes\mykey.p12”,客戶端的CN可以是任意值囚巴。雙擊mykey.p12文件原在,輸入剛才設(shè)置的密碼友扰,即可將證書導(dǎo)入至瀏覽器(客戶端)。
3庶柿、讓服務(wù)器信任客戶端證書
由于是雙向SSL認(rèn)證焕檬,服務(wù)器必須要信任客戶端證書,因此澳泵,必須把客戶端證書添加為服務(wù)器的信任認(rèn)證实愚。由于不能直接將PKCS12格式的證書庫導(dǎo)入,必須先把客戶端證書導(dǎo)出為一個(gè)單獨(dú)的CER文件兔辅,使用如下命令:
keytool -export -alias mykey -keystore D:\homes\mykey.p12 -storetype PKCS12 -storepass 123123 -rfc -file D:\homes\mykey.cer
(mykey為自定義與客戶端定義的mykey要一致腊敲,password是你設(shè)置的密碼)。通過以上命令维苔,客戶端證書就被我們導(dǎo)出到“D:\home\mykey.cer”文件了碰辅。
下一步,是將該文件導(dǎo)入到服務(wù)器的證書庫没宾,添加為一個(gè)信任證書使用命令如下:
keytool -import -v -file D:\homes\mykey.cer -keystore D:\homes\tomcat.keystore
通過list命令查看服務(wù)器的證書庫,可以看到兩個(gè)證書沸柔,一個(gè)是服務(wù)器證書循衰,一個(gè)是受信任的客戶端證書:
(tomcat為你設(shè)置服務(wù)器端的證書名)。
4褐澎、讓客戶端信任服務(wù)器證書
由于是雙向SSL認(rèn)證会钝,客戶端也要驗(yàn)證服務(wù)器證書,因此工三,必須把服務(wù)器證書添加到瀏覽的“受信任的根證書頒發(fā)機(jī)構(gòu)”迁酸。由于不能直接將keystore格式的證書庫導(dǎo)入,必須先把服務(wù)器證書導(dǎo)出為一個(gè)單獨(dú)的CER文件俭正,使用如下命令:
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer
(tomcat為你設(shè)置服務(wù)器端的證書名)奸鬓。
通過以上命令,服務(wù)器證書就被我們導(dǎo)出到“D:\homes\tomcat.cer”文件了掸读。雙擊tomcat.cer文件串远,按照提示安裝證書,將證書填入到“受信任的根證書頒發(fā)機(jī)構(gòu)”寺枉。
5抑淫、配置Tomcat服務(wù)器
定位到tomcat服務(wù)器的安裝目錄, 找到conf下的server.xml文件
找到如下已經(jīng)被注釋的代碼:
去掉注釋,修改為:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false"
sslProtocol="TLS" keystoreFile="D:\homes\tomcat.keystore" keystorePass="123123"/>
打開D:/Tomcat/conf/web.xml姥闪,在該文件</welcome-file-list>后面加上這樣一段:
<login-config>
<!-- 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>
這里始苇,密碼和證書的位置根據(jù)個(gè)人的具體環(huán)境而設(shè)置,屬性參數(shù)如下所述:
訪問支持ssl的web站點(diǎn):
啟動本場tomcat,在瀏覽器中輸入:https://localhost:8443/