概念
- http協(xié)議的全稱是超文本傳輸協(xié)議锡足,是一個基于請求和響應(yīng)的、無狀態(tài)的壳坪、應(yīng)用層的協(xié)議舶得,常基于TCP/IP協(xié)議傳輸數(shù)據(jù)爽蝴。
- https協(xié)議是加上SSL鑒權(quán)的http沐批。https是一種通過計算機網(wǎng)絡(luò)進行安全通信的傳輸協(xié)議,經(jīng)由http進行通信蝎亚,利用SSL/TLS建立信道九孩,傳輸加密的數(shù)據(jù)包。https使用的主要目的是提供對請求方和響應(yīng)方的身份認證发框,同時保護傳輸?shù)臄?shù)據(jù)的隱私與完整性躺彬。
流程
- 客戶端向服務(wù)器發(fā)送https請求,然后連接到服務(wù)器的443接口梅惯,發(fā)送的信息主要是隨機值1和客戶端支持的加密算法宪拥。
- 服務(wù)器收到請求之后給予客戶端響應(yīng)握手信息,包括隨機值2和匹配好的協(xié)商加密算法铣减,這個算法一定是客戶端發(fā)送給服務(wù)器的加密算法的子集江解。
- 服務(wù)器向客戶端發(fā)送第二個響應(yīng)報文,即數(shù)字證書徙歼。https協(xié)議要求服務(wù)端必須有一套https數(shù)字證書犁河,這個證書可以自己申請,也可以向組織請求魄梯。區(qū)別就是自己頒發(fā)的證書需要客戶端驗證通過桨螺,才可以繼續(xù)訪問。這套證書其實就是一對公鑰和私鑰酿秸。傳輸?shù)臄?shù)字證書其實就是公鑰灭翔,包含證書的頒發(fā)機構(gòu)、過期時間辣苏、服務(wù)器的公鑰肝箱、CA的簽名、服務(wù)端的域名信息等內(nèi)容稀蟋。
- 客戶端收到服務(wù)器的第二個響應(yīng)報文之后煌张,通過TLS完成證書解析。首先要驗證公鑰是否有效退客。如果沒有問題骏融,那么就生成一個預(yù)主秘鑰
- 客戶端在認證證書通過之后链嘀,通過隨機值1、隨機值2和預(yù)主秘鑰組裝會話秘鑰档玻,通過證書的公鑰加密會話秘鑰怀泊。
- 傳輸加密信息,即加密后的會話秘鑰误趴,目的是讓服務(wù)端使用秘鑰解密得到隨機值1霹琼、隨機值2和預(yù)主秘鑰。
- 服務(wù)端使用木遙解密凉当,得到隨機值1枣申、隨機值2和預(yù)主秘鑰,然后組裝和客戶端相同的會話秘鑰
- 客戶端通過會話秘鑰發(fā)送一條消息給服務(wù)端纤怒,主要驗證服務(wù)端是否可以正常接收客戶端加密的請求。
- 服務(wù)端也會通過會話秘鑰加密一條消息回傳到客戶端天通,如果客戶端能夠正常接受泊窘,表明SSL層連接完成了。
問題
- 無法保證保證服務(wù)端下發(fā)給客戶端的公鑰是真正的公鑰像寒,而不是中間人偽造的公鑰烘豹?
- 無法保證證書被安全傳輸
解決方法
- 使用數(shù)字證書。數(shù)字證書內(nèi)容包含了加密后的公鑰诺祸、權(quán)威機構(gòu)的信息携悯、服務(wù)器域名以及景觀CA私鑰簽名之后的證書內(nèi)容(經(jīng)過先通過哈希函數(shù)計算得到證書數(shù)字摘要,然后通過權(quán)威機構(gòu)私鑰加密數(shù)字摘要得到數(shù)字簽名)筷笨、簽名計算方法以及證書對應(yīng)的域名憔鬼。
- 第三方攻擊者無法偽裝服務(wù)端證書,因為第三方攻擊者去CA那邊尋求證人的時候CA會要求其提供域名的whois信息胃夏、域名管理郵箱等證明身份的信息轴或,而第三方攻擊者是無法得到這些信息的。
總結(jié)
- 安全性方面仰禀,https協(xié)議的加密范圍比較有限照雁,在黑客攻擊、拒絕服務(wù)攻擊答恶、服務(wù)器劫持等方面幾乎起不到什么作用饺蚊。SSL證書的信用鏈體系并不完整,特別是在某些國家可以控制CA證書的情況下悬嗓,中間人攻擊一樣可行污呼。
- 成本方面,首先https證書需要購買包竹,其次https連接緩存不如http高效曙求,導(dǎo)致流量成本高。第三https連接服務(wù)端占用的資源比http高很多,所以服務(wù)器需要投入更高的成本悟狱。第四静浴,https協(xié)議握手階段比較費時,對網(wǎng)站的響應(yīng)速度有影響挤渐。