Fiddler抓取https設置及其原理

Fiddler抓取https設置及其原理

2018-02-02

目錄

1?HTTPS握手過程
2?Fiddler抓取HTTPS過程
3?Fiddler抓取HTTPS設置
參考

?

數字簽名是什么?

?

1 HTTPS握手過程

HTTPS 并非是應用層的一種新協議。只是 HTTP 通信接口部分用 SSL (安全套接字層)和TLS (安全傳輸層協議)代替而已。即添加了加密及認證機制的 HTTP 稱為 HTTPS ( HTTP Secure )。

HTTPS = HTTP?+ 認證 + 加密 + 完整性保護

握手過程如下:

第一步:客戶端發起明文請求:將自己支持的一套加密規則、以及一個隨機數(Random_C)發送給服務器

第二步:服務器選出一組加密規則和hash算法,并將自己的身份信息以證書(CA:包含網站地址、加密公鑰、證書頒發機構等信息)和一個隨機數(Random_S)發給客戶端

第三步:客戶端接到服務器的響應

驗證證書的合法性(頒發證書的機構是否合法,證書中包含的網站地址是否與正在訪問的地址一致等)。如果證書受信任,則瀏覽器欄里面會顯示一個小鎖頭,否則會給出證書不受信的提示。?

如果證書受信任,或者是用戶接受了不受信的證書,客戶端做以下事情:

  1. 生成密碼:瀏覽器會生成一串隨機數的密碼(Pre_master),并用CA證書里的公鑰加密(enc_pre_master),用于傳給服務器。
  2. 計算協商密鑰:enc_key=Fuc(random_C, random_S, Pre-Master)
  3. 生成握手信息:使用約定好的HASH計算握手消息,并使用協商密鑰enc_key及約定好的算法對消息進行加密。
  4. 發送以下信息到服務器:
    1. 用公鑰加密過的服務器隨機數密碼enc_pre_master
    2. 客戶端發給服務器的通知,"以后我們都要用約定好的算法和協商密鑰進行通信的哦"。
    3. 客戶端加密生成的握手信息。

第四步,服務器接收客戶端發來的數據要做以下四件事情:

  1. 私鑰解密:使用自己的私鑰從接收到的enc_pre_master中解密取出密碼Pre_master。
  2. 計算協商密鑰:enc_key=Fuc(random_C, random_S, Pre-Master)
  3. 解密握手消息:使用協商密鑰enc_key解密客戶端發來的握手消息,并驗證HASH是否與客戶端發來的一致。
  4. 生成握手消息使用協商密鑰enc_key及約定好的算法加密一段握手消息,發送給客戶端。這里要發的數據有兩條:
    1. 服務器發給客戶端的通知,”聽你的,以后我們就用約定好的算法和協商密鑰進行通信哦“。
    2. 服務器加密生成的握手信息。

第五步,客戶端拿到握手信息解密,握手結束。

客戶端解密并計算握手消息的HASH,如果與服務端發來的HASH一致,此時握手過程結束。

第六步,正常加密通信

握手成功之后,所有的通信數據將由之前協商密鑰enc_key及約定好的算法進行加密解密。

這里瀏覽器與網站互相發送加密的握手消息并驗證,目的是為了保證雙方都獲得了一致的密碼和hash算法,并且可以正常的加密解密數據,為后續真正數據的傳輸做一次測試。

從握手過程,我們可以得知:

  • 通過CA可以確認網站的合法性
  • 通過enc_key來加密解密,在傳輸過程中,為了保證enc_key不被解破,在客戶端用公鑰加密后,在服務器端用私鑰解密,私鑰只有服務器端有,所以即使報文被截獲,也無法破解。
  • hash算法確保報文的完整性

hash算法確保

2 Fiddler抓取HTTPS過程

我們都知道,Fiddler是個很好的代理工具,可抓取協議請求用于調試。

Fiddler抓取HTTPS協議主要由以下幾步進行:

第一步,Fiddler截獲客戶端發送給服務器的HTTPS請求,Fiddler偽裝成客戶端向服務器發送請求進行握手 。

第二步,服務器發回相應,Fiddler獲取到服務器的CA證書, 用根證書(這里的根證書是CA認證中心給自己頒發的證書)公鑰進行解密, 驗證服務器數據簽名,?獲取到服務器CA證書公鑰。然后Fiddler偽造自己的CA證書(這里的CA證書,也是根證書,只不過是Fiddler偽造的根證書), 冒充服務器證書傳遞給客戶端瀏覽器。

