詳解用Tomcat服務(wù)器配置https雙向認(rèn)證過(guò)程實(shí)戰(zhàn)
工具:keytool (Windows下路徑:%JAVA_HOME%/bin/keytool.exe)
環(huán)境:Windows8.1企業(yè)版、Tomcat-7.0.27、JDK1.6、IE11、Chrome
一、為服務(wù)器生成證書(shū)
C:\Windows\system32>keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore -validity 36500 輸入keystore密碼: 再次輸入新密碼: 您的名字與姓氏是什么? [Unknown]: StoneXing 您的組織單位名稱是什么? [Unknown]: iFLYTEK 您的組織名稱是什么? [Unknown]: iFLYTEK 您所在的城市或區(qū)域名稱是什么? [Unknown]: 合肥市 您所在的州或省份名稱是什么? [Unknown]: 安徽省 該單位的兩字母國(guó)家代碼是什么 [Unknown]: CN CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥市, ST=安徽省, C=CN 正確嗎? [否]: y 正在為以下對(duì)象生成 1,024 位 RSA 密鑰對(duì)和自簽名證書(shū) (SHA1withRSA)(有效期為 36,500 天): CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥市, ST=安徽省, C=CN 輸入<tomcat>的主密碼 (如果和 keystore 密碼相同,按回車): [正在存儲(chǔ) D:\tomcat.keystore] C:\Windows\system32>
“D:\tomcat.keystore”含義是將證書(shū)文件的保存路徑,證書(shū)文件名稱是tomcat.keystore(可自定義名稱);
“-validity 36500”含義是證書(shū)有效期,36500表示100年,默認(rèn)值是90天;
二、為客戶端生成證書(shū)
1、生成客戶端證書(shū)
C:\Windows\system32>keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\client.key.p12 輸入keystore密碼: 再次輸入新密碼: 您的名字與姓氏是什么? [Unknown]: StoneXing 您的組織單位名稱是什么? [Unknown]: iFLYTEK 您的組織名稱是什么? [Unknown]: iFLYTEK 您所在的城市或區(qū)域名稱是什么? [Unknown]: 合肥 您所在的州或省份名稱是什么? [Unknown]: 安徽省 該單位的兩字母國(guó)家代碼是什么 [Unknown]: CN CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN 正確嗎? [否]: y 正在為以下對(duì)象生成 1,024 位 RSA 密鑰對(duì)和自簽名證書(shū) (SHA1withRSA)(有效期為 90 天): CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN [正在存儲(chǔ) D:\client.key.p12] C:\Windows\system32>
生成的兩個(gè)文件:
2、安裝客戶端證書(shū)
雙擊客戶端證書(shū)“client.key.p12”完成導(dǎo)入證書(shū)過(guò)程如下:
三、讓服務(wù)器信任客戶端證書(shū)
1、將客戶端證書(shū)導(dǎo)出為CER文件
由于是雙向SSL認(rèn)證,服務(wù)器必須要信任客戶端證書(shū),因此,必須把客戶端證書(shū)添加為服務(wù)器的信任認(rèn)證。因不能直接將PKCS12格式的證書(shū)庫(kù)導(dǎo)入服務(wù)器證書(shū)庫(kù),將客戶端證書(shū)導(dǎo)出為一個(gè)單獨(dú)的CER文件
keytool -export -alias mykey -keystore D:\client.key.p12 -storetype PKCS12 -storepass password -rfc -file D:\client.key.cer
注:password為客戶端證書(shū)的密碼
C:\Windows\system32>keytool -export -alias mykey -keystore D:\client.key.p12 -storetype PKCS12 -storepass 888888 -rfc -file D:\client.key.cer 保存在文件中的認(rèn)證 <D:\client.key.cer> C:\Windows\system32>
2、將CER文件導(dǎo)入到服務(wù)器的證書(shū)庫(kù)
添加為一個(gè)信任證書(shū)使用命令如下:
C:\Windows\system32>keytool -import -v -file D:\client.key.cer -keystore D:\tomcat.keystore 輸入keystore密碼: 所有者:CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN 簽發(fā)人:CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN 序列號(hào):52e07723 有效期: Thu Jan 23 09:57:55 CST 2014 至Wed Apr 23 09:57:55 CST 2014 證書(shū)指紋: MD5:15:29:58:68:8D:63:E1:00:8E:E6:EC:5E:AD:23:79:38 SHA1:B7:EF:B9:67:BD:56:95:82:3D:D8:14:0D:20:69:F0:C8:60:98:31:9A 簽名算法名稱:SHA1withRSA 版本: 3 信任這個(gè)認(rèn)證? [否]: y 認(rèn)證已添加至keystore中 [正在存儲(chǔ) D:\tomcat.keystore] C:\Windows\system32>
3、檢查安裝結(jié)果
通過(guò)list命令查看服務(wù)器的證書(shū)庫(kù),可以看到兩個(gè)證書(shū),一個(gè)是服務(wù)器證書(shū),一個(gè)是受信任的客戶端證書(shū):
keytool -list -keystore D:\tomcat.keystore (tomcat為你設(shè)置服務(wù)器端的證書(shū)名)。
C:\Windows\system32>keytool -list -keystore D:\tomcat.keystore 輸入keystore密碼: Keystore 類型: JKS Keystore 提供者: SUN 您的 keystore 包含 2 輸入 tomcat, 2014-1-23, PrivateKeyEntry, 認(rèn)證指紋 (MD5): 4B:71:06:02:7C:35:F8:BF:B1:24:E2:68:8F:65:75:15 mykey, 2014-1-23, trustedCertEntry, 認(rèn)證指紋 (MD5): 15:29:58:68:8D:63:E1:00:8E:E6:EC:5E:AD:23:79:38 C:\Windows\system32>
四、讓客戶端信任服務(wù)器證書(shū)
1、把服務(wù)器證書(shū)導(dǎo)出為CER文件
由于是雙向SSL認(rèn)證,客戶端也要驗(yàn)證服務(wù)器證書(shū),因此,必須把服務(wù)器證書(shū)添加到瀏覽的“受信任的根證書(shū)頒發(fā)機(jī)構(gòu)”。由于不能直接將keystore格式的證書(shū)庫(kù)導(dǎo)入,必須先把服務(wù)器證書(shū)導(dǎo)出為一個(gè)單獨(dú)的CER文件,使用如下命令:
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer (tomcat為你設(shè)置服務(wù)器端的證書(shū)名)。
C:\Windows\system32>keytool -keystore D:\tomcat.keystore -export -alias tomcat -file D:\tomcat.cer 輸入keystore密碼: 保存在文件中的認(rèn)證 <D:\tomcat.cer> C:\Windows\system32>
2、在客戶端安裝服務(wù)器證書(shū)
雙擊“tomcat.cer”,按照提示安裝證書(shū),將證書(shū)填入到“受信任的根證書(shū)頒發(fā)機(jī)構(gòu)”。
3、檢查安裝結(jié)果
IE -> Internet選項(xiàng) -> 內(nèi)容 -> 證書(shū)
五、配置Tomcat服務(wù)器
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:\\tomcat.keystore" keystorePass="888888" truststoreFile="D:\\tomcat.keystore" truststorePass="888888" />
注意服務(wù)端證書(shū)名保持一致
屬性說(shuō)明:
- clientAuth:設(shè)置是否雙向驗(yàn)證,默認(rèn)為false,設(shè)置為true代表雙向驗(yàn)證
- keystoreFile:服務(wù)器證書(shū)文件路徑
- keystorePass:服務(wù)器證書(shū)密碼
- truststoreFile:用來(lái)驗(yàn)證客戶端證書(shū)的根證書(shū),此例中就是服務(wù)器證書(shū)
- truststorePass:根證書(shū)密碼
六、測(cè)試
https://localhost:8443/
服務(wù)器的證書(shū)與網(wǎng)址不相符問(wèn)題需要理解瀏覽器做了什么:
1、瀏覽器將自己支持的一套加密規(guī)則發(fā)送給網(wǎng)站。
2、網(wǎng)站從中選出一組加密算法與HASH算法,并將自己的身份信息以證書(shū)的形式發(fā)回給瀏覽器。證書(shū)里面包含了網(wǎng)站地址,加密公鑰,以及證書(shū)的頒發(fā)機(jī)構(gòu)等信息。
3、獲得網(wǎng)站證書(shū)之后瀏覽器要做以下工作:
a) 驗(yàn)證證書(shū)的合法性(頒發(fā)證書(shū)的機(jī)構(gòu)是否合法,證書(shū)中包含的網(wǎng)站地址是否與正在訪問(wèn)的地址一致等),如果證書(shū)受信任,則瀏覽器欄里面會(huì)顯示一個(gè)小鎖頭,否則會(huì)給出證書(shū)不受信的提示。
b) 如果證書(shū)受信任,或者是用戶接受了不受信的證書(shū),瀏覽器會(huì)生成一串隨機(jī)數(shù)的密碼,并用證書(shū)中提供的公鑰加密。
c) 使用約定好的HASH計(jì)算握手消息,并使用生成的隨機(jī)數(shù)對(duì)消息進(jìn)行加密,最后將之前生成的所有信息發(fā)送給網(wǎng)站。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Windows系統(tǒng)下安裝Tomcat服務(wù)器和配置虛擬目錄的方法
這篇文章主要介紹了Windows系統(tǒng)下安裝Tomcat服務(wù)器和配置虛擬目錄的方法,Tomcat服務(wù)器用于驅(qū)動(dòng)JSP和Servlet程序,需要的朋友可以參考下2015-12-12Tomcat如何監(jiān)控并刪除超時(shí)Session詳解
這篇文章主要給大家介紹了關(guān)于Tomcat如何監(jiān)控并刪除超時(shí)Session的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Tomcat具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Tomcat架構(gòu)設(shè)計(jì)及Servlet作用規(guī)范講解
這篇文章主要為大家介紹了Tomcat架構(gòu)設(shè)計(jì)及Servlet作用規(guī)范講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08tomcat組件圖解 一個(gè)web服務(wù)器的架構(gòu)演化史
這篇文章主要介紹了tomcat組件圖解 一個(gè)web服務(wù)器的架構(gòu)演化史,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08詳解Tomcat是如何實(shí)現(xiàn)異步Servlet的
這篇文章主要介紹了詳解Tomcat是如何實(shí)現(xiàn)異步Servlet的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Tomcat 7通過(guò)設(shè)置不同的端口部署兩個(gè)項(xiàng)目
最近因?yàn)橛袀€(gè)Web項(xiàng)目,需要部署兩個(gè)相同項(xiàng)目到Tomcat中,第二個(gè)是拷貝第一個(gè)的,使用的項(xiàng)目是使用SpringMVC框架的,嘗試了幾種方法,這篇文章給大家總結(jié)一個(gè)比較靠譜的方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-10-10