注意??
https協(xié)議需要到ca申請(qǐng)證書,一般免費(fèi)證書很少,需要交費(fèi)。
http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議
http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443
HTTP的缺點(diǎn)
HTTP主要有這些不足:
通信使用明文,內(nèi)容可能被竊聽
不驗(yàn)證通信方身份,因此有可能遭遇偽裝
無法驗(yàn)證報(bào)文的完整性,所有有可能已篡改
HTTP + 加密 + 認(rèn)證 + 完整性保護(hù) = HTTPS
HTTPS是身披SSL外殼的HTTP
通常情況下HTTP是直接和TCP層進(jìn)行通信的。當(dāng)使用SSL(安全套階字)時(shí),則演變成HTTP先和SSL通信,SSL再和TCP通信的了。
加密技術(shù)
講解SSL前,科普一下加密方法,SSL采用的是一種叫做公開密鑰加密的加密處理方式
對(duì)稱加密
加密和解密用的一個(gè)密鑰的方式稱為對(duì)稱加密,也叫做共享密鑰加密
對(duì)稱加密在發(fā)送加密信息時(shí)也需要將密鑰發(fā)送給對(duì)方,但這樣可以被攻擊者截取,就不安全啦~
非對(duì)稱加密
非對(duì)稱加密又稱作公開密鑰加密,它很好的解決了對(duì)稱加密密鑰被截取的問題。
非對(duì)稱加密采用一對(duì)非對(duì)稱的密鑰,一把叫做私有密鑰,一把叫做共有密鑰。
使用非對(duì)稱加密,發(fā)送密文一方使用對(duì)方的共有密鑰進(jìn)行加密處理,對(duì)方收到加密信息后,再使用自己的私有密鑰進(jìn)行解密。
HTTPS采用混合加密機(jī)制
HTTPS采用對(duì)稱加密和非對(duì)稱加密所混合的加密機(jī)制。
若密鑰能安全交換,那么有可能僅考慮非對(duì)稱加密。
但是非對(duì)稱加密與對(duì)稱加密相比,處理速度相對(duì)較慢。
公開密鑰的認(rèn)證
使用數(shù)字證書認(rèn)證機(jī)構(gòu)和其頒布的公開密鑰證書進(jìn)行認(rèn)證。即讓第三方獨(dú)立機(jī)構(gòu)進(jìn)行驗(yàn)證。
私有密鑰是保存在服務(wù)器端的~
注意??:認(rèn)證是要錢的!!!
HTTPS安全通信機(jī)制
下圖是完整的HTTPS的通信過程
為什么HTTPS不是那么普及
1.加密通信與純文本通信相比,消耗更多的CPU和內(nèi)存資源
2.購(gòu)買證書是要錢的!
3.少許對(duì)客戶端有要求的情況下,會(huì)要求客戶端也必須有一個(gè)證書.
這里客戶端證書,其實(shí)就類似表示個(gè)人信息的時(shí)候,除了用戶名/密碼, 還有一個(gè)CA 認(rèn)證過的身份. 應(yīng)為個(gè)人證書一般來說上別人無法模擬的,所有這樣能夠更深的確認(rèn)自己的身份
目前少數(shù)個(gè)人銀行的專業(yè)版是這種做法,具體證書可能是拿U盤作為一個(gè)備份的載體
HTTPS 一定是繁瑣的
1.本來簡(jiǎn)單的http協(xié)議,一個(gè)get一個(gè)response. 由于https 要還密鑰和確認(rèn)加密算法的需要.單握手就需要6/7 個(gè)往返,任何應(yīng)用中,過多的round trip 肯定影響性能.
2.接下來才是具體的http協(xié)議,每一次響應(yīng)或者請(qǐng)求, 都要求客戶端和服務(wù)端對(duì)會(huì)話的內(nèi)容做加密/解密,盡管對(duì)稱加密/解密效率比較高,可是仍然要消耗過多的CPU,為此有專門的SSL 芯片. 如果CPU 信能比較低的話,肯定會(huì)降低性能,從而不能serve 更多的請(qǐng)求,加密后數(shù)據(jù)量的影響. 所以,才會(huì)出現(xiàn)那么多的安全認(rèn)證提示