第三步,與普通過程中客戶端的操作相同,客戶端根據返回的數據進行證書校驗、生成密碼Pre_master、用Fiddler偽造的證書公鑰加密,并生成HTTPS通信用的對稱密鑰enc_key。

第四步,客戶端將重要信息傳遞給服務器, 又被Fiddler截獲。Fiddler將截獲的密文用自己偽造證書的私鑰解開, 獲得并計算得到HTTPS通信用的對稱密鑰enc_key。Fiddler將對稱密鑰用服務器證書公鑰加密傳遞給服務器。

第五步,與普通過程中服務器端的操作相同,服務器用私鑰解開后建立信任,然后再發送加密的握手消息給客戶端。

第六步,Fiddler截獲服務器發送的密文, 用對稱密鑰解開, 再用自己偽造證書的私鑰加密傳給客戶端。

第七步,客戶端拿到加密信息后,用公鑰解開,驗證HASH。握手過程正式完成,客戶端與服務器端就這樣建立了”信任“。

在之后的正常加密通信過程中,Fiddler如何在服務器與客戶端之間充當第三者呢?

服務器—>客戶端:Fiddler接收到服務器發送的密文, 用對稱密鑰解開, 獲得服務器發送的明文。再次加密, 發送給客戶端。
客戶端—>服務端:客戶端用對稱密鑰加密,被Fiddler截獲后,解密獲得明文。再次加密,發送給服務器端。由于Fiddler一直擁有通信用對稱密鑰enc_key, 所以在整個HTTPS通信過程中信息對其透明。

3 Fiddler抓取HTTPS設置

從上面可以看到,fiddler相當于代理,客戶端和服務器交互都要通過fiddler,Fiddler抓取HTTPS協議成功的關鍵是根證書(根證書是CA認證中心給自己頒發的證書,是信任鏈的起始點。安裝根證書意味著對這個CA認證中心的信任。),這是一個信任鏈的起點,這也是Fiddler偽造的CA證書能夠獲得客戶端和服務器端信任的關鍵。

沒有受信任的fiddler根證書,不能讓客戶端相信fiddler偽造的CA證書,從而得到Pre_master。

接下來我們就來看如果設置讓Fiddler抓取HTTPS協議。

Fiddler菜單->Tools->Telerik Fiddler Options

在跳出的對話框點擊‘Yes’

在跳出的對話框點擊‘是(Y)’后,通過IE的Internet選項,我們可以看到Fiddler的根證書被加入到“受信任的根證書頒發機構”。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386951.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

springboot 返回json字符串格式化問題

