a) 區別
i. http連接簡單無狀態,https協議是由ssl和http協議構建的可進行加密傳輸身份認證、報文的完整性的網絡協議,比http協議安全,採用混合加密的算法
ii. https協議需要到ca申請證書,一般免費證書較少,需要一定的費用
iii. http協議超文本傳輸是明文傳輸,https是具有ssl加密傳輸協議
iv. http使用80端口 https使用443端口
v. 在OSI網絡模型中,http在應用層,https在傳輸層
vi. http在HTTP協議在TCP之上所有的傳輸內容都是明文,客戶端和服務器端都無法驗證對方的身份
vii. https是HTTP在SSL/LS之上,SSL/TLS運行在TCP之上,所有的傳輸內容都得經過加密,加密採用對稱加密,但對稱加密的密鑰用服務器方的證書進行了非對稱加密,此外客戶端可以驗證服務器的身份
b) 爲什麼用Https來進行通信?https在安全上做了哪些事情?
i. http的缺點:
- 儘管http已經具有相當優秀的方面,但是其依然還有很多不足
- 通信內容爲明文,既爲未加密,內容可能被監聽
- 竊聽可能在互聯網通信的各個環節
- 通信雙方的身份都沒有進行驗證,可能出現僞裝身份的情況
- 所有人都可以對服務器發起請求-----對服務器來說無法確定自己返回的報文是否真正被客戶端接受,對客戶端來說無法確定這臺web服務器是真的服務器,可能通過了僞裝--------服務器全盤接收的缺點也有可能被利用進行dos攻擊
- 接受的報文完整性無法確定,可能中途被更改 雖然Http提供了報文完整性的方法(MD5、SHA-1)但是也無法完全保證報文的完整性,因爲MD5本身也有可能被攻擊者改寫 在SSL中,提供了認證和加密處理等功能,通過配合SSL可以達到保證報文完整性目的
ii. 關於Https - 鑑於http的缺點,https在http的基礎上增加了
a) 通信加密
b) 證書認證
c) 完整性保護 - SSL是如何配合HTTP來達到安全通信的?
a) HTTP的通信接口部分採用了SSL協議來實現
b) SSL是獨立於HTTP協議的,同樣也可以用於其他協議 - 普通的加密方式
a) 共享密鑰加密 客戶端和服務器端都擁有一把相同的鑰匙,對報文的加密解密都用這把鑰匙,在通信中傳遞給對方,所以一旦在通信過程中這把密鑰被攻擊者獲取,報文便失去了意義
b) 公開密鑰加密—共享密鑰有一個問題:如何安全的把密鑰傳輸給對方,公開密鑰採用的是非對稱的密鑰,一把共有密鑰,一把私有密鑰,發送方使用共有密鑰對報文進行加密,接收方使用私有密鑰進行解密 - HTTPS採用的混合加密機制
a) 由於共有密鑰的機制相對複雜,導致處理速度特別慢,
b) 只要解決了共享密鑰的安全問題就能很好的傳輸
c) Https首先通過公開密鑰對享密鑰進行加密,當共享密鑰安全傳輸給對方,雙方則使用共享密鑰方式來加密報文 - https的握手機制
a) 向服務器發送請求
b) 取出共有密鑰及證書發送給服務端
c) 客戶端判斷共有私鑰是否有效,無效則顯示警告,有效則生成一個隨機樹數串,並以此生成客戶端的共享密鑰
d) 用上述得到的共有密鑰對該隨機數串進行加密,發送到服務器
e) 服務器得到加密報文,用私有密鑰解密報文,得到隨機數串,並以此生成服務器端的共享密鑰,此時客戶端和服務器端擁有相同的共享密鑰,可以用該共享密鑰進行安全通信
f) 服務器對響應進行加密,客戶端對報文進行解密 - 選擇http還是https來搭建服務器
a) SSL會使通信的速率降低 整體通信信息量增加
b)
c) 加密過程消耗資源 每個報文都需要進行加密解密的運算處理,比起http會消耗更多的服務器資源
d) 證書開銷