接口測試之深刻理解HTTPS

前言

隨着網絡安全問題愈來愈被重視,HTTPS協議的使用已經逐漸主流化。目前的主流站點均已使用了HTTPS協議;好比:百度、淘寶、京東等一二線主站都已經遷移到HTTPS服務之上。而做爲測試人員來說,也要需時俱進對HTTPS協議要有必定的瞭解,這樣就能夠更好的幫助咱們在工做完成任務和排查問題。瀏覽器

HTTP與TCP

首先,在理解HTTPS以前須要瞭解HTTP。HTTP(Hyper Text Transfer Protocol)是超文本傳輸協議,是在互聯網上普遍使用的一種信息傳輸方式,一般瀏覽器與服務器進行通訊使用的都是HTTP協議。該協議由於其使用簡單、方便,隨着互聯網的發展也同時在壯大。而HTTP協議自己只是定義了一份規範,具體的傳輸能力則是由TCP協議來完成。因此HTTP是基於TCP之上,普遍應用與瀏覽器中的一種傳輸協議。安全

HTTP與HTTPS

由於有了HTTP協議,因此互聯網的發展如虎添翼,在短短几十年時間內,改變了人類不少的生活方式甚至生存方式。至今HTTP自己仍然是能夠支持互聯網的通訊,只是其在安全上不能提供很好的保障。尤爲是互聯網與人們的生活愈來愈密切的時候,互聯網的安全問題也愈來愈重要。而HTTPS則是解決這個問題的方法。本質上HTTPS=HTTP+SSL/TLS。其中SSL和TLS是一種加密協議,即HTTPS是一種帶加密功能的HTTP協議。服務器

HTTPS、HTTP、TCP之間的關係

在這裏向你們推薦一個學習資料分享羣:747981058
即HTTPS並非一個新的協議,而是多個協議組裝後的產物。而其安全性則主要由SSL/TLS層來保障。(固然SSL/TLS也能夠能夠保障其它的應用層協議,好比:SSL+FTP=SFTP)網絡

SSL/TLS的安全機制原理

既然SSL能夠保障安全,那麼它究竟是如何保障的呢?其實SSL安全機制是經過對HTTP協議內容進行加密來實現的。而加密方式通常有2種類型:對稱加密和非對稱加密。性能

對稱加密:加密和解密時使用的密匙(key)是同樣的。密匙安全性不高,加密速度快學習

非對稱加密:加密時使用公匙加密,解密時使用私匙解密。密匙安全性高,加密速度相對慢測試

而SSL中二者都有使用,且分別結合了它們的優缺點。在每次通訊前先使用非對稱加密來肯定本次通訊後續使用的對稱加密的密匙,以後全部的通訊都是使用臨時生成的密匙來進行對稱加密後傳輸。網站

可是從安全角度考慮這還不夠,由於密匙仍是有可能被人竊取了,而後篡改內容。因此就引入了證書機制,至關於給加密內容在加一個蓋章。接着問題就變成了有人僞造證書怎麼辦?再而後就有了第三方認證機構,專門來發證書的,只有這些機構發的證書才能夠信任。加密

因而如今訪問HTTPS網站的時候就可能有兩種狀況,一種是使用認證的證書、一種是使用未認證的證書。當咱們訪問的網站使用未認證的證書時,瀏覽器每每就會有提醒--該網站不可信任。若是要獨斷獨行,就須要本身手動點繼續。(固然你還能夠給瀏覽器設置忽略安全認證)操作系統

證書發放與安裝

全世界範圍內能夠發放安全證書的第三方機構就2-3個,而全世界有那麼多的公司或網站須要申請證書。如何知道某個證書是否可信任呢?

其實安全證書有分根證書、子證書、子子證書,不一樣等級的信任範圍。一般根證書是由最上面的第三方機構頒發給本身的,根證書下面的一級子證書一般是頒發給其下的代理公司的,而若是你的網站是從代理公司申請的,那麼你證書將會是一個二級子證書。

而在認證證書的時候, 操做系統或者程序會去檢查該證書此前是否已經被信任過,或者該證書的上級證書(父級、父父級等等)是否被信任過。只要有一個等級的證書被信任過,則認爲該證書是可信任的。

具體證書是否可信任是根據系統或者程序是否已安裝並信任了該證書。一般操做系統都會預裝頂級證書機構的根證書,因此只要你訪問的網站證書是從這幾個頂級第三方機構或其代理申請的,那麼就會被直接信任無需你去手動下載和安裝。

HTTPS代理

瞭解了HTTPS和證書的基本知識以後,再來看看HTTPS的代理是如何實現的。與HTTP代理相比,HTTPS代理會多一個證書管理的功能,由於它要給瀏覽器端下發證書,才能模擬正常的HTTPS鏈接。因此HTTPS代理在進行內容轉發以前,還須要對內容進行解碼和加密的轉換。具體圖解以下:

這就是爲何使用Charles、Fiddler之類的軟件代理HTTPS的時候,須要先安裝一個它們的證書(尤爲是移動端)。由於它們的證書是沒有認證過的,須要手動安裝並信任,以後才能夠正常的代理。

結語:

跟你們推薦一個學習資料分享羣:747981058,裏面大牛已經爲咱們整理好了許多的學習資料,有自動化,接口,性能等等的學習資料!人生是一個逆水行舟的過程,不進則退,我們一塊兒加油吧! 

相關文章
相關標籤/搜索