文档中心
Charles鎶撳寘绁炲櫒鎵嬫妸鎵嬫暀浣犲鍑篠SL璇佷功(鍚疄鎴樻渚?
时间 : 2025-09-27 15:43:17浏览量 : 3

作为一名网络安全工程师,我经常需要使用Charles等抓包工具分析HTTPS流量。今天我要分享的是一个非常实用的技巧 - 如何从Charles导出SSL证书。这个操作看似简单,但在实际渗透测试和漏洞挖掘中能发挥重要作用。
一、为什么要导出Charles的SSL证书?
想象一下这样的场景:你正在测试一个金融类APP,发现它使用了证书固定(Certificate Pinning)技术。这意味着即使你在手机上安装了Charles的根证书,APP也会拒绝与"不认识的"Charles建立安全连接。这时就需要:
1. 导出目标服务器的原始SSL证书
2. 用Charles的证书替换其中的公钥
3. 重新打包证书后导入手机
这样APP就会认为是在与"可信"服务器通信,而实际上流量正通过Charles代理。
真实案例:2025年某银行APP漏洞挖掘中,安全团队就是通过这种方法绕过了证书固定保护,发现了关键API未授权访问漏洞。
二、详细导出步骤(图文版)
方法1:从已捕获的HTTPS会话导出
1. 启动Charles并访问目标网站(比如https://example.com)
2. 在左侧会话列表找到对应的HTTPS请求
3. 右键点击 → Save SSL Certificates...
4. 选择保存位置(默认会保存为PEM格式)

*小技巧*:如果看不到HTTPS请求内容(显示为乱码),说明需要先安装Charles根证书到你的信任库。
方法2:直接从Charles根证书派生
```
菜单栏 → Help → SSL Proxying → Save Charles Root Certificate...
这会导出Charles的根证书(通常用于安装到手机或浏览器)
三、实战应用场景
场景1:移动端渗透测试
我在测试某电商APP时发现:
1. APP使用了双向TLS认证(mTLS)
2. 服务器端会验证客户端提供的证书
3. 通过导出服务器证书后分析发现:
- 证书中包含了关键的API域名信息
- OCSP响应暴露了内部域名结构
- 最终通过这些信息发现了未文档化的管理后台
场景2:漏洞挖掘中的中间人攻击
2025年某CVE漏洞挖掘过程:
1. 目标系统使用自定义CA签发客户端证书
2. 通过Charles导出服务器证书后:
- 使用openssl分析发现弱签名算法(SHA1WithRSA)
- CA私钥长度只有1024位
- 最终实现了伪造客户端证书绕过认证
```bash
openssl x509 -in exported.crt -text -noout
四、安全防护建议
作为防御方,应该如何防范这类技术被滥用?
1. 强化Certificate Pinning实现
- Google推荐使用Network Security Configuration
- iOS端应采用ATS严格模式
示例Android配置:
```xml
2. 定期轮换服务器证书
- AWS ACM等云服务可设置自动轮换
- Let's Encrypt建议90天有效期策略
3. 监控异常CA使用情况
```sql
-- SIEM检测规则示例
SELECT * FROM ssl_certs
WHERE issuer_cn LIKE '%Charles%'
AND event_time > NOW() - INTERVAL '1 hour'
```
五、高级技巧扩展
对于安全研究人员,还可以:
1. 批量导出多域名证书
使用Charles的Map Remote功能配合脚本自动化处理
2. 解码预埋证书
某些APP会将CA公钥硬编码在资源文件中:
```java
// Android代码片段示例
KeyStore ks = KeyStore.getInstance("BKS");
InputStream in = context.getResources().openRawResource(R.raw.cert);
3. 与Burp Suite联动
将导出的PEM格式转换为DER供Burp使用:
```bash
openssl x509 -outform der -in charles.pem -out burp.crt
希望这篇技术分享对你有帮助!在实际工作中运用这些技巧时,请务必遵守法律法规和道德准则。如果你有更多关于SSL/TLS分析的问题,欢迎留言讨论。
TAG:charles ssl 证书导出,ssl证书怎么导入,如何导出ssl证书,ssl证书cer获取crt及key,ssl证书导入,charles