1.為什么要有HTTPS
2.HTTPS的工作原理
3.密碼學(xué)
4.HTTPS的優(yōu)缺點
5.在iOS中使用HTTPS
為什么要有HTTPS
HTTP 是一種超文本傳輸協(xié)議,它是無狀態(tài)的、簡單快速的桶蛔、基于 TCP 的可靠傳輸協(xié)議缤沦。
- 明文通信艺玲,內(nèi)容可以直接被竊聽
- 無法驗證報文的完整性揭芍,可能被篡改
- 通信方身份不驗證幻件,可能遇到假的客戶端或服務(wù)器
HTTPS協(xié)議基于TLS協(xié)議,HTTPS能夠有效保障數(shù)據(jù)機密性與完整性会前,并且能夠完成用戶端與客戶端的雙重驗證好乐。
https://juejin.im/entry/571d870a8ac24700646ee43b
https://juejin.im/entry/575ab9b36be3ff0069492bc6
HTTPS的工作原理
1.ClientHello
客戶端發(fā)起請求,以明文傳輸請求信息,包含版本信息,加密套件候選列表,壓縮算法候選列表,隨機數(shù)random_C,擴展字段等信息
2.ServerHello - ServerHelloDone
4個過程(單條發(fā)送,有的是合并發(fā)送)服務(wù)器返回協(xié)商的信息結(jié)果,選擇使用的協(xié)議版本,選擇的加密套件,選擇的壓縮的算法,隨機數(shù)random_S等(隨機數(shù)用于后續(xù)的協(xié)商密鑰). 服務(wù)器也會配置并返回對應(yīng)的證書鏈Certificate,用于身份驗證與密鑰交換,然后會發(fā)送ServerHelloDone信息用于通知服務(wù)器信息發(fā)送結(jié)束.
3.證書校驗
客戶端對服務(wù)器返回的證書進行校驗,只有證書驗證通過后,才能進行后續(xù)的通信
4.ClientKeyExchange-Finished
服務(wù)器證書驗證合法后,客戶端計算產(chǎn)生隨機數(shù)Pre-master,并用server證書中的公鑰加密,發(fā)送給服務(wù)器,同時客戶端會根據(jù)已有的三個隨機數(shù)生成協(xié)商密鑰.客戶端會通知服務(wù)器后續(xù)的通信都采用協(xié)商的通信密鑰和加密算法進行加密通信,然后發(fā)送Finished消息用于通知服務(wù)器信息發(fā)送結(jié)束.
5.服務(wù)器端生成協(xié)商密鑰
服務(wù)器也會根據(jù)已有的三個隨機數(shù)使用相應(yīng)的算法生成協(xié)商密鑰,會通知客戶端后續(xù)的通信都采用協(xié)商的通信密鑰和加密算法進行通信,然后發(fā)送Finished消息用于通知服務(wù)器信息發(fā)送結(jié)束.
6.握手結(jié)束
在握手階段結(jié)束后,客戶端和服務(wù)器數(shù)據(jù)傳輸開始使用協(xié)商密鑰進行加密通信.