国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看
打開APP
未登錄
開通VIP,暢享免費(fèi)電子書等14項超值服
開通VIP
首頁
好書
留言交流
下載APP
聯(lián)系客服
SSL原理和實現(xiàn)
moonboat
>《security》
2010.10.19
關(guān)注
SSL原理和實現(xiàn)
要想保證網(wǎng)絡(luò)通信的安全,我們第一反應(yīng)就是給傳輸?shù)臄?shù)據(jù)加密,這也是現(xiàn)行安全傳輸通用的模式。但在傳統(tǒng)加密方式(單密鑰,對稱加密)下,密鑰不可避免的要被傳送于網(wǎng)絡(luò)節(jié)點(diǎn)之間,(除非是寫死到各個節(jié)點(diǎn)中,不過那樣就沒有任何靈活性和普適性),在一定強(qiáng)度的網(wǎng)絡(luò)攻擊下,這種加密方式是很脆弱的。
SSL
的出現(xiàn)解決了這個難題,理解
SSL
的關(guān)鍵是理解非對稱加密的含義。
在對稱加密的情況下,源數(shù)據(jù)A,通過使用密鑰B,加密成為密文C。任何人,只要獲得了密鑰B,就能夠?qū)孬@的密文C解密,還原出源數(shù)據(jù)A。(依靠"算法安全"遠(yuǎn)不如依靠"密鑰安全");在非對稱加密中,出現(xiàn)了“密鑰對”的概念,即有一個公共密鑰(公鑰)和一個私有密鑰(私鑰),經(jīng)公鑰加密的密文只能由私鑰解密,反過來,經(jīng)私鑰加密的密文只能由公鑰解密。這是個重要的特性(數(shù)學(xué)原理可參考RSA算法),下面的模擬https通信流程說明了這一特性的重要。
1,客戶端向服務(wù)端發(fā)出請求,服務(wù)端將公鑰(以及服務(wù)端證書)響應(yīng)給客戶端;
2,客戶端接收到服務(wù)器端端公鑰與證書,驗證證書是否在信任域內(nèi),不信任則結(jié)束通信,信任則使用服務(wù)端傳過來的公鑰生成一個“預(yù)備主密碼”,返回給服務(wù)端。
3,服務(wù)端接收客戶端傳過來的“預(yù)備主密碼”密文,使用私鑰解密。非對稱加密的安全性也就在于此了,第三方無法獲取到“預(yù)備主密碼”的明文,因為除了服務(wù)端,其他任何人是沒有私鑰的。
4,雙方使用“預(yù)備主密碼”生成用于會話的“主密碼”。確認(rèn)后,結(jié)束本次
SSL
握手,停止使用非對稱加密。
5,雙方使用“主密碼”對稱加密傳輸數(shù)據(jù),直到本次會話結(jié)束。
總結(jié)整個流程:先采用非對稱加密模式,保證“主密碼”只被通信雙方獲知,而后使用傳統(tǒng)的對稱加密方式通信,這樣,保證了密鑰安全(即“主密碼”)就等于保證了數(shù)據(jù)安全。之所以建立安全連接后,轉(zhuǎn)而使用對稱加密,是因為非對稱加密的運(yùn)算量很大,用于“常態(tài)”的數(shù)據(jù)通信十分低效。
以上描述的僅是
SSL
協(xié)議中加密通信的原理,沒有涉及到證書驗證,以及客戶端,服務(wù)端模式。
實現(xiàn):
JDK里面自帶了一個密鑰生成工具keytool,可以通過它生成
SSL
通信需要的密鑰對,或者生成自簽名的證書。所有密鑰對或者簽名證書都是存放在“keystore”密鑰倉庫中,由它來管理。
下面結(jié)合具體例子說明:(
java
WEB容器:tomcat 5.0)
1,生成服務(wù)端密鑰倉庫,
keytool -genkey -alias svrkey -keyalg RSA -keystore d:\svr.jks -validity 365
"alias"是生成的密鑰別名,密鑰的導(dǎo)入導(dǎo)出都需要由別名來定位。
"keystore"生成的密鑰倉庫
"validity"生成密鑰倉庫的有效期(天)
隨后會要求輸入密鑰倉庫入口密碼,比如: lostsky_11
輸完密碼后,接著會要求一系列的輸入,無非是單位,所在地區(qū)之類的信息,
但是第一項很重要!為輸入服務(wù)端域名或IP,如: 192.168.1.3或www.591pic.com
必須與服務(wù)器域名或IP相同,否則
SSL
連接無法建立(這也是
SSL
通信驗證的一部分)
2,在tomcat_home/conf/server.xml中配置:
找到
ssl
通信配置那一段,加入:
keystoreFile="d:\svr.jks" keystorePass="lostsky_11"
服務(wù)器啟動時會從中尋找用于建立
ssl
連接的密鑰
3,導(dǎo)出服務(wù)端證書
keytool -export -alias svrkey -file d:\svr.cer -keystore d:\svr.jks
"alias"為想導(dǎo)出的密鑰的別名,"file"為導(dǎo)出的證書,"keystore"為存儲著導(dǎo)出密鑰的倉庫
4,生成客戶端密鑰倉庫
keytool -genkey -alias clientkey -keyalg RSA -keystore d:\client.jks
會要求輸入倉庫密碼:如:midsky
5,將服務(wù)端證書導(dǎo)入到客戶端密鑰倉庫
keytool -import -file d:\svr.cer -keystore d:\client.jks
會要求輸入客戶端密鑰倉庫的密碼:如上是:midsky
這樣服務(wù)端的密鑰倉庫就在tomcat部署完畢了,
6,在客戶端,每次訪問服務(wù)端之前,加入
"System.setProperty("javax.net.
ssl
.trustStore","d:\\client.jks");
System.setProperty("javax.net.
ssl
.trustStorePassword","midsky"); "
就把服務(wù)端證書添加到了客戶端的信任域中,能夠完成
ssl
通信。
注:
ssl
通信主要驗證三個方面:
a, 證書是否可信(第6步)
b, 證書是否過期(第1步:validity)
c, 證書地址是否和當(dāng)前訪問地址符合(第1步)
客戶端添加信任域還有編程的動態(tài)方法,但是那樣會降低通信的安全性,對于證書相對固定的服務(wù),不建議使用。
以上是客戶端對于服務(wù)端的驗證,這也是
SSL
默認(rèn)的實現(xiàn)方式。在這種方式下,每次通信時,發(fā)起請求方(如PC中的BROWSER)都會驗證響應(yīng)方(如某個WEB服務(wù)端)的證書是否在己方信任域中,對方的證書是否過期,對方的域名或IP,是否與信任域中證書記載的一致;不符合其中任何一項,通信都會被拒絕。但反過來,響應(yīng)方是不對請求方做任何驗證的。所以有些需要雙向驗證的服務(wù)(比如某些服務(wù)只能對特定的擁有證書的用戶開放),就需要添加客戶端證書,由服務(wù)端來驗證了,原理和實現(xiàn)與默認(rèn)模式類似。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報
。
打開APP,閱讀全文并永久保存
查看更多類似文章
猜你喜歡
類似文章
Java SSL生成客戶端和服務(wù)端crt文件
Tomcat-ssl
java使用https配置以及瀏覽器導(dǎo)入自己生成的證書
Tomcat配置SSL
webservice與ssl傳輸
配置Tomcat+SSL in Win32的問題
更多類似文章 >>
生活服務(wù)
首頁
萬象
文化
人生
生活
健康
教育
職場
理財
娛樂
藝術(shù)
上網(wǎng)
留言交流
回頂部
聯(lián)系我們
分享
收藏
點(diǎn)擊這里,查看已保存的文章
導(dǎo)長圖
關(guān)注
一鍵復(fù)制
下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!
聯(lián)系客服
微信登錄中...
請勿關(guān)閉此頁面
先別劃走!
送你5元優(yōu)惠券,購買VIP限時立減!
5
元
優(yōu)惠券
優(yōu)惠券還有
10:00
過期
馬上使用
×