2017年1月1日起,蘋果App Store中的所有App都必須啟用 App Transport Security(ATS)安全功能。App Transport Security(應用程序安全傳輸)积锅,簡稱 ATS霎烙,是蘋果在 iOS 9 中首次推出的一項隱私安全保護功能,啟用ATS后,它會屏蔽明文HTTP資源加載逼蒙,強制App通過HTTPS連接網(wǎng)絡服務,通過傳輸加密保障用戶數(shù)據(jù)安全寄疏。
距離2017年剩下不到一個月的時間,如果連 HTTPS 還不了解,確實有些說不過去!這里把 HTTPS 相關的知識整理一下,博主小白,有什么疏漏或者不對的地方還望大家多多包涵加以指正!
HTTPS 也就是在 HTTP 的基礎上,增加了一個 SSL協(xié)議,是 HTTP 的安全版.HTTPS 默認使用的端口號是443.
由此可見,HTTPS 最重要的還是這個"S",也就是 SSL 協(xié)議.
Secure socket layer(SSL)協(xié)議最初由Netscape企業(yè)發(fā)展是牢,現(xiàn)已成為網(wǎng)絡用來鑒別網(wǎng)站和網(wǎng)頁瀏覽者身份僵井,以及在瀏覽器使用者及網(wǎng)頁服務器之間進行加密通訊的全球化標準。隨著時間的推移由于 Netscape 失去了市場份額,它將 SSL的維護工作移交給 IETF.第一個后Netscape版本被重新命名為安全傳輸層協(xié)議(TLS),TLS(Transport Layer Security:RFC 2246). 因此 SSL 協(xié)議有時也成為 TLS 協(xié)議,目前常用的是TLSv1.0的協(xié)議. 由于SSL技術已建立到所有主要的瀏覽器和WEB服務器程序中驳棱,因此批什,僅需安裝數(shù)字證書,或服務器證書就可以激活服務器功能了社搅。
SSL安全證書主要用于發(fā)送安全電子郵件驻债、訪問安全站點、網(wǎng)上招標與投標形葬、網(wǎng)上簽約合呐、網(wǎng)上訂購、安全網(wǎng)上公文傳送笙以、網(wǎng)上辦公淌实、網(wǎng)上繳費、網(wǎng)上繳稅以及網(wǎng)上購物等安全的網(wǎng)上電子交易活動猖腕。
一.SSL證書可以實現(xiàn)幾個基本功能
1.數(shù)據(jù)傳輸加密
2.數(shù)據(jù)傳輸?shù)耐暾?/p>
3.服務器身份證明
二.SSL證書常見類型
1.DVSSL:即域名型SSL安全證書拆祈,無需人工審核,快速頒發(fā)倘感。
2.OVSSL:即企業(yè)型SSL安全證書放坏,需要人工審核,證書包含企業(yè)認證信息侠仇。
3.EVSSL:即增強型SSL安全證書轻姿,人工審核嚴格,頒發(fā)之后可以使網(wǎng)站域名在瀏覽器地址欄變成綠色逻炊。
舉兩個例子
*騰訊云
這里會出現(xiàn)一個”小鎖頭 ”的樣式,騰訊云采用了 https 協(xié)議,是OVSSL類型的證書.
*github
大家肯定會注意到,github 的 url 變綠了,說明 github 采用的是EVSSL類型的證書,并且該證書可以在瀏覽器的地址欄中顯示公司名.
三.SSL協(xié)議在網(wǎng)絡協(xié)議中的位置
那么 SSL 協(xié)議在所處的位置在哪呢?我們都知道,tcp/ip 協(xié)議處于網(wǎng)絡模型(本例以 tcp/ip 四層模型為標準)的傳輸層,而 http 協(xié)議處于應用層,所以加密的過程肯定在傳輸層與應用層之間.
四.SSL協(xié)議的分層
SSL 協(xié)議是一個分層協(xié)議,共有兩層組成.
高級層包括:
1.SSL 握手協(xié)議(SSL Handshake Protocol)
2.改變加密約定協(xié)議(Change Ciper Spec Protocol)
3.報警協(xié)議(Alert Protocol)
底層:
SSL 記錄層協(xié)議(SSL Record Protocol)
五.SSL 協(xié)議的傳輸過程
接下來通過 Wirkshark 抓去 https 的數(shù)據(jù)包來分析客戶端與服務端建立信任并傳輸數(shù)據(jù)的過程.
1.Client Hello
客戶端發(fā)送所支持的 SSL/TLS 最高協(xié)議版本號互亮、所支持的加密算法集合及壓縮方法集合和隨機數(shù)A等信息給服務器端。
2.Server Hello
(1).服務器端收到客戶端信息后余素,選定雙方都能夠支持的 SSL/TLS 協(xié)議版本和加密方法及壓縮方法豹休、 隨機數(shù)B和服務器證書返回給客戶端。
(2).服務器將自己的證書發(fā)給客戶端
(3)Server Hello Done
3.客戶端主動再生成一個隨機數(shù)C桨吊,開始生成秘鑰威根,這個生成秘鑰的算法是客戶端跟服務器端共享的,因為之前協(xié)商的時候已經確定了算法了视乐,生成秘鑰后就可以加密一段內容洛搀,試著跟服務區(qū)通信了,這個內容是經過先散列佑淀,散列后將原內容和散列集一起用剛才的密鑰加密留美;接著用服務器端證書中的公鑰對隨機數(shù)C加密。
(1). Client 交換密鑰數(shù)據(jù)包
(2).Server 通知 Client 之后的消息開始啟用加密參數(shù)
4. 然后把加密過的內容和加密好的隨機數(shù)一起發(fā)向服務器端。
5.服務器用私鑰解密得到隨機數(shù)C谎砾,這樣服務器端也同時擁有了隨機數(shù)A逢倍、B、C景图,即刻生成密鑰较雕,再用密鑰對加密的內容進行解密,然后解開后對其中的明文內容進行散列挚币,與客戶端發(fā)過來的散列值進行比較亮蒋,如果相等,說明就是客戶端發(fā)過來的妆毕,通信成功宛蚓。
6.用步驟3中同樣的方式發(fā)一段加密過的內容給客戶端。
7.用步驟5一樣的方式對服務器發(fā)來的內容進行驗證设塔。
8.客戶端確定開始通信凄吏。
9.服務端確定開始通信。