日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTPS 原理解析

發布時間:2023/11/29 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTPS 原理解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.cnblogs.com/zery/p/5164795.html

一 前言

  在說HTTPS之前先說說什么是HTTP,HTTP就是我們平時瀏覽網頁時候使用的一種協議。HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全。為了保證這些隱私數據能加密傳輸,于是網景公司設計了SSL(Secure Sockets Layer)協議用于對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定義在RFC 6101中,之后IETF對SSL 3.0進行了升級,于是出現了TLS(Transport Layer Security) 1.0,定義在RFC 2246。實際上我們現在的HTTPS都是用的TLS協議,但是由于SSL出現的時間比較早,并且依舊被現在瀏覽器所支持,因此SSL依然是HTTPS的代名詞,但無論是TLS還是SSL都是上個世紀的事情,SSL最后一個版本是3.0,今后TLS將會繼承SSL優良血統繼續為我們進行加密服務。目前TLS的版本是1.2,定義在RFC 5246中,暫時還沒有被廣泛的使用 ()

概念可參考百科

http://baike.baidu.com/link?url=M8pBu1j_22f0PW6izvAOCTjhepyRcT320U9LDmjyzb586OYS_aBALxfqIGVca1V-8MJeSl3bTUEOThMuwpamPK

?

?

二 ?HTTPS 驗證原理

  Https在真正請求數據前,先會與服務有幾次握手驗證,以證明相互的身份,以下圖為例

?

?

?

2.1 ?驗證流程

?

?注:文中所寫的序號與圖不對應但流程是對應的

1?客戶端發起一個https的請求,把自身支持的一系列Cipher Suite(密鑰算法套件,簡稱Cipher)發送給服務端

?

2??服務端,接收到客戶端所有的Cipher后與自身支持的對比,如果不支持則連接斷開,反之則會從中選出一種加密算法和HASH算法

? ?以證書的形式返回給客戶端 證書中還包含了 公鑰 頒證機構 網址 失效日期等等。

?

3?客戶端收到服務端響應后會做以下幾件事

? ? 3.1?驗證證書的合法性? ??

   ?頒發證書的機構是否合法與是否過期,證書中包含的網站地址是否與正在訪問的地址一致等

? ? ? ? 證書驗證通過后,在瀏覽器的地址欄會加上一把小鎖(每家瀏覽器驗證通過后的提示不一樣 不做討論)

? ?3.2 生成隨機密碼

? ? ? ? 如果證書驗證通過,或者用戶接受了不授信的證書,此時瀏覽器會生成一串隨機數,然后用證書中的公鑰加密。       

? ? 3.3 HASH握手信息

? ? ? ?用最開始約定好的HASH方式,把握手消息取HASH值, ?然后用 隨機數加密 “握手消息+握手消息HASH值(簽名)” ?并一起發送給服務端

? ? ? ?在這里之所以要取握手消息的HASH值,主要是把握手消息做一個簽名,用于驗證握手消息在傳輸過程中沒有被篡改過。

?

4??服務端拿到客戶端傳來的密文,用自己的私鑰來解密握手消息取出隨機數密碼,再用隨機數密碼?解密 握手消息與HASH值,并與傳過來的HASH值做對比確認是否一致。

? ? 然后用隨機密碼加密一段握手消息(握手消息+握手消息的HASH值 )給客戶端

?

5??客戶端用隨機數解密并計算握手消息的HASH,如果與服務端發來的HASH一致,此時握手過程結束,之后所有的通信數據將由之前瀏覽器生成的隨機密碼并利用對稱加密算法進行加密 ?

? ? ?因為這串密鑰只有客戶端和服務端知道,所以即使中間請求被攔截也是沒法解密數據的,以此保證了通信的安全

??

非對稱加密算法:RSA,DSA/DSS ? ? 在客戶端與服務端相互驗證的過程中用的是對稱加密?
對稱加密算法:AES,RC4,3DES ? ? 客戶端與服務端相互驗證通過后,以隨機數作為密鑰時,就是對稱加密
HASH算法:MD5,SHA1,SHA256 ?在確認握手消息沒有被篡改時?

?

?

2.2??客戶端如何驗證 證書的合法性?

?

1. 驗證證書是否在有效期內。

  在服務端面返回的證書中會包含證書的有效期,可以通過失效日期來驗證 證書是否過期

2. 驗證證書是否被吊銷了。

  被吊銷后的證書是無效的。驗證吊銷有CRL(證書吊銷列表)和OCSP(在線證書檢查)兩種方法。

證書被吊銷后會被記錄在CRL中,CA會定期發布CRL。應用程序可以依靠CRL來檢查證書是否被吊銷了。

CRL有兩個缺點,一是有可能會很大,下載很麻煩。針對這種情況有增量CRL這種方案。二是有滯后性,就算證書被吊銷了,應用也只能等到發布最新的CRL后才能知道。

增量CRL也能解決一部分問題,但沒有徹底解決。OCSP是在線證書狀態檢查協議。應用按照標準發送一個請求,對某張證書進行查詢,之后服務器返回證書狀態。

OCSP可以認為是即時的(實際實現中可能會有一定延遲),所以沒有CRL的缺點。

?

3. 驗證證書是否是上級CA簽發的。


