软件测试|HTTPS 原理以及fiddler解密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 软件测试|HTTPS 原理以及fiddler解密

https原理

HTTPS是通过一次非对称加密算法(如RSA算法)进行了协商密钥的生成与交换,然后在后续通信过程中就使用协商密钥进行对称加密通信。

图一 https请求全过程

证书以及fiddler根证书

什么是CA

CA是Certificate Authority的缩写,也叫“证书授权中心”。它是负责管理和签发证书的第三方机构,CA必须是所有行业和所有公众都信任的、认可的,具有足够的权威性。

什么是CA证书

CA 证书,顾名思义,就是CA颁发的证书。

什么是证书之间的信任关系?

就是用一个证书来证明另一个证书是真实可信滴。

什么是证书信任链?

实际上,证书之间的信任关系,是可以嵌套的。比如,C 信任 A1,A1 信任 A2,A2 信任 A3......这个叫做证书的信任链。只要你信任链上的头一个证书,那后续的证书,都是可以信任滴。

什么是根证书?

“根证书”即“root certificate”,假设 C 证书信任 A 和 B;然后 A 信任 A1 和 A2;B 信任 B1 和 B2。则它们之间,构成如下的一个树形关系(一个倒立的树)。

处于最顶上的树根位置的那个证书,就是“根证书”。除了根证书,其它证书都要依靠上一级的证书,来证明自己。那谁来证明“根证书”可靠捏?实际上,根证书自己证明自己是可靠滴(或者换句话说,根证书是不需要被证明滴)。

聪明的同学此刻应该意识到了:根证书是整个证书体系安全的根本。所以,如果某个证书体系中,根证书出了问题(不再可信了),那么所有被根证书所信任的其它证书,也就不再可信了。这个后果是相当相当滴严重(简直可以说是灾难性的)。

证书有啥用?

验证网站是否可信(针对HTTPS)
验证某文件是否可信(是否被篡改)

图二 fiddler导出的根证书

fiddler解密https

1

https 证书校验

再看图一,步骤3,如何进行校验?

数字签名的加密过程: 证书内容的hash值,再用私钥加数。

字签名解密: 使用公钥解密,获得hash值。

证书校验: 客户端解密数字签名获得证书hash值,以及将证书内容重新hash计算一次,对比结果是否一致。(个人理解这里有个假设是,客户端获取到的公钥一定是正确的,不可能被篡改的)。

2

fiddler解密https原理

第一步,Fiddler截获客户端发送给服务器的HTTPS请求,Fiddler伪装成客户端向服务器发送请求进行握手 。

第二步,服务器发回响应,Fiddler获取到服务器的CA证书, 用根证书公钥进行解密, 验证服务器数据签名, 获取到服务器CA证书公钥。然后Fiddler伪造自己的CA证书, 冒充服务器证书传递给客户端浏览器。

第三步,与普通过程中客户端的操作相同,客户端根据返回的数据进行证书校验、生成密码Pre_master、用Fiddler伪造的证书公钥加密,并生成HTTPS通信用的对称密钥enc_key。

第四步,客户端将重要信息传递给服务器, 又被Fiddler截获。Fiddler将截获的密文用自己伪造证书的私钥解开, 获得并计算得到HTTPS通信用的对称密钥enc_key。Fiddler将对称密钥用服务器证书公钥加密传递给服务器。

第五步,与普通过程中服务器端的操作相同,服务器用私钥解开后建立信任,然后再发送加密的握手消息给客户端。

第六步,Fiddler截获服务器发送的密文, 用对称密钥解开, 再用自己伪造证书的私钥加密传给客户端。

第七步,客户端拿到加密信息后,用公钥解开,验证HASH。握手过程正式完成,客户端与服务器端就这样建立了“信任”。

非对称加密和数字签名的区别:非对称加密 用的是接收方的公钥进行数据加密的,密文到达对方后也是通过接收方自己的私钥进行解密,还原成明文,整个数据加密和解密过程用的都是接收方的密钥;而数字签名则完全相反,是通过发送方的私钥进行数据签名的,经签名的数据到达接收方后也是通过事先告知接收方的发送方的公钥进行解密,整个数据签名和解密的过程用的都是发送方的密钥。

Fiddler抓取HTTPS协议成功的关键

是根证书,这是一个信任链的起点,这也是Fiddler伪造的CA证书能够获得客户端和服务器端信任的关键。也就是移动端要信任fiddler下发的根证书。

