HTTP是平時瀏覽網(wǎng)頁時候使用的一種協(xié)議。HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,也就是明文的,因此使用HTTP協(xié)議傳輸隱私信息非常不安全。為了保證 這些隱私數(shù)據(jù)能加密傳輸,于是網(wǎng)景公司設(shè)計了SSL(Secure Sockets Layer)協(xié)議用于對HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行加密,從而就誕生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定義在RFC 6101中,之后IETF對SSL 3.0進(jìn)行了升級,于是出現(xiàn)了TLS(Transport Layer Security) 1.0,定義在RFC 2246。實際上我們現(xiàn)在的HTTPS都是用的TLS協(xié)議,但是由于SSL出現(xiàn)的時間比較早,并且依舊被現(xiàn)在瀏覽器所支持,因此SSL依然是HTTPS的 代名詞,但無論是TLS還是SSL都是上個世紀(jì)的事情,SSL最后一個版本是3.0,今后TLS將會繼承SSL優(yōu)良血統(tǒng)繼續(xù)為我們進(jìn)行加密服務(wù)。目前 TLS的版本是1.2,定義在RFC 5246中,暫時還沒有被廣泛的使用。
cd “c:\Program Files\Java\jdk1.6.0_11\bin”?
使用keytool為Tomcat生成證書,假定目標(biāo)機(jī)器的域名是“l(fā)ocalhost”,keystore文件存放在“D:\home\tomcat.keystore”,口令為“password”,使用如下命令生成:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home\tomcat.keystore -validity 36500? (36500表示100年,默認(rèn)90天)
?
在命令行填寫必要參數(shù),名字。單位,什么的 ?隨便輸入字符串就行、
2:為客戶端生成證書:keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\home\mykey.p12 (mykey為自定義)。對應(yīng)的證書庫存放在“D:\home\mykey.p12”,客戶端的CN可以是任意值。雙擊mykey.p12文件,即可將證書導(dǎo)入至瀏覽器(客戶端)。
?
3:讓服務(wù)器信任客戶端證書
keytool -export -alias mykey -keystore D:\home\mykey.p12 -storetype PKCS12 -storepass password -rfc -file D:\home\mykey.cer?
(mykey為自定義與客戶端定義的mykey要一致,password是你設(shè)置的密碼)。通過以上命令,客戶端證書就被我們導(dǎo)出到“D:\home\mykey.cer”文件了。
?
4:文件導(dǎo)入到服務(wù)器的證書庫
將該文件導(dǎo)入到服務(wù)器的證書庫,添加為一個信任證書使用命令如下:
? keytool -import -v -file D:\home\mykey.cer -keystore D:\home\tomcat.keystore
通過list命令查看服務(wù)器的證書庫,可以看到兩個證書,一個是服務(wù)器證書,一個是受信任的客戶端證書:
keytool -list -keystore D:\home\tomcat.keystore (tomcat為你設(shè)置服務(wù)器端的證書名)。
?
?
5:讓客戶端信任服務(wù)器證書
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer (tomcat為你設(shè)置服務(wù)器端的證書名)。
通過以上命令,服務(wù)器證書就被我們導(dǎo)出到“D:\home\tomcat.cer”文件了。雙擊tomcat.cer文件,按照提示安裝證書,將證書填入到“受信任的根證書頒發(fā)機(jī)構(gòu)”。
?
?
6:配置tomcat
打開Tomcat根目錄下的/conf/server.xml,找到Connector port="8443"配置段,修改為如下:
?
?
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="D:\\home\\tomcat.keystore" keystorePass="123456"
truststoreFile="D:\\home\\tomcat.keystore" truststorePass="123456" />
(tomcat要與生成的服務(wù)端證書名一致)
屬性說明:
?
clientAuth:設(shè)置是否雙向驗證,默認(rèn)為false,設(shè)置為true代表雙向驗證
keystoreFile:服務(wù)器證書文件路徑
keystorePass:服務(wù)器證書密碼
truststoreFile:用來驗證客戶端證書的根證書,此例中就是服務(wù)器證書
truststorePass:根證書密碼
?
7:測試
在瀏覽器中輸入:https://localhost:8443/,會彈出選擇客戶端證書界面,點擊“確定”,會進(jìn)入tomcat主頁,地址欄后會有“鎖”圖標(biāo),表示本次會話已經(jīng)通過HTTPS雙向驗證,接下來的會話過程中所傳輸?shù)男畔⒍家呀?jīng)過SSL信息加密。
8:說明
值得注意的是 ? 在eclipse下測試失敗了,myeclipse下正常,直接單獨tomcat測試也成功。不知道是不是eclipse的bug。 ?eclipse在導(dǎo)入以后集成的tomcat配置了,并不是在tomcat所在路徑,eclipse集成tomcat會覆蓋磁盤路徑上的tomcat。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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