為什么要有HTTPS 在HTTPS出現(xiàn)之前,所有請(qǐng)求都是以明文方式送出的,那么如果有人在傳輸途中偷聽(tīng)或者抓包的話,你的所有通信內(nèi)容都會(huì)泄漏。比較安全的方法是將通信內(nèi)容加密在發(fā)送給對(duì)方。加密方法有兩種,對(duì)稱加密和非對(duì)稱加密。 對(duì)稱加密 對(duì)稱加密指的是加密和解密用同一個(gè)密鑰。但是在通信之前,客戶端和服務(wù)端是不會(huì)有這樣同一把密鑰的。需要其中一方將密鑰發(fā)送給對(duì)方。在整個(gè)傳輸過(guò)程沒(méi)有任何驗(yàn)證操作,所以黑客也可以截取到這把密鑰從而破譯出加密的內(nèi)容。所以純對(duì)稱加密是不安全的。 非對(duì)稱加密 非對(duì)稱加密指的是加密和解密用不同的密鑰。可以是用私鑰加密,公鑰解密,也可以是用公鑰加密,私鑰解密。但是會(huì)有這種情況。服務(wù)端擁有私鑰和公鑰,將公鑰發(fā)給客戶端。既然客戶端可以獲得公鑰,黑客也可以獲得公鑰。那么服務(wù)端發(fā)送給客戶端的所有內(nèi)容黑客也是可以解讀的??蛻舳擞霉€加密發(fā)送給服務(wù)端不受影響,因?yàn)楹诳褪稚蠜](méi)有服務(wù)器的私鑰。所以純非對(duì)稱加密也是不安全的。 傳輸密鑰的過(guò)程 登場(chǎng)人物介紹 圖解傳輸密鑰的過(guò)程 HTTPS采用對(duì)稱加密來(lái)加密通信內(nèi)容,所用的密鑰稱為A。用非對(duì)稱加密來(lái)加密密鑰A再發(fā)送給對(duì)方(有點(diǎn)繞)。只要密鑰A不落入他人手中,那傳輸?shù)臄?shù)據(jù)就不會(huì)被別人破譯。 那么問(wèn)題來(lái)了,要如何安全的將這把密鑰送到對(duì)方手上呢? 我們來(lái)看密鑰的傳輸過(guò)程 為什么HTTPS是可靠的? HTTPS是可靠的,因?yàn)樗鉀Q了三個(gè)問(wèn)題。 加密通信,即使別人獲取到了信息也沒(méi)法復(fù)原成原來(lái)的信息。 防止中間人攻擊。黑客沒(méi)法冒充服務(wù)端。因?yàn)樵诘?步,服務(wù)端給了客戶端一個(gè)CA證書。
CA證書的公信力。CA證書需要由公司或者個(gè)人發(fā)出申請(qǐng),再通過(guò)郵箱驗(yàn)證等方法驗(yàn)證域名存在。避免了黑客冒充網(wǎng)站獲取證書的可能。 在技術(shù)層面上,CA機(jī)構(gòu)的公鑰是寫在操作系統(tǒng)或者瀏覽器里的。只有用CA機(jī)構(gòu)的私鑰加密的內(nèi)容才能完成解密。確保了證書的確是CA機(jī)構(gòu)發(fā)行的。 密鑰的作用 最后讓我們?cè)賮?lái)回顧一下每一把密鑰的作用 作者:站在書脊之上 |
|