隨著網(wǎng)絡安全問題越來越被重視,HTTPS協(xié)議的使用已經(jīng)逐漸主流化。目前的主流站點均已使用了HTTPS協(xié)議;比如:百度、淘寶、京東等一二線主站都已經(jīng)遷移到HTTPS服務之上。而作為測試人員來講,也要需時俱進對HTTPS協(xié)議要有一定的了解,這樣就可以更好的幫助我們在工作完成任務和排查問題。
首先,在理解HTTPS之前需要了解HTTP。HTTP(Hyper Text Transfer Protocol)是超文本傳輸協(xié)議,是在互聯(lián)網(wǎng)上廣泛使用的一種信息傳輸方式,通常瀏覽器與服務器進行通信使用的都是HTTP協(xié)議。該協(xié)議因為其使用簡單、方便,隨著互聯(lián)網(wǎng)的發(fā)展也同時在壯大。而HTTP協(xié)議本身只是定義了一份規(guī)范,具體的傳輸能力則是由TCP協(xié)議來完成。所以HTTP是基于TCP之上,廣泛應用與瀏覽器中的一種傳輸協(xié)議。
因為有了HTTP協(xié)議,所以互聯(lián)網(wǎng)的發(fā)展如虎添翼,在短短幾十年時間內(nèi),改變了人類很多的生活方式甚至生存方式。至今HTTP本身仍然是可以支持互聯(lián)網(wǎng)的通信,只是其在安全上不能提供很好的保障。尤其是互聯(lián)網(wǎng)與人們的生活越來越密切的時候,互聯(lián)網(wǎng)的安全問題也越來越重要。而HTTPS則是解決這個問題的方法。本質(zhì)上HTTPS=HTTP SSL/TLS。其中SSL和TLS是一種加密協(xié)議,即HTTPS是一種帶加密功能的HTTP協(xié)議。
在這里向大家推薦一個學習資料分享群:706315665
即HTTPS并不是一個新的協(xié)議,而是多個協(xié)議組裝后的產(chǎn)物。而其安全性則主要由SSL/TLS層來保障。(當然SSL/TLS也可以可以保障其它的應用層協(xié)議,比如:SSL FTP=SFTP)
既然SSL可以保障安全,那么它到底是如何保障的呢?其實SSL安全機制是通過對HTTP協(xié)議內(nèi)容進行加密來實現(xiàn)的。而加密方式一般有2種類型:對稱加密和非對稱加密。
對稱加密:加密和解密時使用的密匙(key)是一樣的。密匙安全性不高,加密速度快
非對稱加密:加密時使用公匙加密,解密時使用私匙解密。密匙安全性高,加密速度相對慢
而SSL中兩者都有使用,且分別結合了它們的優(yōu)缺點。在每次通信前先使用非對稱加密來確定本次通信后續(xù)使用的對稱加密的密匙,之后所有的通信都是使用臨時生成的密匙來進行對稱加密后傳輸。
但是從安全角度考慮這還不夠,因為密匙還是有可能被人竊取了,然后篡改內(nèi)容。所以就引入了證書機制,相當于給加密內(nèi)容在加一個蓋章。接著問題就變成了有人偽造證書怎么辦?再然后就有了第三方認證機構,專門來發(fā)證書的,只有這些機構發(fā)的證書才可以信任。
于是現(xiàn)在訪問HTTPS網(wǎng)站的時候就可能有兩種情況,一種是使用認證的證書、一種是使用未認證的證書。當我們訪問的網(wǎng)站使用未認證的證書時,瀏覽器往往就會有提醒--該網(wǎng)站不可信任。如果要一意孤行,就需要自己手動點繼續(xù)。(當然你還可以給瀏覽器設置忽略安全認證)
全世界范圍內(nèi)可以發(fā)放安全證書的第三方機構就2-3個,而全世界有那么多的公司或網(wǎng)站需要申請證書。如何知道某個證書是否可信任呢?
其實安全證書有分根證書、子證書、子子證書,不同等級的信任范圍。通常根證書是由最上面的第三方機構頒發(fā)給自己的,根證書下面的一級子證書通常是頒發(fā)給其下的代理公司的,而如果你的網(wǎng)站是從代理公司申請的,那么你證書將會是一個二級子證書。
而在認證證書的時候, 操作系統(tǒng)或者程序會去檢查該證書此前是否已經(jīng)被信任過,或者該證書的上級證書(父級、父父級等等)是否被信任過。只要有一個等級的證書被信任過,則認為該證書是可信任的。
具體證書是否可信任是根據(jù)系統(tǒng)或者程序是否已安裝并信任了該證書。通常操作系統(tǒng)都會預裝頂級證書機構的根證書,所以只要你訪問的網(wǎng)站證書是從這幾個頂級第三方機構或其代理申請的,那么就會被直接信任無需你去手動下載和安裝。
了解了HTTPS和證書的基本知識之后,再來看看HTTPS的代理是如何實現(xiàn)的。與HTTP代理相比,HTTPS代理會多一個證書管理的功能,因為它要給瀏覽器端下發(fā)證書,才能模擬正常的HTTPS連接。所以HTTPS代理在進行內(nèi)容轉發(fā)之前,還需要對內(nèi)容進行解碼和加密的轉換。具體圖解如下:
這就是為什么使用Charles、Fiddler之類的軟件代理HTTPS的時候,需要先安裝一個它們的證書(尤其是移動端)。因為它們的證書是沒有認證過的,需要手動安裝并信任,之后才可以正常的代理。
聯(lián)系客服