Fiddler抓取HTTPS,安卓端的设置

1、抓取安卓浏览器的https包:

浏览器中输入PC端ip加fiddler代理端口如:10.18.101.10*:8888,然后网页中点击下载FiddlerRoot.cer证书,并安装(一般手机设置-->安全→安装证书或凭证)。然后fiddler设置如下即可:

2、抓取安卓应用的https数据包

需要在安卓应用中将FiddlerRoot.cer证书加信任,才可解密。

3、如何获取证书中的公钥

①.APP中信任证书一般将获取证书公钥的base64(sha256(publicKey)),所以首先导出根证书:

②.转换文件格式

③.使用工具OpenSSL从cer文件中获取公钥的base64(sha256(publicKey))

OpenSSL包含一个命令行工具用来完成OpenSSL库中的所有功能,cmd中输入命令:

openssl x509 -in cert.cer -pubkey -noout -inform der | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

相关文章
|
26天前
|
安全 算法 网络安全
HTTPS原理
HTTPS 通过加密、数字证书、握手过程等多种手段,确保了网络通信的安全和可靠。它为用户提供了更高级别的隐私保护和数据安全,是现代互联网中重要的安全保障机制。随着网络安全威胁的不断增加,HTTPS 的应用也越来越广泛,成为保障网络安全的重要基石。
120 70
|
1月前
|
安全 算法 网络安全
一张图就把HTTPS工作原理讲明白了!
【10月更文挑战第31天】
54 1
一张图就把HTTPS工作原理讲明白了!
|
3月前
|
芯片
LDO的原理及测试方法
一、基本结构 这是LM317芯片的核心,这个电路单元称为Bandgap Reference带隙基准源。属于模拟集成电路中的经典电路结构。 LDO拓扑结构图 常见的基本结构 利用VBE的负温度系数,而VT是正温度系数,正负温度系数抵消就的得到稳定的基准参考电压了(三极管的方程VBE=VT*In(lC/IS))。 二、测试意义 了解集成电路的内部结构对测试有意义么? 1、了解内部结构,才能更好的理解测试原理或者设计测试方案2、可以学习提升对电路结构的理解能力。 针对LM317,了解了内部简单原理,可以知道1、内部结构设计针对的是温度系数,因此可能受温度的影响,实际也是会受到温度的影
188 88
|
26天前
|
安全 算法 网络协议
网易面试:说说 HTTPS 原理?HTTPS 如何保证 数据安全?
45岁老架构师尼恩在其读者交流群中分享了关于HTTP与HTTPS的深入解析,特别针对近期面试中常问的HTTPS相关问题进行了详细解答。文章首先回顾了HTTP的工作原理,指出了HTTP明文传输带来的三大风险:窃听、篡改和冒充。随后介绍了HTTPS如何通过结合非对称加密和对称加密来解决这些问题,确保数据传输的安全性。尼恩还详细解释了HTTPS的握手过程,包括如何通过CA数字证书验证服务器身份,防止中间人攻击。最后,尼恩强调了掌握这些核心技术的重要性,并推荐了自己的技术资料,帮助读者更好地准备面试,提高技术水平。
|
2月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
45 1
|
3月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
54 2
|
3月前
|
安全 网络安全 数据安全/隐私保护
https的原理
https的原理
67 2
|
5月前
|
JSON 网络协议 安全
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
【7月更文挑战第16天】本文介绍了HTTP和HTTPS协议的基本概念与作用,强调了理解HTTP协议对使用抓包工具Fiddler的重要性。HTTP是用于Web浏览器与服务器间信息传输的协议,不加密,易被截取,不适合传输敏感信息。HTTPS是HTTP的安全版,通过SSL/TLS提供加密和服务器身份验证,确保数据安全。HTTP请求包括请求行、请求头、空行和可选的请求主体,响应则有响应行、响应头、空行和响应主体。HTTP协议无状态,而HTTPS解决了安全性问题,但也带来了额外的计算开销。Fiddler作为一个强大的抓包工具,可以帮助开发者和测试人员分析HTTP/HTTPS通信,理解请求和响应的结构。
87 4
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
|
4月前
|
安全 算法 网络协议
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
54 2
|
4月前
Fiddler——This is a CONNECT tunnel, through which encrypted HTTPS traffic flows
Fiddler——This is a CONNECT tunnel, through which encrypted HTTPS traffic flows
48 0
Fiddler——This is a CONNECT tunnel, through which encrypted HTTPS traffic flows
下一篇
DataWorks