Android7以上抓包HTTPS

目录

  • 前言
  • 准备阶段
  • 证书转换
  • 遇到问题
  • 结果

前言

在问题解决之前试了各种方法,始终抓不到HTTPS的包,用魅蓝E2(Android6)安装了FD的证书后测试,没问题,用红米Note7(Android9)就不行。后来才发现原来Android9版本不信任用户的证书(在Android7以上都是)。
所以为了解决该问题
1、用Android6以下版本的手机抓包 。
2、把证书安装到系统里(需要ROOT)。

准备阶段

  1. 首先需要安装openssl,点击下载
  2. 打开Fiddler,依次点击Tools–Options–HTTPS–Actions–Export Root Certificate to Desktop,证书就会导出到桌面。

证书转换

系统证书的目录是在/system/etc/security/cacerts中,可以看到文件都是以十六进制加.0结尾的,为了让系统信任该证书,就要转换成系统能识别的文件。
1、先把证书(FiddlerRoot.cer)复制到OpenSSL-Win32\bin里,然后在空白处按住SHIFT键,右键鼠标,选择“在此处打开命令窗口”。
Android7以上抓包HTTPS_第1张图片
2、在打开的命令行中粘贴并执行命令
openssl x509 -inform der -subject_hash_old -in FiddlerRoot.cer
Android7以上抓包HTTPS_第2张图片
3、会得到一个8位的十六进制串,然后再执行
openssl x509 -inform der -text -in FiddlerRoot.cer -out e5c3944b.0
能被系统识别的证书文件就出来了,然后再把它移动到系统证书目录/system/etc/security/cacerts中,重启手机。

遇到问题

我重启手机后,发现HTTPS还是没有被成功解密,说明证书文件并没有成功被信任??
然后我用记事本打开了生成好的证书文件,发现是这样的
Android7以上抓包HTTPS_第3张图片
然后我在手机上随便打开了一个系统证书文件,发现是这样的
Android7以上抓包HTTPS_第4张图片
对比了文件的差别后,发现-----BEGIN CERTIFICATE-----开始到-----END CERTIFICATE-----应该在文件的最开头,但使用openssl生成的顺序相反,所以我手动把顺序调换了一下,替换原来的证书文件,再次重启手机。

结果

果然,成功了,查看系统证书列表
Android7以上抓包HTTPS_第5张图片
没错了,就是它。再次打开FD进行抓包后,之前没有显示的HTTPS已经能显示了,当然,并不是所有的HTTPS都显示了,没有进行ssl-pinning的HTTPS都抓到了,这个问题我暂时还没解决,试了用太极+JustTrustMe不行,不知道是什么原因。

你可能感兴趣的:(Android7以上抓包HTTPS)