charles抓包原理

基础概念

1. CA

CA是证书颁发机构,不是随便什么人都能成为证书颁发机构,关键是你颁发的证书要别人认可。别人认可你才会内置你的证书(机构证书,也称根证书)。

2. TSL证书

TSL证书是指用于https通信,客户端验证服务端的合法性的一个数据包。

证书内容

服务提供者的基本信息和证书颁发机构和使用的算法和域名等+该服务的公钥+证书签名

证书签名怎么产生

服务提供者的基本信息先取hash,再用CA机构的私钥加密。

3. 根证书

CA机构的证书,客户端内置(最常见的就是浏览器厂商内置主流机构的证书)

4. 证书链

下级证书的签名是使用上级证书的私钥加密产生的,所以因为这个关联关系形成了一个链条。

5. 证书校验过程

step1 服务端发送自己的证书给客户端

step2 客户端读取证书颁发机构

step3 客户端找到本地对应机构的证书

step4 客户端那机构证书公钥解密服务器证书签名

step5 客户端拿证书信息作hash,与step4解密的内容对比,相等并且基本信息中的域名跟当前访问的域名一致则通过。

charles抓包原理

charles的根证书

charles自己做了一个根证书,你想要用charles抓包,第一步你要内置他发布的根证书。

charles伪造证书

charles用他自己的证书给你服务端的域名做一个证书。

charles作为中间人的流程

step1 拦截客户端请求

step2 发送他伪造的证书给客户端

step3 因为你内置了charles的根证书,所以该证书能校验通过

step4 客户端根charles协商好通信密码开始通信。

step5 charles收到客户端数据用伪造证书的私钥解密

step6 charles使用同样的流程跟你的服务器建立HTTPS加密通道

step7 charles将收到的客户端数据通过建好的通道发给服务器

step8 服务器返回响应数据给charles

step9 charles解密响应数据再加密发给客户端

相关推荐
比兔代理6 小时前
正向代理与反向代理技术辨析,为什么代理 IP 属于正向代理
服务器·网络·http·ip
Wang's Blog8 小时前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog8 小时前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
Ivanqhz8 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
骇客野人10 小时前
测试环境MySQL迁移Vastbase(海量数据库)完整改造与落地实施方案
运维·服务器
Wang's Blog11 小时前
Java 项目实战: 外卖平台-删除分类的关联校验与自定义业务异常
java·服务器·项目开发
zly350011 小时前
VMware Converter Standalone 物理机转化为虚拟机后源1硬盘变成了2个硬盘(2个硬盘文件)虚拟机无法启动。
linux·运维·服务器
学习中的码虫11 小时前
网络编程5
服务器·网络
GPU实战笔记12 小时前
本地跑不动 llama.cpp,临时租云 GPU 怎么搭?从启动服务到环境复用
java·服务器·网络·人工智能·深度学习·llama
Lsetea13 小时前
Nginx报No required SSL certificate was sent:mTLS客户端证书排查
运维·nginx·https·ssl·openssl