本篇寫的是HTTPS在Tomcat中的配置方法;至于HTTPS安全認證的原理,大家可以上網(wǎng)查看去理解;學習建議:大家可以使用面向?qū)ο蟮姆绞饺ダ斫馕帐謪f(xié)議,單向認證與雙向認證的原理。(這篇本人使用了圖解方式講解,寫一下就上傳一張圖片,我也是醉了,望對大家有所幫助)
1.為服務器生成證書
首先要確認當前電腦是否安裝JDK;
1為服務器生成證書: 使用keytool為Tomcat生成證書,假定目標機器的域名是“localhost”,keystore文件存放在“E:tomcat.keystore”,口令為“123456”,
使用如下命令生成: keytool -genkey -v -alias tomcat -keyalg RSA -keystore E:tomcat.keystore -validity 36500

注意:
A.1:這里的口令為服務器證書密碼(至少6位數(shù)),我設為 :123456
2:您的名字與姓氏(必須填寫):URL訪問的地址;我設置為localhost 代表本機 <!-- 盤中的C:windowssystem32driversetchosts文件的本機IP對應字符設置
后面的四項,可以看服務器公司的情況而設置。 程序測試可以不設置,直接回車 -->
B. 接著是顯示你上面所填寫的對應信息, 確認無誤,可以y再回車,完成。若有誤,按n返回,繼續(xù)從名字開始重新填寫

C. 最后是提示你輸入<tomcat>的主密碼,這項較為重要,會在tomcat配置文件中使用,建議輸入與keystore的密碼一致,設置其它密碼也可以(回車即可),

完成上述輸入后,直接回車則在你在第二步中定義的位置找到生成的文件,出現(xiàn)類似于以下圖,就生成服務器證書成功:

2.為客戶端生成證書
1,命令生成:
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore E:mykey.p12 (mykey為自定義)
接下來操作與生成服務器證書一樣,但注意的是名字那可以是任意值
下面那行,可以按自己情況填寫;比如我的: qhs 其他信息都回車可以不寫

2. 對應的證書庫存放在“E:mykey.p12”,雙擊mykey.p12文件,即可將證書導入至瀏覽器(客戶端)




最后導入成功!
3. 讓服務器信任客戶端證書:
A .首先要把客戶端證書導出為一個單獨的CER文件
命令如下:
keytool -export -alias mykey -keystore E:mykey.p12 -storetype PKCS12 -storepass 000000 -rfc -file E:mykey.cer
//上述“000000”為第2步中設置的客戶端密碼;E:mykey.p12與E:mykey.cer ,名字要一致mykey

完成后,E:下面就有了三個文件

B.第二步,是將該文件導入到服務器的證書庫,添加為一個信任證書
命令如下:keytool -import -v -file E:mykey.cer -keystore E:tomcat.keystore
到此已完成第三步,可以使用以下命令可以看到兩證書:一個是服務器證書,一個是受信任的客戶端證書:keytool -list -keystore D:hometomcat.keystore
<!--輸入上面的命令后,會提示輸入密碼(為第一步生成的服務器證書密碼,我的為123456)密碼正確后回車提示是否信任此證書? y-->

//測試
通過命令查看服務器的證書庫,可以看到兩個證書,一個是服務器證書,一個是受信任的客戶端證書:
keytool -list -keystore E:tomcat.keystore (tomcat為你設置服務器端的證書名; 命令中要輸入密碼,為第一步生成的服務器證書密碼:123456)

4.讓客戶端信任服務器證書
A: 先把服務器證書導出為一個單獨的CER文件
使用如下命令:keytool -keystore E:tomcat.keystore -export -alias tomcat -file E:tomcat.cer (tomcat為你設置服務器端的證書名;為第一步生成的服務器證書密碼:123456)。

B: 通過以上命令,服務器證書就被我們導出到“E:tomcat.cer”文件了。雙擊tomcat.cer文件,按照提示安裝證書,將證書填入到“受信任的根證書頒發(fā)機構”。



最后跳出提示,選擇是,完成
導入成功、完成第四步客戶端信任服務器證書

5.配置Tomcat服務器
打開Tomcat根目錄下的/conf/server.xml,找到Connector port="8443"配置段,修改為如下:
Server.xml源碼如下:
<Connector port="8443" protocol="org.Apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" keystoreFile="E:/tomcat.keystore" keystorePass="123456" truststoreFile="E:/tomcat.keystore" truststorePass="123456" />
(E:/tomcat要與生成的服務端證書名一致)
屬性說明:
clientAuth:設置是否雙向驗證,默認為false,設置為true代表雙向驗證
keystoreFile:服務器證書文件路徑
keystorePass:服務器證書密碼
truststoreFile:用來驗證客戶端證書的根證書,此例中就是服務器證書
truststorePass:根證書密碼
6.測試
在瀏覽器中輸入https://localhost:8443/,會彈出選擇客戶端證書界面,點擊“確定”,會進入tomcat主頁,地址欄后會有“鎖”圖標,表示本次會話已經(jīng)通過HTTPS雙向驗證,接下來的會話過程中所傳輸?shù)男畔⒍家呀?jīng)過SSL信息加密。

完成HTTPS雙向認證。
