Android 9.0 https 抓包
2019-05-10 本文已影响323人
大发明家达文西
由于新安全机制,系统不再信任用户安装的证书,解决方案无非两种:
- 修改apk包,增加 network_security_config.xml 配置文件
- 把 charles 或 brupsuit 的证书塞入系统中
这里我选择第二种方法,更安全隐蔽,并且一劳永逸
具体证书转换的方法网络上已经到处都是,这里简述一下,以crt格式为例(其他格式自行查找转换方法):
- openssl x509 -inform PEM -subject_hash_old -in CA_Name.crt | head -1
得到类似字符串:9a5ba575 - cat CA_Name.crt(或者CA_Name.cer) > 9a5ba575.0
- openssl x509 -inform PEM -text -in CA_Name.crt -out /dev/null >> 9a5ba575.0
- 把生成好的文件放入 /system/etc/security/cacerts 目录下
注意,这里有个坑点,我的手机是Pixel 1刷的Lineage OS,第一步命令的参数 -subject_hash_old 在 Android 6.0时是有效的,然而在本测试机却无效。在使用 -subject_hash_old 参数生成第一个证书文件后,还需要再使用 -subject_hash 生成第二个证书文件。
最神奇的是这两个证书文件需要同时放入/cacerts 目录下,缺一不可,我之前测试的时候只放了第一个或第二个都没办法抓包。
- 重启手机,如果生成的文件正确,可以在 信任的凭据 -> 系统 中找到如下 brupsuit 的证书
certs.png