日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

https原理及tomcat配置https方法

系統(tǒng) 2566 0

一、 什么是HTTPS

在說(shuō)HTTPS之前先說(shuō)說(shuō)什么是HTTP,HTTP就是我們平時(shí)瀏覽網(wǎng)頁(yè)時(shí)候使用的一種協(xié)議。HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,也就是明文的,因此使用HTTP協(xié)議傳輸隱私信息非常不安全。為了保證這些隱私數(shù)據(jù)能加密傳輸,于是網(wǎng)景公司設(shè)計(jì)了SSL(Secure Sockets Layer)協(xié)議用于對(duì)HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行加密,從而就誕生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定義在RFC 6101中,之后IETF對(duì)SSL 3.0進(jìn)行了升級(jí),于是出現(xiàn)了TLS(Transport Layer Security) 1.0,定義在RFC 2246。實(shí)際上我們現(xiàn)在的HTTPS都是用的TLS協(xié)議,但是由于SSL出現(xiàn)的時(shí)間比較早,并且依舊被現(xiàn)在瀏覽器所支持,因此SSL依然是HTTPS的代名詞,但無(wú)論是TLS還是SSL都是上個(gè)世紀(jì)的事情,SSL最后一個(gè)版本是3.0,今后TLS將會(huì)繼承SSL優(yōu)良血統(tǒng)繼續(xù)為我們進(jìn)行加密服務(wù)。目前TLS的版本是1.2,定義在RFC 5246中,暫時(shí)還沒(méi)有被廣泛的使用。

?

二、 Https的工作原理

? ? HTTPS在傳輸數(shù)據(jù)之前需要客戶端(瀏覽器)與服務(wù)端(網(wǎng)站)之間進(jìn)行一次握手,在握手過(guò)程中將確立雙方加密傳輸數(shù)據(jù)的密碼信息。TLS/SSL協(xié)議不僅僅是一套加密傳輸?shù)膮f(xié)議,更是一件經(jīng)過(guò)藝術(shù)家精心設(shè)計(jì)的藝術(shù)品,TLS/SSL中使用了非對(duì)稱加密,對(duì)稱加密以及HASH算法。握手過(guò)程的簡(jiǎ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)站。

?

4.網(wǎng)站接收瀏覽器發(fā)來(lái)的數(shù)據(jù)之后要做以下的操作:

a) 使用自己的私鑰將信息解密取出密碼,使用密碼解密瀏覽器發(fā)來(lái)的握手消息,并驗(yàn)證HASH是否與瀏覽器發(fā)來(lái)的一致。

b) 使用密碼加密一段握手消息,發(fā)送給瀏覽器。

5.瀏覽器解密并計(jì)算握手消息的HASH,如果與服務(wù)端發(fā)來(lái)的HASH一致,此時(shí)握手過(guò)程結(jié)束,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對(duì)稱加密算法進(jìn)行加密。

這里瀏覽器與網(wǎng)站互相發(fā)送加密的握手消息并驗(yàn)證,目的是為了保證雙方都獲得了一致的密碼,并且可以正常的加密解密數(shù)據(jù),為后續(xù)真正數(shù)據(jù)的傳輸做一次測(cè)試。另外,HTTPS一般使用的加密與HASH算法如下:

非對(duì)稱加密算法:RSA,DSA/DSS

對(duì)稱加密算法:AES,RC4,3DES

HASH算法:MD5,SHA1,SHA256

其中非對(duì)稱加密算法用于在握手過(guò)程中加密生成的密碼,對(duì)稱加密算法用于對(duì)真正傳輸?shù)臄?shù)據(jù)進(jìn)行加密,而HASH算法用于驗(yàn)證數(shù)據(jù)的完整性。由于瀏覽器生成的密碼是整個(gè)數(shù)據(jù)加密的關(guān)鍵,因此在傳輸?shù)臅r(shí)候使用了非對(duì)稱加密算法對(duì)其加密。非對(duì)稱加密算法會(huì)生成公鑰和私鑰,公鑰只能用于加密數(shù)據(jù),因此可以隨意傳輸,而網(wǎng)站的私鑰用于對(duì)數(shù)據(jù)進(jìn)行解密,所以網(wǎng)站都會(huì)非常小心的保管自己的私鑰,防止泄漏。

TLS握手過(guò)程中如果有任何錯(cuò)誤,都會(huì)使加密連接斷開(kāi),從而阻止了隱私信息的傳輸。

工具/原料

  • 利用tomcat服務(wù)器配置https雙向認(rèn)證

