SSL協(xié)議的通俗理解
SSL協(xié)議加密方式
因?yàn)閷?duì)稱加密和非對(duì)稱加密都有對(duì)應(yīng)存在的優(yōu)缺點(diǎn)
對(duì)稱加密:需要把密鑰在網(wǎng)絡(luò)上傳輸猿推,這樣的方式并不安全蹬叭,但是同樣速度快秽五,可加密內(nèi)容較大坦喘,適合用來加密會(huì)話過程中的消息
非對(duì)稱加密:公鑰對(duì)所有人公開瓣铣,私鑰只是自己保留梦碗,不會(huì)在網(wǎng)絡(luò)上傳輸蓖救,能提供更好的身份認(rèn)證技術(shù)但是加密速度較慢斩例,SSL用來加密對(duì)稱加密的密鑰
基于以上的問題巨柒,SSL在進(jìn)行認(rèn)證的時(shí)候使用了在認(rèn)證階段使用非對(duì)稱加密洋满,而在鏈路建立好之后,傳輸階段使用對(duì)稱加密的方式驻民,既兼顧了安全又提高了效率
通俗理解SSL單向認(rèn)證
開著的箱子指代:非對(duì)稱加密中的公鑰
箱子的鑰匙指代:非對(duì)稱加密中的私鑰
串門的鑰匙指代:對(duì)稱加密中的密鑰
第一步回还、瀏覽器發(fā)起訪問請(qǐng)求
第二步、服務(wù)端將證書蝗柔,公鑰信息等發(fā)給瀏覽器
第三步槽畔、瀏覽器和CA驗(yàn)證證書是否可信
第四步、瀏覽器向服務(wù)端約定對(duì)稱加密方案
第五步坏快、服務(wù)端回復(fù)確認(rèn)加密方案
第六步莽鸿、客戶端用服務(wù)端的公鑰加密對(duì)稱密鑰信息
第七步祥得、客戶端將信息發(fā)送給服務(wù)端
第八步蒋得、服務(wù)端用私鑰解密信息,得到對(duì)稱密鑰
第九步、基于對(duì)稱加密進(jìn)行通信
以下用專業(yè)術(shù)語講解一下(轉(zhuǎn))
SSL單向認(rèn)證
Https在建立Socket連接之前窍侧,需要進(jìn)行握手,具體過程如下:
客戶端向服務(wù)端發(fā)送SSL協(xié)議版本號(hào)伟件、加密算法種類斧账、隨機(jī)數(shù)等信息。
服務(wù)端給客戶端返回SSL協(xié)議版本號(hào)咧织、加密算法種類嗓袱、隨機(jī)數(shù)等信息习绢,同時(shí)也返回服務(wù)器端的證書,即公鑰證書
客戶端使用服務(wù)端返回的信息驗(yàn)證服務(wù)器的合法性,包括:
證書是否過期
發(fā)型服務(wù)器證書的CA是否可靠
返回的公鑰是否能正確解開返回證書中的數(shù)字簽名
服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配
驗(yàn)證通過后逼肯,將繼續(xù)進(jìn)行通信膛锭,否則花颗,終止通信
客戶端向服務(wù)端發(fā)送自己所能支持的對(duì)稱加密方案敌蜂,供服務(wù)器端進(jìn)行選擇
服務(wù)器端在客戶端提供的加密方案中選擇加密程度最高的加密方式缺菌。
服務(wù)器將選擇好的加密方案通過明文方式返回給客戶端
客戶端接收到服務(wù)端返回的加密方式后,使用該加密方式生成產(chǎn)生隨機(jī)碼搜锰,用作通信過程中對(duì)稱加密的密鑰,使用服務(wù)端返回的公鑰進(jìn)行加密蛋叼,將加密后的隨機(jī)碼發(fā)送至服務(wù)器
服務(wù)器收到客戶端返回的加密信息后,使用自己的私鑰進(jìn)行解密狈涮,獲取對(duì)稱加密密鑰。 在接下來的會(huì)話中歌馍,服務(wù)器和客戶端將會(huì)使用該密碼進(jìn)行對(duì)稱加密,保證通信過程中信息的安全松却。
SSL雙向認(rèn)證
雙向認(rèn)證和單向認(rèn)證原理基本差不多,只是除了客戶端需要認(rèn)證服務(wù)端以外晓锻,增加了服務(wù)端對(duì)客戶端的認(rèn)證,具體過程如下:
客戶端向服務(wù)端發(fā)送SSL協(xié)議版本號(hào)带射、加密算法種類、隨機(jī)數(shù)等信息窟社。
服務(wù)端給客戶端返回SSL協(xié)議版本號(hào)绪钥、加密算法種類灿里、隨機(jī)數(shù)等信息程腹,同時(shí)也返回服務(wù)器端的證書匣吊,即公鑰證書
客戶端使用服務(wù)端返回的信息驗(yàn)證服務(wù)器的合法性,包括:
證書是否過期
發(fā)型服務(wù)器證書的CA是否可靠
返回的公鑰是否能正確解開返回證書中的數(shù)字簽名
服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配
驗(yàn)證通過后色鸳,將繼續(xù)進(jìn)行通信,否則命雀,終止通信
服務(wù)端要求客戶端發(fā)送客戶端的證書,客戶端會(huì)將自己的證書發(fā)送至服務(wù)端
驗(yàn)證客戶端的證書吏砂,通過驗(yàn)證后,會(huì)獲得客戶端的公鑰
客戶端向服務(wù)端發(fā)送自己所能支持的對(duì)稱加密方案狐血,供服務(wù)器端進(jìn)行選擇
服務(wù)器端在客戶端提供的加密方案中選擇加密程度最高的加密方式
將加密方案通過使用之前獲取到的公鑰進(jìn)行加密,返回給客戶端
客戶端收到服務(wù)端返回的加密方案密文后匈织,使用自己的私鑰進(jìn)行解密,獲取具體加密方式缀匕,而后纳决,產(chǎn)生該加密方式的隨機(jī)碼弦追,用作加密過程中的密鑰岳链,使用之前從服務(wù)端證書中獲取到的公鑰進(jìn)行加密后劲件,發(fā)送給服務(wù)端
服務(wù)端收到客戶端發(fā)送的消息后,使用自己的私鑰進(jìn)行解密零远,獲取對(duì)稱加密的密鑰,在接下來的會(huì)話中牵辣,服務(wù)器和客戶端將會(huì)使用該密碼進(jìn)行對(duì)稱加密摔癣,保證通信過程中信息的安全纬向。