HTTPS Hyper Text Transfer Protocol Secure 超文本傳輸安全協(xié)議
默認(rèn)端口443
SSL/TLS Transfer Layer Security 安全套接字
OpenSSL
TLS協(xié)議的開(kāi)源實(shí)現(xiàn)

常用命令:
生成私鑰:openssl genrsa -out mj.key
生成公鑰:openssl rsa -in mj.key -pubout -out mj.pem
可以使用OpenSSL構(gòu)建一套屬于自己的CA,自己給自己頒發(fā)證書(shū),稱(chēng)為“自簽名證書(shū)”
TLS1.2連接過(guò)程

1.client hello C->S
TLS版本號(hào)
支持的加密組件列表(所使用的加密算法和密鑰長(zhǎng)度等)
一個(gè)隨機(jī)數(shù)
2.Server Hello S->C
TLS版本號(hào)
選擇的加密組件(選中的加密算法)
一個(gè)隨機(jī)數(shù)
3.Certificate S->C
服務(wù)器的公鑰證書(shū)(被CA簽名過(guò))
4.Server Key Exchange S->C
用以實(shí)現(xiàn)ECDHE算法中的一個(gè)參數(shù)(Server Params)
ECDHE是一種密鑰交換算法
Server Params經(jīng)過(guò)服務(wù)器私鑰簽名
5.Server Hello Done S->C
告知客戶端:協(xié)商部分結(jié)束
目前為止,客戶端和服務(wù)器之間通過(guò)明文共享了
Client Random、Server Random、Server Params
而且,客戶端也已經(jīng)拿到了服務(wù)器的公鑰證書(shū),接下來(lái),客戶端會(huì)驗(yàn)證證書(shū)的真實(shí)有效性
6.Client Key Exchange C->S
用以實(shí)現(xiàn)ECDHE算法中的另一個(gè)參數(shù)(Server Params)
目前為止,客戶端和服務(wù)器都擁有了ECDHE算法需要的2個(gè)參數(shù):Server Params、Client Params
客戶端、服務(wù)器都可以
使用ECDHE算法根據(jù)Server Params、Client Params計(jì)算出一個(gè)新的隨機(jī)密鑰串:Pre-master secret
然后結(jié)合Client Random、Server Random、Pre-master secret生成一個(gè)主密鑰
最后利用主密鑰衍生出其他密鑰:客戶端發(fā)送用的會(huì)話密鑰、服務(wù)器發(fā)送用的會(huì)話密鑰等
7.Change Cipher Spec C->S
告知服務(wù)器,之后的通信采用計(jì)算出來(lái)的會(huì)話密鑰加密
8.Finish C->S
包含連接至今全部報(bào)文的整體校驗(yàn)值(摘要),加密之后發(fā)送給服務(wù)器
這次握手協(xié)商是否成功,要以服務(wù)器是否能夠正確解密該報(bào)文作為判定標(biāo)準(zhǔn)
9.Change Cipher Spec S->C
10.Finish
到此為止,客戶端服務(wù)器都驗(yàn)證加密解密沒(méi)問(wèn)題,握手正式結(jié)束
后面開(kāi)始傳輸加密的HTTP請(qǐng)求和響應(yīng)
TLS通道建立