windows中保留了所有受信任的根證書,瀏覽器可以查看信任的根證書,自然可以驗證web服務器的證書, 是不是由這些受信任根證書頒發的或者受信任根證書的二級證書機構頒發的(根證書機構可能會受權給底下的中級證書機構,然后由中級證書機構頒發中級證書) 在驗證證書的時候,瀏覽器會調用系統的證書管理器接口對證書路徑中的所有證書一級一級的進行驗證,只有路徑中所有的證書都是受信的,整個驗證的結果才是受信

三 ?手機如何抓取HTTPS的請求數據

當站點由HTTP轉成HTTPS后是更安全了,但是有時候要看線上的請求數據解決問題時卻麻煩了,因為是HTTPS的請求,你就算攔截到了那也是加密的數據,沒有任何意義。 那有方法解決嗎? 答案是肯定的! 接下來就來個實例教程,教大家如何查看HTTPS的請求數據 首先需要安裝Fiddler 用于攔截請求,和頒發https證書 3.1 ?Fiddler根證書導出 按圖中操作把導出,再將導出的的根證書"FiddlerRoot.cer" 的后輟名 改為"crt" ?"FiddlerRoot.crt" 因為手機沒法直接安裝 cer格式的證書 3.2 ?證書安裝 在本機把證書移到本機IIS中的某個網站的物理目錄中,然后在手機瀏覽器中訪問該證書的目錄 如:"192.168.0.102:8001/FiddlerRoot.crt" 如圖 此時手機會提示按裝根證書,其實安裝一個不受信的根證書是非常危險的,如果你安裝了某些釣魚網站或者有危害的根證書,那只要是該根證書下的所有證書都會驗證通過, 那隨便一個釣魚網的網站只要安裝了該根證書下的證書,都不會有任何警告提示。 很可能讓用戶有財產損失。所以在安裝根證書時,手機系統會要求你輸入鎖屏密碼,以確保是本人操作。 安裝過程如下 Fiddler的根證書名字都提示了是不受信的根證書 安裝完成 3.3 ?通過Fiddler抓取手機的HTTPS請求 Fiddler默認偵聽的端口是8888,把手機WiFI的Http 代理設為本機Fiddler的地址如下圖 這樣手機上所有的請求都會先通過Fiddler,Fiddler再轉發到目標服務器 注意: 在家中的路由器中有線與無線通常不在一個網段,會導致Fiddler無法抓到手機的包,需要手動設置路由,可自行百度 代理也設好之后便可以開始抓到Https的請求內容了如圖 Https的默認端口號是 “443”可以看出紅框中的是未裝根證書前的請求,加了一把小鎖,而且請求記錄都是灰色的 而安裝證書后請求則一切正常,請求內容也都可以正常看到。 3.4 ?為什么安裝了Fiddler根證書可以看到Https請求內容 要解釋這個問題,就需要了解最開始的Https的驗證原理了,回顧一下,先是客戶端把自己支持的加密方式提交到服務端,然后服務端 會返回一個證書 到這一步問題來了,手機未什么要安裝Fiddler的證書呢? 第一?因為Fiddler在客戶端(手機)發出Https請求時,充當了服務器的角色,需要返回一個證書給客戶端, 但是Fiddler的證書并不是CA機構頒發的,客戶端一驗證就知道是假的連接肯定就斷了,那怎么辦呢? 那就想辦法讓客戶端信任這個服務端,于是就在客戶端安裝一個Fiddler的根證書。 所以只要是通過Fiddler的Https請求,驗證根證書時自然會通過,因為Fiddler的根證書你已經受信了! 第二 現在只是客戶端(手機)和Fiddler這個偽服務端的Https驗證通過了,還沒有到真正的服務端去取數據的,此時Fiddler會以客戶端的身份與真正的服務端再進行一次HTTPS的驗證,最后拿到數據后 又以服務端的身份與客戶端(手機)通信。也就是說在一次請求中數據被兩次加解密,一次是手機到Fiddler,一次是Fiddler到真正的服務端。 整個過程 ?手機----》Fiddler----》 服務器 ?Fiddler 即充當了服務端又充當了客戶端,才使得數據能夠正常的交互,這個過程中最重要的一環就是手機端安裝的 根證書!

四 ?總結

寫了這么多,其實也只是把Https的基本流程寫清楚了一部分,這其中每一個步驟深入下去都是一門學科,而對于我們而言,能清楚其大致運作流程,做到心中有數據就算可以了, Https在目前的網絡數據安全傳輸占據著重要地位,目前可能也沒有更優的方案來代替Https。另外一定要注意 不要隨便安裝不確定的的根證書,以免帶來不必要的損失。 寫這篇文章時,已經進入我的春節假期,而我也已經踏上了 回家的火車,大家有疑問可以在評論中回復,如有錯誤之處還望大家能指出,以免誤導他人 提前祝大家新年快樂!

如果您覺得本文讓您有所收獲,不妨點下贊,為我的付出,給一點點回報!

如果您覺得本人也有點意思,不妨點個觀注,大家一起談技術,談人生!

?以下為參考資料

http://www.guokr.com/post/114121/? https原理 http://www.guokr.com/post/116169/?SSL證書 http://www.cnblogs.com/svan/p/5090201.html?https工作原理 http://blog.csdn.net/clh604/article/details/22179907?Https 原理 https://www.zhihu.com/question/37370216/answer/71956414??瀏覽器如何驗證HTTPS證書的合法性? http://blog.csdn.net/wkk2620632/article/details/39433673???公鑰證書cer,pfx http://www.07net01.com/zhishi/640504.html??數字證書資料cer和pfx的區別

總結

以上是生活随笔為你收集整理的HTTPS 原理解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。