詳解用Tomcat服務(wù)器配置https雙向認(rèn)證過程實(shí)戰(zhàn)
工具:keytool (Windows下路徑:%JAVA_HOME%/bin/keytool.exe)
環(huán)境:Windows8.1企業(yè)版、Tomcat-7.0.27、JDK1.6、IE11、Chrome
一、為服務(wù)器生成證書
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]: 安徽省
該單位的兩字母國家代碼是什么
[Unknown]: CN
CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥市, ST=安徽省, C=CN 正確嗎? [否]: y
正在為以下對象生成 1,024 位 RSA 密鑰對和自簽名證書 (SHA1withRSA)(有效期為 36,500 天):
CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥市, ST=安徽省, C=CN
輸入<tomcat>的主密碼
(如果和 keystore 密碼相同,按回車):
[正在存儲 D:\tomcat.keystore]
C:\Windows\system32>
“D:\tomcat.keystore”含義是將證書文件的保存路徑,證書文件名稱是tomcat.keystore(可自定義名稱);
“-validity 36500”含義是證書有效期,36500表示100年,默認(rèn)值是90天;
二、為客戶端生成證書
1、生成客戶端證書
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]: 安徽省
該單位的兩字母國家代碼是什么
[Unknown]: CN
CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN 正確嗎? [否]: y
正在為以下對象生成 1,024 位 RSA 密鑰對和自簽名證書 (SHA1withRSA)(有效期為 90 天):
CN=StoneXing, OU=iFLYTEK, O=iFLYTEK, L=合肥, ST=安徽省, C=CN
[正在存儲 D:\client.key.p12]
C:\Windows\system32>
生成的兩個文件:

2、安裝客戶端證書
雙擊客戶端證書“client.key.p12”完成導(dǎo)入證書過程如下:







三、讓服務(wù)器信任客戶端證書
1、將客戶端證書導(dǎo)出為CER文件
由于是雙向SSL認(rèn)證,服務(wù)器必須要信任客戶端證書,因此,必須把客戶端證書添加為服務(wù)器的信任認(rèn)證。因不能直接將PKCS12格式的證書庫導(dǎo)入服務(wù)器證書庫,將客戶端證書導(dǎo)出為一個單獨(dú)的CER文件
keytool -export -alias mykey -keystore D:\client.key.p12 -storetype PKCS12 -storepass password -rfc -file D:\client.key.cer
注:password為客戶端證書的密碼
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ù)器的證書庫
添加為一個信任證書使用命令如下:
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
序列號:52e07723
有效期: Thu Jan 23 09:57:55 CST 2014 至Wed Apr 23 09:57:55 CST 2014
證書指紋:
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
信任這個認(rèn)證? [否]: y
認(rèn)證已添加至keystore中
[正在存儲 D:\tomcat.keystore]
C:\Windows\system32>
3、檢查安裝結(jié)果
通過list命令查看服務(wù)器的證書庫,可以看到兩個證書,一個是服務(wù)器證書,一個是受信任的客戶端證書:
keytool -list -keystore D:\tomcat.keystore (tomcat為你設(shè)置服務(wù)器端的證書名)。
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ù)器證書
1、把服務(wù)器證書導(dǎo)出為CER文件
由于是雙向SSL認(rèn)證,客戶端也要驗證服務(wù)器證書,因此,必須把服務(wù)器證書添加到瀏覽的“受信任的根證書頒發(fā)機(jī)構(gòu)”。由于不能直接將keystore格式的證書庫導(dǎo)入,必須先把服務(wù)器證書導(dǎo)出為一個單獨(dú)的CER文件,使用如下命令:
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer (tomcat為你設(shè)置服務(wù)器端的證書名)。
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ù)器證書
雙擊“tomcat.cer”,按照提示安裝證書,將證書填入到“受信任的根證書頒發(fā)機(jī)構(gòu)”。







3、檢查安裝結(jié)果
IE -> Internet選項 -> 內(nèi)容 -> 證書

五、配置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ù)端證書名保持一致
屬性說明:
- clientAuth:設(shè)置是否雙向驗證,默認(rèn)為false,設(shè)置為true代表雙向驗證
- keystoreFile:服務(wù)器證書文件路徑
- keystorePass:服務(wù)器證書密碼
- truststoreFile:用來驗證客戶端證書的根證書,此例中就是服務(wù)器證書
- truststorePass:根證書密碼
六、測試
https://localhost:8443/

服務(wù)器的證書與網(wǎng)址不相符問題需要理解瀏覽器做了什么:
1、瀏覽器將自己支持的一套加密規(guī)則發(fā)送給網(wǎng)站。
2、網(wǎng)站從中選出一組加密算法與HASH算法,并將自己的身份信息以證書的形式發(fā)回給瀏覽器。證書里面包含了網(wǎng)站地址,加密公鑰,以及證書的頒發(fā)機(jī)構(gòu)等信息。
3、獲得網(wǎng)站證書之后瀏覽器要做以下工作:
a) 驗證證書的合法性(頒發(fā)證書的機(jī)構(gòu)是否合法,證書中包含的網(wǎng)站地址是否與正在訪問的地址一致等),如果證書受信任,則瀏覽器欄里面會顯示一個小鎖頭,否則會給出證書不受信的提示。
b) 如果證書受信任,或者是用戶接受了不受信的證書,瀏覽器會生成一串隨機(jī)數(shù)的密碼,并用證書中提供的公鑰加密。
c) 使用約定好的HASH計算握手消息,并使用生成的隨機(jī)數(shù)對消息進(jìn)行加密,最后將之前生成的所有信息發(fā)送給網(wǎng)站。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
讓IIS6支持JSP的設(shè)置方法(IIS完美整合Tomcat)
這方面的教程網(wǎng)上很多,多數(shù)是copy之后又copy,以至于有些細(xì)節(jié)一直含糊不清,也導(dǎo)致我走了許多彎路,今天腳本之家小編特為大家整理了一些方法,經(jīng)測試正常運(yùn)行jsp2014-07-07
tomcat的catalina.out日志按自定義時間格式進(jìn)行分割的操作方法
這篇文章主要介紹了tomcat的catalina.out日志按自定義時間格式進(jìn)行分割,包括安裝Cronolog,修改Tomcat下bin/catalina.sh文件,shell利用crontab自動清除日志的相關(guān)知識,需要的朋友可以參考下2022-04-04
Tomcat配置虛擬主機(jī)的實(shí)現(xiàn)示例
在Tomcat中配置虛擬主機(jī)允許你通過不同的域名或IP地址訪問同一臺服務(wù)器上的不同Web應(yīng)用,這通常通過編輯Tomcat的配置文件server.xml來實(shí)現(xiàn),本文就來介紹一下,感興趣的可以了解一下2024-11-11
如何將Tomcat設(shè)置為自動啟動的服務(wù)最快捷方法
這篇文章主要介紹了如何將Tomcat設(shè)置為自動啟動的服務(wù)最快捷方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
詳解Tomcat Web 應(yīng)用綁定域名的幾種方式
本篇文章主要介紹了詳解Tomcat Web 應(yīng)用綁定域名的幾種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
解決Tomcat 中catalina.out持續(xù)累加問題
這篇文章主要介紹了解決Tomcat 中catalina.out持續(xù)累加問題 ,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-03-03

