在Tomcat 6中配置SSL雙向認(rèn)證是相當(dāng)容易的,本文將介紹如何使用JDK的keytool來為Tomcat配置雙向SSL認(rèn)證。并實(shí)現(xiàn)批量生成證書?系統(tǒng)需求:JDK 5.0
Tomcat?6.0.16
啟動(dòng)命令行:
第一步:為服務(wù)器生成證書
Tomcat?6.0.16
啟動(dòng)命令行:
第一步:為服務(wù)器生成證書
使用keytool為Tomcat生成證書,假定目標(biāo)機(jī)器的域名是localhost或者“192.168.1.1”,keystore文件存放在“D:/downloads/tomcat.keystore”,口令為“l(fā)ogiscn”,使用如下命令生成:
?
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/downloads/tomcat.keystore -dname "CN=192.168.1.1,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN" -validity 3650 -storepass logiscn -keypass logiscn ?
如果Tomcat所在服務(wù)器的域名不是“l(fā)ocalhost”,應(yīng)改為對應(yīng)的域名,如 [url]www.baidu.com[/url] ?或者IP地址,否則瀏覽器會(huì)彈出警告窗口,提示用戶證書與所在域不匹配。?
第二步:為客戶端生成證書
如果Tomcat所在服務(wù)器的域名不是“l(fā)ocalhost”,應(yīng)改為對應(yīng)的域名,如 [url]www.baidu.com[/url] ?或者IP地址,否則瀏覽器會(huì)彈出警告窗口,提示用戶證書與所在域不匹配。?
第二步:為客戶端生成證書
下一步是為瀏覽器生成證書,以便讓服務(wù)器來驗(yàn)證它。假設(shè)文件存放在D:/downloads/p12/tianli.p12,為了能將證書順利導(dǎo)入至IE和Firefox,證書格式應(yīng)該是PKCS12,因此,使用如下命令生成:
keytool -genkey -v -alias tianli -keyalg RSA -storetype PKCS12 -keystore D:/downloads/p12/tianli.p12 -dname "CN=tianli,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN" -validity 3650 -storepass tianli -keypass tianli"?
-validity為有效期限,目前的設(shè)置為10年,keypass用于在導(dǎo)入瀏覽器時(shí)使用的密碼,如果密碼不正確,則不能正確導(dǎo)入到瀏覽器。
對應(yīng)的證書庫存放在“D:/downloads/p12/tianli.p12”,客戶端的CN可以是任意值。
對應(yīng)的證書庫存放在“D:/downloads/p12/tianli.p12”,客戶端的CN可以是任意值。
第三步:讓服務(wù)器信任客戶端證書
由于是雙向SSL認(rèn)證,服務(wù)器必須要信任客戶端證書,因此,必須把客戶端證書添加為服務(wù)器的信任認(rèn)證。由于不能直接將PKCS12格式的證書庫導(dǎo)入,我們必須先把客戶端證書導(dǎo)出為一個(gè)單獨(dú)的CER文件,使用如下命令:
由于是雙向SSL認(rèn)證,服務(wù)器必須要信任客戶端證書,因此,必須把客戶端證書添加為服務(wù)器的信任認(rèn)證。由于不能直接將PKCS12格式的證書庫導(dǎo)入,我們必須先把客戶端證書導(dǎo)出為一個(gè)單獨(dú)的CER文件,使用如下命令:
keytool -export -alias tianli -keystore??D:/downloads/p12/tianli.p12 -storetype PKCS12 -storepass tianli -rfc -file?D:/downloads/cert/tianli.cer
?
通過以上命令,客戶端證書就被我們導(dǎo)出到“D:/downloads/cert/tianli.cer r”文件了。下一步,是將該文件導(dǎo)入到服務(wù)器的證書庫,添加為一個(gè)信任證書:
?
keytool -import -alias tianli -v -file D:/downloads/cert/tianli.cer -keystore D:/downloads/tomcat.keystore -storepass logiscn <myint.inf
由于在導(dǎo)入的過程中需要輸入Y或者n在此處直接使用一個(gè)文件myint.inf代替輸入,myint.inf是一個(gè)文本文件,里面的內(nèi)容只有y和一個(gè)回車?
通過list命令查看服務(wù)器的證書庫,我們可以看到兩個(gè)輸入,一個(gè)是服務(wù)器證書,一個(gè)是受信任的客戶端證書:?
第四步:配置Tomcat服務(wù)器
打開Tomcat根目錄下的/conf/server.xml,找到如下配置段,修改如下:
打開注釋
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
??? maxThreads="150" scheme="https" secure="true"
??? clientAuth="true" sslProtocol="TLS"
??? keystoreFile=" D:/downloads/tomcat.keystore " keystorePass="logiscn?"
??? truststoreFile=" D:/downloads/tomcat.keystore " truststorePass="logiscn?"
/>
其中,clientAuth指定是否需要驗(yàn)證客戶端證書,如果該設(shè)置為“false”,則為單向SSL驗(yàn)證,SSL配置可到此結(jié)束。如果clientAuth設(shè)置為“true”,表示強(qiáng)制雙向SSL驗(yàn)證,必須驗(yàn)證客戶端證書。如果clientAuth設(shè)置為“want”,則表示可以驗(yàn)證客戶端證書,但如果客戶端沒有有效證書,也不強(qiáng)制驗(yàn)證。
通過list命令查看服務(wù)器的證書庫,我們可以看到兩個(gè)輸入,一個(gè)是服務(wù)器證書,一個(gè)是受信任的客戶端證書:?
第四步:配置Tomcat服務(wù)器
打開Tomcat根目錄下的/conf/server.xml,找到如下配置段,修改如下:
打開注釋
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
??? maxThreads="150" scheme="https" secure="true"
??? clientAuth="true" sslProtocol="TLS"
??? keystoreFile=" D:/downloads/tomcat.keystore " keystorePass="logiscn?"
??? truststoreFile=" D:/downloads/tomcat.keystore " truststorePass="logiscn?"
/>
其中,clientAuth指定是否需要驗(yàn)證客戶端證書,如果該設(shè)置為“false”,則為單向SSL驗(yàn)證,SSL配置可到此結(jié)束。如果clientAuth設(shè)置為“true”,表示強(qiáng)制雙向SSL驗(yàn)證,必須驗(yàn)證客戶端證書。如果clientAuth設(shè)置為“want”,則表示可以驗(yàn)證客戶端證書,但如果客戶端沒有有效證書,也不強(qiáng)制驗(yàn)證。
第五步:導(dǎo)入客戶端證書
如果設(shè)置了clientAuth="true",則需要強(qiáng)制驗(yàn)證客戶端證書。雙擊“D:/downloads/p12/tianli.p12”即可將證書導(dǎo)入至IE:導(dǎo)入證書后,即可啟動(dòng)Tomcat,用IE進(jìn)行訪問。輸入 [url]https://IPAdress/[/url]????? ?,https協(xié)議默認(rèn)的訪問端口為443。以上所寫大都為借鑒網(wǎng)上的資料。
如果設(shè)置了clientAuth="true",則需要強(qiáng)制驗(yàn)證客戶端證書。雙擊“D:/downloads/p12/tianli.p12”即可將證書導(dǎo)入至IE:導(dǎo)入證書后,即可啟動(dòng)Tomcat,用IE進(jìn)行訪問。輸入 [url]https://IPAdress/[/url]????? ?,https協(xié)議默認(rèn)的訪問端口為443。以上所寫大都為借鑒網(wǎng)上的資料。
為了實(shí)現(xiàn)每人發(fā)放一個(gè)證書,如果重復(fù)以上的操作也可以達(dá)到目的,考慮到需要進(jìn)行大量的測試,并且在不同的機(jī)器上部署,就想到使用程序自動(dòng)生成命令的方法。
生成命令的程序是使用java?寫的,生成命令需要預(yù)先設(shè)置如下的幾項(xiàng):
1.??Basedir生成的命令文件的位置,生成的命令運(yùn)行后生成cer和p12格式的文件,為了區(qū)分存放,需要建立兩個(gè)文件夾,因此需要與一個(gè)基本目錄,
2.??生成的keyStore文件需要一個(gè)密碼,為了安全起見,不同的域名的keyStore需要不同的密碼。
3.??域地址,如果域地址不正確,則會(huì)在整數(shù)上發(fā)出警告。因此對于不同的域,地址是不同的。
完成以上的三個(gè)設(shè)置之后就可以生成命令了。生成的文件包括3個(gè),全部存放在Basedir下。
1.??Myint.inf文件,僅僅用于輸入內(nèi)容很簡單包括y?和一個(gè)回車
2.??Conf的文件,里面包括了生成的配置文件片段和一段簡單的使用說明,內(nèi)容如下
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
???????maxThreads="150" scheme="https" secure="true"
???????clientAuth="true" sslProtocol="TLS"
???????keystoreFile="D:/downloads/tomcat.keystore"
????????keystorePass="logiscn"
???????truststoreFile="D:/downloads/tomcat.keystore"
????????truststorePass="logiscn"/>
使用的時(shí)候直接復(fù)制到相應(yīng)的server.xml中
3.??可執(zhí)行的命令文件command.bat,執(zhí)行上述命令之前,需要建立兩個(gè)文件夾,以便于把生成的文件存放到合適的位置,部分代碼如下mkdir cert
?mkdir p12
?keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/downloads/tomcat.keystore -dname "CN=localhost,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN" -validity 3650 -storepass logiscn -keypass logiscn
??rem?為?tianli?生成證書
?rem?第二步:為客戶端生成證書
?keytool -genkey -v -alias tianli -keyalg RSA -storetype PKCS12 -keystore D:/downloads/p12/tianli.p12 -dname "CN=tianli,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN" -validity 3650 -storepass tianli -keypass tianli"
?rem?第三步:讓服務(wù)器信任客戶端證書
?keytool -export -alias tianli -keystore??D:/downloads/p12/tianli.p12 -storetype PKCS12 -storepass tianli -rfc -file?D:/downloads/cert/tianli.cer"
?keytool -import -alias tianli -v -file D:/downloads/cert/tianli.cer -keystore D:/downloads/tomcat.keystore -storepass logiscn <myint.inf
Java程序的實(shí)現(xiàn)見附件,這樣雙擊執(zhí)行程序就可以批量生成證書。相當(dāng)方便。
?
?
?
?
本文基于
署名 2.5 中國大陸許可協(xié)議
發(fā)布,歡迎轉(zhuǎn)載,演繹或用于商業(yè)目的,但是必須且在文章頁面明顯位置給出原文鏈接
Dana、Li
(包含鏈接),具體操作方式可參考此處。如您有任何疑問或者授權(quán)方面的協(xié)商,請留言或加Q群!
|
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
