HTTPS好用不難

HTTPS是非常基礎和有效的安全方式,可以較好的防御中間人攻擊。

網上關于HTTPS的詳細介紹已經非常多了,這里只備忘一些有趣的細節(jié),快速解惑之用。

原理

HTTP在傳輸過程中是不加密的,因此傳輸過程中非常容易受到嗅探和劫持。

HTTPS在客戶端(通常是瀏覽器)和服務端增加了加解密環(huán)節(jié),從而保證傳輸過程數據是加密的。

安全備忘

1、HTTPS支持單向認證和雙向認證。

? ? ?單向認證是主要方式,即客戶端驗證服務端證書有效性。

? ? ?雙向認證主要應用于企業(yè)級應用,這種情況下,服務端也會驗證客戶端證書,因此意味著雙方是互相提前知曉的,因此也只有在企業(yè)級場景下才可以達成。

2、HTTPS單向認證傳輸過程依然可以嗅探和劫持。

? ? ?單向認證情況下,傳輸過程依然可以實現嗅探和劫持。

? ? ?首先服務端并不驗證客戶端有效性,而客戶端只驗證服務端證書的有效性,因此只要中間傳輸過程通過代理方式成功欺騙客戶端即可。

? ? ?有兩種情況:

? ? ?1)中間人使用虛假證書。此時一般客戶端瀏覽器雖然驗證發(fā)現證書存在問題,只會提示不安全,用戶依然可以手動同意訪問。很多普通用戶安全知識缺乏,常常會忽略瀏覽器的不安全提示。

? ? 2)瀏覽器是通過驗證證書根簽名以及域名、IP等附屬信息一致性來驗證瀏覽器證書。因此有些中間攻擊會去正規(guī)根證書中心簽名,從而合法有效的證書。這時候瀏覽器自然不會發(fā)現異常,用戶也就無從知曉。正是因為這個問題,有些根證書中心因為濫發(fā)簽名的問題,被Chrome、Firefox等瀏覽器不再信任。

3、HTTPS單向認證不保證服務端安全性

? ?服務端不驗證客戶端的有效性,因此服務端的安全性依然需要自行防護。

? ?有沒有HTTPS,服務端都需要防CSRF、防注入、防DDOS……

4、最好使用有效的根證書機構簽發(fā)的證書。

? ? 使用自簽名證書當然是可以的,缺點是需要客戶端導入根證書信息,從而認可服務端合法性。導入證書的事情在2C場景下基本無法達成。

? ? 由于Chrome、Firefox、IE等常見里瀏覽器出廠時,已經自帶大量公認的根證書機構證書信息。 因此還是購買有效的根證書機構簽發(fā)的證書吧。不貴。

實現備忘

1、HTTPS默認是443端口

? ? HTTPS是一個應用層協議,和HTTP同一等級,因此它有默認端口443。

? ? 所以,不要想當然以為https會訪問80端口。

2、https訪問速度慢于http

? ?由于存在事前協商、加密等工作,因此https的訪問速度是要慢于http。這也是安全性帶來的性能消耗。

? ?當然,在這個時代,這點速度消耗基本可以忽略。

3、http 可以通過反向代理的方式快速升級到https。

? ? ?目前apache、nginx都支持反向代理的方式將http網站升級到https。

? ? ?原理很簡單,apache或者nginx完成配置后,他們作為代理和客戶端完成加密通信,把解密后的內容和原始http通信。

? ? ?這種方式最大的好處是,原本的http網站不需要任何修改!

4、跨域情況下,https不能支持access-control-allow-origin:*

? ? ?http情況下,cors可以配置為access-control-allow-origin:*,一通百通。

? ? ?https情況下,不能使用通配符,需要指定具體的信息。當然,可以在反向代理中直接替換為請求頭的Origin。

5、fiefox對雙向認證支持不好。

? ?實測中發(fā)現,chrome可以比較好的支持雙向認證,firefox則存在一定兼容性問題。

尾聲

HTTPS經過多年推廣,終于已經比較成熟。證書機構、瀏覽器、web服務器都有相對比較完善的支持,成本也不高。

地址欄的小鎖對用戶來說,是巨大的安全感。建議網站可以考慮升級一下,大大提升用戶信任。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容