HTTPS
1、超文本傳輸安全協(xié)議 secure
2、https默認(rèn)端口號(hào)是 443 http默認(rèn)是80端口
SSL/TLS
1、https是在http基礎(chǔ)上使用了SSL/TLS來(lái)加密保溫,對(duì)竊聽(tīng)和中間人提供合理的防護(hù)
2、SSL/TLS也可以使用在其他協(xié)議上
3、SSL[Secure Sokets Layer 安全套接層]和TLS【Tsnsport Layer Security 傳輸層安全協(xié)議】
4、工作在哪一層?【應(yīng)用層和傳輸層中間握手層、記錄層,不是傳輸層】
OpenSSL
1、是SSL/TLS協(xié)議的開(kāi)源實(shí)現(xiàn),支持不同平臺(tái)Windows、Mac、Linux
2、常用名稱
生成私鑰:openssl genrsa -out mj.key
生成公鑰:openssl rsa -in mj.key -pubout -out mj.pem
3、可以使用OpenSSL構(gòu)建一套屬于自己的CA,自己給自己頒發(fā)證書(shū),稱為:自簽名證書(shū)
HTTPS的成本
1、證書(shū)的費(fèi)用
2、加解密計(jì)算
3、降低了訪問(wèn)速度
4、包含敏感數(shù)據(jù)的請(qǐng)求使用HTTPS,其他的保持使用HTTP
HTTPS的通信過(guò)程
- TCP的三次握手
- TLS的三次連接
- HTTP請(qǐng)求和響應(yīng)
TLS 1.2的連接
1、Client Hello
- TLS的版本號(hào)
- 支持的加密套件列表【加密算法及秘鑰長(zhǎng)度】
- 一個(gè)隨機(jī)數(shù)
2、Server Hello
- 服務(wù)器選擇一種加密條件
3、Certificate
- 服務(wù)器的公鑰證書(shū)
4、Server Key Exchange
- 用以實(shí)現(xiàn)ECDHE算法中的一個(gè)參數(shù)
- ECDHE秘鑰交換算法
- 為了防止偽造,也需要服務(wù)器進(jìn)行簽名
5、Server Hello Done
- Hello過(guò)程結(jié)束,告知客戶端:協(xié)商部分結(jié)束
- 客戶端和服務(wù)端之間通過(guò)明文共享了
Client Random/Server Random/Server Params - 客戶端拿到了服務(wù)器的公鑰證書(shū)、接下來(lái),客戶端會(huì)驗(yàn)證證書(shū)真實(shí)有效性
6、Client Key Exchange
- 用以實(shí)現(xiàn)ECDHE算法的另一個(gè)參數(shù)(Client Prams)
- 客戶端、服務(wù)器都擁有了2個(gè)參數(shù):Server Params、Client Params
- 客戶端、服務(wù)器都可以使用ECDHE算法
生成隨機(jī)秘鑰串
結(jié)合Client Random、Server Random、Pre-master Secret生成用以加密回話的會(huì)話秘鑰
7、Change Cipher Spec
- 告知服務(wù)器,之后的童話使用會(huì)話秘鑰進(jìn)行加密
8、Finished
- 包含連接至今全部報(bào)文的整體校驗(yàn)值【摘要指】,加密之后發(fā)送給服務(wù)器
- 這次握手協(xié)商是否成功,要以服務(wù)器是否能夠正確解密該報(bào)文作為判定標(biāo)準(zhǔn)
9、Change Cipher Sepc
10、Finished
- 到此為止,客戶端、服務(wù)器都驗(yàn)證加密解密沒(méi)問(wèn)題,開(kāi)始通信