新聞中心
引言
HTTP是不安全的,我們的頁(yè)面也被運(yùn)營(yíng)商插入過(guò)小黃圖廣告(數(shù)據(jù)被篡改),對(duì)于HTTP來(lái)說(shuō),再簡(jiǎn)單不過(guò),只需要設(shè)定相應(yīng)的DNS,做一個(gè)中間人攻擊,再將修改后的數(shù)據(jù)返回,這一方面可能泄露用戶隱私數(shù)據(jù),同時(shí)也對(duì)我們的品牌形象產(chǎn)生惡劣影響。

襄陽(yáng)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!
然而,當(dāng)我們切換HTTPS時(shí)候,運(yùn)營(yíng)商的這些小九九就施展不開(kāi)了,服務(wù)端認(rèn)證不通過(guò),瀏覽器不會(huì)展示相應(yīng)的頁(yè)面數(shù)據(jù);運(yùn)營(yíng)商實(shí)施搞的這一套東東也就不能在用戶不知情的情況下搞起來(lái)了,解決辦法是去除相應(yīng)的受污染的DNS。
全球最大的成人網(wǎng)站PornHub,YouPorn都要全面切HTTPS了,我們還在猶豫什么了?
安全的HTTP的需求
對(duì)HTTP的安全需求:
- 加密(客戶端和服務(wù)器的對(duì)話是私密的,無(wú)須擔(dān)心被竊聽(tīng))
- 服務(wù)端認(rèn)證(客戶端知道它們是在與真正的而不是偽造的服務(wù)器通信)
- 客戶端認(rèn)證(服務(wù)器知道它們是在與真正的而不是偽造的客戶端通信)
- 完整性(客戶端和服務(wù)器的數(shù)據(jù)不會(huì)被修改)
- 效率(一個(gè)運(yùn)行足夠快的算法,一遍低端的客戶端和服務(wù)器使用)
- 普適性(基本上所有的客戶端和服務(wù)器都支持這些協(xié)議)
- 管理的可擴(kuò)展性(在任何地方的任何人都可以立即進(jìn)行安全通信)
- 適應(yīng)性(能夠支持當(dāng)前最老牌的安全方法)
- 在社會(huì)上的可行性(滿足社會(huì)的政治文化需要),要有公眾受信能力
在這里面最重要的是前面幾條
- 數(shù)據(jù)加密 傳輸內(nèi)容進(jìn)行混淆
- 身份驗(yàn)證 通信雙方驗(yàn)證對(duì)方的身份真實(shí)性
- 數(shù)據(jù)完整性保護(hù) 檢測(cè)傳輸?shù)膬?nèi)容是否被篡改或偽造
安全HTTP的實(shí)現(xiàn)
加密方式的選擇
共享密鑰加密 對(duì)稱密鑰加密
共享密鑰加密方式使用相同的密鑰進(jìn)行加密解密,通信雙方都需要接收對(duì)方的加密密鑰進(jìn)行數(shù)據(jù)解密,這種方式在通信過(guò)程中必須交互共享的密鑰,同樣無(wú)法避免被網(wǎng)絡(luò)監(jiān)聽(tīng)泄漏密鑰的問(wèn)題;同時(shí)對(duì)于眾多客戶端的服務(wù)器來(lái)說(shuō)還需要分配和管理密鑰,對(duì)于客戶端來(lái)說(shuō)也需要管理密鑰,增加設(shè)計(jì)和實(shí)現(xiàn)的復(fù)雜度,同時(shí)也降低了通信的效率;不用看都不靠譜。
公開(kāi)密鑰加密
公開(kāi)密鑰加密方式使用一對(duì)非對(duì)稱的密鑰對(duì)(私鑰和公鑰),不公開(kāi)的作為私鑰,隨意分發(fā)的作為公鑰;公鑰和私鑰都能進(jìn)行數(shù)據(jù)加密和解密,公鑰能解密私鑰加密的數(shù)據(jù),私鑰也能解密公鑰加密的數(shù)據(jù);這樣只需要一套密鑰就能處理服務(wù)端和眾多客戶端直接的通信被網(wǎng)絡(luò)監(jiān)聽(tīng)泄漏密鑰的問(wèn)題,同時(shí)沒(méi)有額外的管理成本;看起來(lái)挺合適。
沒(méi)那么簡(jiǎn)單
公開(kāi)密鑰加密安全性高,伴隨著加密方式復(fù)雜,處理速度慢的問(wèn)題。如果我們的通信都是用公開(kāi)密鑰的方式加密,那么通信效率會(huì)很低。
HTTPS采用共享密鑰加密和公開(kāi)密鑰加密混合的加密方式,在交換密鑰對(duì)環(huán)節(jié)使用公開(kāi)密鑰加密方式(防止被監(jiān)聽(tīng)泄漏密鑰)加密共享的密鑰,在隨后的通信過(guò)程中使用共享密鑰的方式使用共享的密鑰進(jìn)行加解密。
認(rèn)證方式實(shí)現(xiàn)
數(shù)字證書(shū)
數(shù)字簽名是附加在報(bào)文上的特殊加密校驗(yàn)碼,可以證明是作者編寫(xiě)了這條報(bào)文,前提是作者才會(huì)有私鑰,才能算出這些校驗(yàn)碼。如果傳輸?shù)膱?bào)文被篡改,則校驗(yàn)碼不會(huì)匹配,因?yàn)樾r?yàn)碼只有作者保存的私鑰才能產(chǎn)生,所以前面可以保證報(bào)文的完整性。
數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)(Certificate Authority CA)是客戶端和服務(wù)器雙方都可信賴的第三方機(jī)構(gòu)。
服務(wù)器的運(yùn)營(yíng)人員向數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)提出證書(shū)認(rèn)證申請(qǐng),數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)在判明申請(qǐng)者的身份之后,會(huì)對(duì)已申請(qǐng)的公開(kāi)密鑰做數(shù)字簽名,然后分配這個(gè)已簽名的公開(kāi)密鑰,并將該公開(kāi)密鑰放入公鑰證書(shū)(也叫數(shù)字證書(shū)或證書(shū))后綁定在一起。服務(wù)器將這份有數(shù)字認(rèn)證機(jī)構(gòu)頒發(fā)的公鑰證書(shū)發(fā)總給客戶端,以進(jìn)行公開(kāi)密鑰加密方式通信。
EV SSL(Extended Validation SSL Certificate)證書(shū)是基于國(guó)際標(biāo)準(zhǔn)的認(rèn)證指導(dǎo)方針辦法的證書(shū),通過(guò)認(rèn)證的Web網(wǎng)站能獲得更高的認(rèn)可度。持有EV SSL證書(shū)的Web網(wǎng)站的瀏覽器地址欄的背景色是綠色的,同時(shí)在地址欄的左側(cè)顯示了SSL證書(shū)中記錄的組織名稱及辦法證書(shū)的認(rèn)證機(jī)構(gòu)的名稱。
使用OpenSSL,每個(gè)人都可以構(gòu)建一套認(rèn)證機(jī)構(gòu)文件,同時(shí)可以用來(lái)給自己的證書(shū)請(qǐng)求進(jìn)行簽名,這種方式產(chǎn)生的證書(shū)稱為自簽名證書(shū),這種證書(shū)通常是CA自己的證書(shū),用戶開(kāi)發(fā)測(cè)試的正式,也可以像12306這樣的,信不信由你。
證書(shū)信任的方式
- 操作系統(tǒng)和瀏覽器內(nèi)置每個(gè)操作系統(tǒng)和大多數(shù)瀏覽器都會(huì)內(nèi)置一個(gè)老牌證書(shū)頒發(fā)機(jī)構(gòu)的名單。因此,你也會(huì)信任操作系統(tǒng)及瀏覽器提供商提供和維護(hù)的可信任機(jī)構(gòu)。受信認(rèn)證機(jī)構(gòu)(也有不受信的,比如賽門鐵克,沃通,或者像2011年被入侵的DigiNotar等)的證書(shū)一般會(huì)被操作系統(tǒng)或者瀏覽器在發(fā)行或者發(fā)布時(shí)內(nèi)置。
- 證書(shū)頒發(fā)機(jī)構(gòu)CA( Certificate Authority,證書(shū)頒發(fā)機(jī)構(gòu))是被證書(shū)接受者(擁有者)和依賴證書(shū)的一方共同信任的第三方。
- 手動(dòng)指定證書(shū)所有瀏覽器和操作系統(tǒng)都提供了一種手工導(dǎo)入信任證書(shū)的機(jī)制。至于如何獲得證書(shū)和驗(yàn)證完整性則完全由你自己來(lái)定。
PKI(Public Key Infrastructure),即公開(kāi)密鑰基礎(chǔ)設(shè)施,是國(guó)際上解決開(kāi)放式互聯(lián)網(wǎng)絡(luò)信息安全需求的一套體系。PKI支持身份認(rèn)證,信息傳輸,存儲(chǔ)的完整性,消息傳輸,存儲(chǔ)的機(jī)密性以及操作的不可否認(rèn)性。
數(shù)據(jù)完整性
數(shù)字簽名是只有信息發(fā)送者才能產(chǎn)生的別人無(wú)法偽造的一段文本,這段文本是對(duì)信息發(fā)送者發(fā)送信息真實(shí)性的一個(gè)有效證明,具有不可抵賴性。
報(bào)文的發(fā)送方從報(bào)文文本生成一個(gè)128位的散列值(或稱為報(bào)文摘要活哈希值),發(fā)送方使用自己的私鑰對(duì)這個(gè)摘要值進(jìn)行加密來(lái)形成發(fā)送方的數(shù)字簽名。然后這個(gè)數(shù)字簽名將作為報(bào)文的附件一起發(fā)送給報(bào)文的接收方。報(bào)文的接收方首先從接收到的原始報(bào)文中計(jì)算出128位的散列值,再用發(fā)送方的公鑰來(lái)對(duì)報(bào)文附加的數(shù)字簽名進(jìn)行解密。如果兩次得到的結(jié)果是一致的那么接收方可以確認(rèn)該數(shù)字簽名是發(fā)送方的,同時(shí)確認(rèn)信息是真實(shí)的 。
HTTPS數(shù)據(jù)交互過(guò)程
HTTP中沒(méi)有加密機(jī)制,可以通過(guò)SSL(Secure Socket Layer 安全套接層)或TLS(Transport Layer Security 安全層傳輸協(xié)議)的組合使用,加密HTTP的通信內(nèi)容。
HTTPS是 HTTP Secure 或 HTTP over SSL。
SSL(Security Socket Layer)是最初由網(wǎng)景公司(NetScape)為了保障網(wǎng)上交易安全而開(kāi)發(fā)的協(xié)議,該協(xié)議通過(guò)加密來(lái)保護(hù)客戶個(gè)人資料,通過(guò)認(rèn)證和完整性檢查來(lái)確保交易安全。網(wǎng)景公司開(kāi)發(fā)過(guò)SSL3.0之前的版本;目前主導(dǎo)權(quán)已轉(zhuǎn)移給IETF(Internet Engineering Task Force),IETF以SSL3.0為原型,標(biāo)準(zhǔn)化并制定了TSL1.0,TLS1.1,TLS1.2。但目前主流的還是SSL3.0和TSL1.0。
SSL工作在OSI七層模型中的表示層,TCP/IP 四層模型的應(yīng)用層。
SSL 和 TLS 可以作為基礎(chǔ)協(xié)議的一部分(對(duì)應(yīng)用透明),也可以嵌入在特定的軟件包中(比如Web服務(wù)器中的實(shí)現(xiàn))。
SSL 基于TCP,SSL不是簡(jiǎn)單地單個(gè)協(xié)議,而是兩層協(xié)議;SSL記錄協(xié)議(SSL Record Protocol)為多種高層協(xié)議(SSL握手協(xié)議,SSL修改密碼參數(shù)協(xié)議,SSL報(bào)警協(xié)議)提供基本的安全服務(wù)。HTTP是為Web客戶端/服務(wù)器交互提供傳輸服務(wù)的,它可以在SSL的頂層運(yùn)行;SSL記錄協(xié)議為SSL鏈接提供兩種服務(wù),機(jī)密性:握手協(xié)議定義了一個(gè)共享密鑰,用于SSL載荷的對(duì)稱加密。 消息完整性:握手協(xié)議還定義了一個(gè)共享密鑰,它用來(lái)產(chǎn)生一個(gè)消息認(rèn)證碼(Message Authentication Code,MAC)。
SSL記錄協(xié)議操作
- 分段 將每個(gè)上層消息分解成不大于2^14(16384)位,然后有選擇的進(jìn)行壓縮
- 添加MAC 在壓縮數(shù)據(jù)的基礎(chǔ)上計(jì)算MAC
- 加密 消息加上MAC用對(duì)稱加密方法加密
- 添加SSL記錄頭 內(nèi)容類型(8位),主版本(8位),副版本(8位),壓縮長(zhǎng)度(16位)
SSL握手過(guò)程
- 第一階段 建立安全能力 包括協(xié)議版本 會(huì)話Id 密碼構(gòu)件 壓縮方法和初始隨機(jī)數(shù)
- 第二階段 服務(wù)器發(fā)送證書(shū) 密鑰交換數(shù)據(jù)和證書(shū)請(qǐng)求,最后發(fā)送請(qǐng)求-相應(yīng)階段的結(jié)束信號(hào)
- 第三階段 如果有證書(shū)請(qǐng)求客戶端發(fā)送此證書(shū) 之后客戶端發(fā)送密鑰交換數(shù)據(jù) 也可以發(fā)送證書(shū)驗(yàn)證消息
- 第四階段 變更密碼構(gòu)件和結(jié)束握手協(xié)議
SSL協(xié)議兩個(gè)重要概念,SSL會(huì)話,SSL連接;SSL連接是點(diǎn)到點(diǎn)的連接,而且每個(gè)連接都是瞬態(tài)的,每一個(gè)鏈接都與一個(gè)會(huì)話關(guān)聯(lián)。SSL會(huì)話是一個(gè)客戶端和一個(gè)服務(wù)器之間的一種關(guān)聯(lián),會(huì)話由握手協(xié)議(Handshake Protocol)創(chuàng)建,所有會(huì)話都定義了一組密碼安全參數(shù),這些安全參數(shù)可以在多個(gè)連接之間共享,會(huì)話可以用來(lái)避免每一個(gè)鏈接需要進(jìn)行的代價(jià)高昂的新的安全參數(shù)協(xié)商過(guò)程。
Client Server
ClientHello:HandShake -------->
ServerHello:Handshake
Certificate*:Handshake
ServerKeyExchange*:Handshake
CertificateRequest*:Handshake
<-------- ServerHelloDone:Handshake
Certificate*:Handshake
ClientKeyExchange:Handshake
CertificateVerify*:Handshake
[ChangeCipherSpec]
Finished:Handshake -------->
[ChangeCipherSpec]
<-------- Finished:Handshake
Application Data <-------> Application Data客戶端服務(wù)器數(shù)據(jù)交互實(shí)戰(zhàn)
使用openssl命令
openssl s_client -state -connect q.qunarzz.com:443
該命令可以顯示SSL握手過(guò)程,SSL證書(shū)鏈,公鑰證書(shū)以及其他相關(guān)的狀態(tài)和屬性信息。
使用Wireshark抓取數(shù)據(jù)包
相關(guān)配置
- 配置環(huán)境變量,同時(shí)保證文件路徑存在
SSLKEYLOG=/path/to/sslkeylog.log
- 配置Wireshark
Wireshark->Preference->Protocols->SSL->(Pre)-Master-Secret log filename=>選擇上面的路徑
抓包操作
- 在命令行中打開(kāi)Chrome或者Firefox,確保環(huán)境變量被讀取;如果不行就用Chrome或者Firefox的開(kāi)發(fā)版。
open /Applications/Firefox.app open /Applications/Google\ Chrome.app
- 確保$SSLKEYLOGFILE里面有內(nèi)容了,再往下進(jìn)行。
- 選擇對(duì)應(yīng)網(wǎng)卡,抓包配置為host http://q.qunarzz.com,開(kāi)始抓包
- 使用剛剛打開(kāi)的瀏覽器訪問(wèn)一個(gè)對(duì)應(yīng)host http://q.qunarzz.com下的某個(gè)資源,在抓包界面使用ssl過(guò)濾數(shù)據(jù)
- 在抓包界面可以看到對(duì)應(yīng)的SSL握手信息,同時(shí)還能看到解密后的應(yīng)用數(shù)據(jù)。
內(nèi)容解析(不同的網(wǎng)絡(luò)資源可能不完全一致,比如需要客戶端證書(shū))
客戶端?服務(wù)器
- Client Hello
- 最高支持的協(xié)議版本 如TLS 1.0
- 支持的加密算法列表(Cipher Suites)
- 支持的壓縮算法列表(Compression Methods)
- 客戶端生成的隨機(jī)數(shù),稍后用于生成會(huì)話密鑰
服務(wù)器?客戶端
- Server Hello
- 選定的協(xié)議版本
- 選定的加密算法
- 選定的壓縮方法
- 服務(wù)端生成的隨機(jī)數(shù),稍后用于生成會(huì)話密鑰
- Certificate 證書(shū)內(nèi)容
- Server Key Exchange, Server Hello Done
- 公鑰
- 數(shù)字簽名
- Server Hello Done
客戶端?服務(wù)器
- Client Key Exchange, Change Cipher Spec, Finished
- 公鑰
- Change Cipher Spec
- Finished
客戶端?服務(wù)器
- HTTP GET
服務(wù)端?客戶端
- 內(nèi)容的數(shù)據(jù)片段信息
- HTTP HTTP/1.1 200 OK
服務(wù)端?客戶端
- Encrypted Alert
- Alert (Level Warning, Description: Close Notify)
參考資料
- 《Web性能權(quán)威指南》
- 《RFC 2246》
- 《圖解HTTP》
- 《HTTP權(quán)威指南》
- 《HTTPS權(quán)威指南 在服務(wù)器和Web應(yīng)用上部署SSL/TLS和PKI》
- 《計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)方法》
- 《計(jì)算機(jī)網(wǎng)絡(luò)自上而下方法》
- 《計(jì)算機(jī)安全原理與實(shí)踐》
- 《網(wǎng)絡(luò)安全基礎(chǔ)-應(yīng)用與標(biāo)準(zhǔn)》
- 《PKI/CA與數(shù)字證書(shū)技術(shù)大全》
- 《SSL與TLS》
- 《OpenSSL官方命令文檔》
- 《OpenSSL與網(wǎng)絡(luò)信息安全-基礎(chǔ)、結(jié)構(gòu)和指令》
- 《OpenSSL攻略》
- Wireshark Doc SSL
分享標(biāo)題:深入理解HTTPS原理、過(guò)程與實(shí)踐
鏈接分享:http://www.dlmjj.cn/article/cdoijee.html


咨詢
建站咨詢