方法/步驟

  1. ?

    為服務(wù)器生成證書(shū)

    “運(yùn)行”控制臺(tái),進(jìn)入%JAVA_HOME%/bin目錄,使用如下命令進(jìn)入目錄:

    cd “c:\Program Files\Java\jdk1.6.0_11\bin”?

    使用keytool為T(mén)omcat生成證書(shū),假定目標(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 (參數(shù)簡(jiǎn)要說(shuō)明:“D:\home\tomcat.keystore”含義是將證書(shū)文件的保存路徑,證書(shū)文件名稱是tomcat.keystore ;“-validity 36500”含義是證書(shū)有效期,36500表示100年,默認(rèn)值是90天 “tomcat”為自定義證書(shū)名稱)。

    ?

    在命令行填寫(xiě)必要參數(shù):

    A、 輸入keystore密碼:此處需要輸入大于6個(gè)字符的字符串。

    B、 “您的名字與姓氏是什么?”這是必填項(xiàng),并且必須是TOMCAT部署主機(jī)的域名或者IP[如:gbcom.com 或者 10.1.25.251](就是你將來(lái)要在瀏覽器中輸入的訪問(wèn)地址),否則瀏覽器會(huì)彈出警告窗口,提示用戶證書(shū)與所在域不匹配。在本地做開(kāi)發(fā)測(cè)試時(shí),應(yīng)填入“l(fā)ocalhost”。

    C、 你的組織單位名稱是什么?”、“您的組織名稱是什么?”、“您所在城市或區(qū)域名稱是什么?”、“您所在的州或者省份名稱是什么?”、“該單位的兩字母國(guó)家代碼是什么?”可以按照需要填寫(xiě)也可以不填寫(xiě)直接回車,在系統(tǒng)詢問(wèn)“正確嗎?”時(shí),對(duì)照輸入信息,如果符合要求則使用鍵盤(pán)輸入字母“y”,否則輸入“n”重新填寫(xiě)上面的信息。

    D、 輸入<tomcat>的主密碼,這項(xiàng)較為重要,會(huì)在tomcat配置文件中使用,建議輸入與keystore的密碼一致,設(shè)置其它密碼也可以,完成上述輸入后,直接回車則在你在第二步中定義的位置找到生成的文件。

  2. ?

    為客戶端生成證書(shū)

    為瀏覽器生成證書(shū),以便讓服務(wù)器來(lái)驗(yàn)證它。為了能將證書(shū)順利導(dǎo)入至IE和Firefox,證書(shū)格式應(yīng)該是PKCS12,因此,使用如下命令生成:

    keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\home\mykey.p12 (mykey為自定義)。

    對(duì)應(yīng)的證書(shū)庫(kù)存放在“D:\home\mykey.p12”,客戶端的CN可以是任意值。雙擊mykey.p12文件,即可將證書(shū)導(dǎo)入至瀏覽器(客戶端)。

  3. ?

    讓服務(wù)器信任客戶端證書(shū)

    由于是雙向SSL認(rèn)證,服務(wù)器必須要信任客戶端證書(shū),因此,必須把客戶端證書(shū)添加為服務(wù)器的信任認(rèn)證。由于不能直接將PKCS12格式的證書(shū)庫(kù)導(dǎo)入,必須先把客戶端證書(shū)導(dǎo)出為一個(gè)單獨(dú)的CER文件,使用如下命令:

    keytool -export -alias mykey -keystore D:\home\mykey.p12 -storetype PKCS12 -storepass password -rfc -file D:\home\mykey.cer?

    (mykey為自定義與客戶端定義的mykey要一致,password是你設(shè)置的密碼)。通過(guò)以上命令,客戶端證書(shū)就被我們導(dǎo)出到“D:\home\mykey.cer”文件了。

    下一步,是將該文件導(dǎo)入到服務(wù)器的證書(shū)庫(kù),添加為一個(gè)信任證書(shū)使用命令如下:

    ? ? ?keytool -import -v -file D:\home\mykey.cer -keystore D:\home\tomcat.keystore

    通過(guò)list命令查看服務(wù)器的證書(shū)庫(kù),可以看到兩個(gè)證書(shū),一個(gè)是服務(wù)器證書(shū),一個(gè)是受信任的客戶端證書(shū):

    keytool -list -keystore D:\home\tomcat.keystore (tomcat為你設(shè)置服務(wù)器端的證書(shū)名)。

  4. ?

    讓客戶端信任服務(wù)器證書(shū)

    由于是雙向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ū)名)。

    通過(guò)以上命令,服務(wù)器證書(shū)就被我們導(dǎo)出到“D:\home\tomcat.cer”文件了。雙擊tomcat.cer文件,按照提示安裝證書(shū),將證書(shū)填入到“受信任的根證書(shū)頒發(fā)機(jī)構(gòu)”。

  5. ?

    配置Tomcat服務(wù)器

    打開(kāi)Tomcat根目錄下的/conf/server.xml,找到Connector port="8443"配置段,修改為如下:

    ?

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

    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ù)端證書(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ū)密碼

  6. 6

    測(cè)試

    在瀏覽器中輸入:https://localhost:8443/,會(huì)彈出選擇客戶端證書(shū)界面,點(diǎn)擊“確定”,會(huì)進(jìn)入tomcat主頁(yè),地址欄后會(huì)有“鎖”圖標(biāo),表示本次會(huì)話已經(jīng)通過(guò)HTTPS雙向驗(yàn)證,接下來(lái)的會(huì)話過(guò)程中所傳輸?shù)男畔⒍家呀?jīng)過(guò)SSL信息加密。

https原理及tomcat配置https方法


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 新乡市| 克拉玛依市| 定日县| 遵化市| 二连浩特市| 自贡市| 花莲市| 凌海市| 历史| 嘉峪关市| 犍为县| 呼伦贝尔市| 望都县| 夏津县| 彩票| 崇义县| 新营市| 荔波县| 吴江市| 上思县| 邯郸县| 辽阳市| 北安市| 和林格尔县| 和硕县| 台东县| 陇川县| 磐石市| 循化| 秦安县| 礼泉县| 静海县| 白沙| 射洪县| 英吉沙县| 夹江县| 廊坊市| 道孚县| 绥化市| 深圳市| 涞水县|