在idea中yml文件中添加以下注解就可以格式化json字符串效果 spring: jackson: serialization: indent-output: true 原返回json格式為: {"isSuccess":"ok","code":"0","message":"success",&…

RUNOOB python練習題10

用來練手的python 練習題,原鏈接 : python練習實例9 題干 : 暫停兩秒輸出,并格式化當前時間。 import time,datetimeTIME datetime.datetime.now() print(TIME.strftime("%Y.%m.%d %H-%M-%S")) time.sleep(2) TIME datetime.datetime.now(…

HTTPS連接過程以及中間人攻擊劫持

HTTPS連接過程以及中間人攻擊劫持 目前很多應用都用webview加載H5頁面,如果服務端采用的是可信CA頒發的證書,在 webView.setWebViewClient(webviewClient) 時重載 WebViewClient的onReceivedSslError() ,如果出現證書錯誤,直接調…

Cookie、cookie使用方法

Cookie、cookie使用方法、保存用戶名密碼 //設置Cookie,//cname 獲取時所需參數//username,password 用于記住賬號密碼,如果只要存一個參數 password為空即可//exdays 設置過期參數 設為負數即可刪除(如-1)function setCookie(c…

RUNOOB python練習題12 找素數問題

用來練手的python 練習題,原鏈接 : python練習實例12 題干 : 判斷101-200之間有多少個素數,并輸出所有素數 源代碼如下: import numpy as np bound np.arange(101,201,1) result np.array([]) for k in bound:for i in range(k):# 如果k存在不是1或…

Linux: centOS6.5 RabbitMQ

在大多數大公司,像應用服務器軟件的安裝、部署都是運維的事情,其實自己去嘗試部署一下,也是有收獲的。 有機會正好嘗試了Linux下的rabbitMq安裝過程,做了記錄,希望有用到的人可以做下參考。 安裝環境: Li…

RUNOOB python練習題13 水仙花數

用來練手的python 練習題其十三,原鏈接 : python練習實例13 題干 : 打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等于該數本身。例如:153是一個"水仙花數",…

OsharpNS輕量級.net core快速開發框架簡明入門教程-代碼生成器的使用

OsharpNS輕量級.net core快速開發框架簡明入門教程 教程目錄 從零開始啟動Osharp 1.1. 使用OsharpNS項目模板創建項目 1.2. 配置數據庫連接串并啟動項目 1.3. OsharpNS.Swagger使用實例(登錄和授權) 1.4. Angular6的前端項目啟動Osharp代碼生成器的使用 2.1 生成器的使用 2.2 生…

RUNOOB python練習題 14

用來練手的python 練習題其十四,原鏈接 : python練習實例14 題干 : 將一個正整數分解質因數。例如:輸入90,打印出90233*5。 拿到題目,我們就可以看出,首先我們需要一個函數來判斷某一正整數是否為質數,然后還需要一個…

關于作者

北京某公司滲透工程師 Web滲透、PHP/Java代碼審計、安全研究 想換一份工作,求推薦。轉載于:https://www.cnblogs.com/dgjnszf/p/10779097.html

centos7通過yum安裝JDK1.8

安裝之前先檢查一下系統有沒有自帶open-jdk 命令: rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果沒有輸入信息表示沒有安裝。 如果安裝可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸載所有帶有Java的文件 這句命令的關鍵字是j…

一個電腦的重裝到java開發環境安裝配置的全過程

剛拿到一臺別人用過的電腦。看著c盤爆滿,而且用了還是windows7操作系統,強迫癥發作馬上就準備重裝系統。 之前換固態使用wepe制作U盤啟動盤裝系統的步驟和過程全部忘記的,賊尷尬。 同事都看不過眼了 使用UltraISO這個軟件幫我做了U盤啟動盤 …

RUNOOB python練習題17

用來練手的python 練習題其十三,原鏈接 : python練習實例17 題干 : 輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數 這個例題讓我回憶起了遠古的記憶,python str類的 isalpha,isspace,isdigit方法。這些方法通過比較ASC…

Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平臺

Centos7下使用ELK(Elasticsearch Logstash Kibana)搭建日志集中分析平臺 日志監控和分析在保障業務穩定運行時,起到了很重要的作用,不過一般情況下日志都分散在各個生產服務器,且開發人員無法登陸生產服務器&#xf…

疊數的加法與字符串 RUNOOB python練習題 18

用來練手的python 練習題其十八,原鏈接 : python練習實例18 題干: 求saaaaaaaaaaaa…a的值,其中a是一個數字。例如222222222222222(此時共有5個數相加),幾個數相加由鍵盤控制 這種類型的疊數相加,讓我不禁聯想到了python中&…

wget在linux中安裝出現錯誤解決辦法

在使用wget命令報錯 certificate common name xxx doesnt match requestde host name,我們一般的解決辦法是查找下載地址,但是有時候更換地址也會發生錯誤, wget http://www.monkey.org/~provos/libevent-1.2.tar.gz 報如下錯: er…

linux下elasticsearch的安裝

首先安裝jdk 下載elasticsearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz 解壓 tar -zxvf elasticsearch-6.2.4.tar.gz 移動項目到/usr目錄下 mv elasticsearch-6.2.4 /usr 啟動es /usr/elasticsearch-6.4.2/bin/elastic…

RUNOOB python練習題19 找出1000以內的所有完數

用來練手的python 練習題,原鏈接 : python練習實例19 題干: 一個數如果恰好等于它的因子之和,這個數就稱為"完數"。例如61+2+3.編程找出1000以內的所有完數。 首先我們要理解,什么是完數。根據百度詞條&am…

金蝶學習網站

https //vip.kingdee.com/轉載于:https://www.cnblogs.com/RogerLu/p/10784498.html

Kibana linux下安裝

1、kibana簡介 Kibana是一個開源的分析與可視化平臺,設計出來用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的數據,使用各種不同的圖表、表格、地圖等kibana能夠很輕易地展示高級數據分析與可視化。 Kiban…