HTTPS是非潮饬荩基礎(chǔ)和有效的安全方式盾沫,可以較好的防御中間人攻擊。
網(wǎng)上關(guān)于HTTPS的詳細(xì)介紹已經(jīng)非常多了殿漠,這里只備忘一些有趣的細(xì)節(jié)赴精,快速解惑之用。
原理
HTTP在傳輸過程中是不加密的绞幌,因此傳輸過程中非常容易受到嗅探和劫持蕾哟。
HTTPS在客戶端(通常是瀏覽器)和服務(wù)端增加了加解密環(huán)節(jié),從而保證傳輸過程數(shù)據(jù)是加密的莲蜘。
安全備忘
1谭确、HTTPS支持單向認(rèn)證和雙向認(rèn)證。
? ? ?單向認(rèn)證是主要方式票渠,即客戶端驗(yàn)證服務(wù)端證書有效性逐哈。
? ? ?雙向認(rèn)證主要應(yīng)用于企業(yè)級應(yīng)用,這種情況下问顷,服務(wù)端也會驗(yàn)證客戶端證書昂秃,因此意味著雙方是互相提前知曉的,因此也只有在企業(yè)級場景下才可以達(dá)成杜窄。
2肠骆、HTTPS單向認(rèn)證傳輸過程依然可以嗅探和劫持。
? ? ?單向認(rèn)證情況下塞耕,傳輸過程依然可以實(shí)現(xiàn)嗅探和劫持哗戈。
? ? ?首先服務(wù)端并不驗(yàn)證客戶端有效性,而客戶端只驗(yàn)證服務(wù)端證書的有效性荷科,因此只要中間傳輸過程通過代理方式成功欺騙客戶端即可。
? ? ?有兩種情況:
? ? ?1)中間人使用虛假證書纱注。此時一般客戶端瀏覽器雖然驗(yàn)證發(fā)現(xiàn)證書存在問題畏浆,只會提示不安全,用戶依然可以手動同意訪問狞贱。很多普通用戶安全知識缺乏刻获,常常會忽略瀏覽器的不安全提示。
? ? 2)瀏覽器是通過驗(yàn)證證書根簽名以及域名瞎嬉、IP等附屬信息一致性來驗(yàn)證瀏覽器證書蝎毡。因此有些中間攻擊會去正規(guī)根證書中心簽名,從而合法有效的證書氧枣。這時候?yàn)g覽器自然不會發(fā)現(xiàn)異常沐兵,用戶也就無從知曉。正是因?yàn)檫@個問題便监,有些根證書中心因?yàn)闉E發(fā)簽名的問題扎谎,被Chrome碳想、Firefox等瀏覽器不再信任。
3毁靶、HTTPS單向認(rèn)證不保證服務(wù)端安全性
? ?服務(wù)端不驗(yàn)證客戶端的有效性胧奔,因此服務(wù)端的安全性依然需要自行防護(hù)。
? ?有沒有HTTPS预吆,服務(wù)端都需要防CSRF龙填、防注入、防DDOS……
4拐叉、最好使用有效的根證書機(jī)構(gòu)簽發(fā)的證書岩遗。
? ? 使用自簽名證書當(dāng)然是可以的,缺點(diǎn)是需要客戶端導(dǎo)入根證書信息巷嚣,從而認(rèn)可服務(wù)端合法性喘先。導(dǎo)入證書的事情在2C場景下基本無法達(dá)成。
? ? 由于Chrome廷粒、Firefox窘拯、IE等常見里瀏覽器出廠時,已經(jīng)自帶大量公認(rèn)的根證書機(jī)構(gòu)證書信息坝茎。 因此還是購買有效的根證書機(jī)構(gòu)簽發(fā)的證書吧涤姊。不貴。
實(shí)現(xiàn)備忘
1嗤放、HTTPS默認(rèn)是443端口
? ? HTTPS是一個應(yīng)用層協(xié)議思喊,和HTTP同一等級,因此它有默認(rèn)端口443次酌。
? ? 所以恨课,不要想當(dāng)然以為https會訪問80端口。
2岳服、https訪問速度慢于http
? ?由于存在事前協(xié)商剂公、加密等工作,因此https的訪問速度是要慢于http吊宋。這也是安全性帶來的性能消耗纲辽。
? ?當(dāng)然,在這個時代璃搜,這點(diǎn)速度消耗基本可以忽略拖吼。
3、http 可以通過反向代理的方式快速升級到https这吻。
? ? ?目前apache吊档、nginx都支持反向代理的方式將http網(wǎng)站升級到https。
? ? ?原理很簡單唾糯,apache或者nginx完成配置后籍铁,他們作為代理和客戶端完成加密通信涡上,把解密后的內(nèi)容和原始http通信。
? ? ?這種方式最大的好處是拒名,原本的http網(wǎng)站不需要任何修改吩愧!
4、跨域情況下增显,https不能支持access-control-allow-origin:*
? ? ?http情況下雁佳,cors可以配置為access-control-allow-origin:*,一通百通同云。
? ? ?https情況下糖权,不能使用通配符,需要指定具體的信息炸站。當(dāng)然星澳,可以在反向代理中直接替換為請求頭的Origin。
5旱易、fiefox對雙向認(rèn)證支持不好禁偎。
? ?實(shí)測中發(fā)現(xiàn),chrome可以比較好的支持雙向認(rèn)證阀坏,firefox則存在一定兼容性問題如暖。
尾聲
HTTPS經(jīng)過多年推廣,終于已經(jīng)比較成熟忌堂。證書機(jī)構(gòu)盒至、瀏覽器、web服務(wù)器都有相對比較完善的支持士修,成本也不高枷遂。
地址欄的小鎖對用戶來說,是巨大的安全感棋嘲。建議網(wǎng)站可以考慮升級一下酒唉,大大提升用戶信任。