前言

安装夜神模拟器后,打开charles抓包,还是抓取不到,用浏览器打开网站还是显示证书不受信任。原因:Android7.0 之后默认不信任用户添加到系统的CA证书。

操作步骤

电脑抓包

简单过一遍charles抓包,抓电脑的很简单,打开电脑,配置代理端口,默认8888,可以修改的,在菜单栏找到Proxy。

charles 手机如何信任证书 安卓手机charles安全证书信任_charles 手机如何信任证书

修改你想要的端口

charles 手机如何信任证书 安卓手机charles安全证书信任_charles 手机如何信任证书_02

 

 再找到这个,添加两个,*:443,*:*,443是https的端口号,表示可以抓取https协议的包。保存后就是把Charles的证书放到电脑的根证书信任栏里(手机的步骤也差不多)

charles 手机如何信任证书 安卓手机charles安全证书信任_服务器_03

直接install,然后无脑下一步放到根证书信任里面就行。 

charles 手机如何信任证书 安卓手机charles安全证书信任_运维_04

 电脑到这里就行了,打开百度,看可不可以抓到包。

手机抓包

手机抓包一个是要把让电脑和手机出于同一个网络(模拟器),最简单连同一个wife,然后打开模拟器,找到设置,找到连接wife(长按)的,把代理改成手动,填写电脑的ip(直接cmd那里ipconfig)找到ipv4的,或者直接点charles也可以查看

charles 手机如何信任证书 安卓手机charles安全证书信任_运维_05

直接点这里可以看到ip

charles 手机如何信任证书 安卓手机charles安全证书信任_运维_06

 

配置好后打开模拟器的浏览器,输入地址:http://chls.pro/ssl ,进行证书安装下载。

charles 手机如何信任证书 安卓手机charles安全证书信任_运维_07

 

那个夜神模拟器有点毛病,出现那个证书不信任画面,多点几次就能把这个页面关了 ,在输入网址就能安装证书了,装好后可以在这里看到证书。在设置安全信任的凭据那里,有个CA证书管理

charles 手机如何信任证书 安卓手机charles安全证书信任_运维_08

 重点来了

Android7.0后证书不信任,要用到两个工具,一个是openssl,一个MT管理器(获得安卓系统的超级管理员权限,有些用adb命令推不进夜神模拟器里)

openssl是为了把从charles下载的pem证书(或者cer证书也行,两个证书有对应的转换命令)

charles 手机如何信任证书 安卓手机charles安全证书信任_服务器_09

点这个,可以选择格式保存的,有pem,有cer,这里无所谓。主要是把这个文件转换成一个xxxxx.0,的文件,再把这个文件丢到模拟器安卓系统的 存放证书的路径下

charles 手机如何信任证书 安卓手机charles安全证书信任_charles 手机如何信任证书_10

openssl下载:window下载地址:https://slproweb.com/products/Win32OpenSSL.html(记得安装好配置环境变量) 

MT下载地址;链接:https://pan.baidu.com/s/1PDpXhGcwRJUcn0b4QhgTCQ?pwd=8o6k 
提取码:8o6k

圈起来要考的

在把openssl配置环境变量后,打开cmd窗口,有两条命令,如果上一步下载的是cer文件,就运行这条命令,

openssl x509 -inform DER -subject_hash_old -in a.cer(要先进入证书所在的盘符,我的在d盘,还有证书下载下来会在上一级目录【下下来找了半天没找到】,又百度了一下,) 

charles 手机如何信任证书 安卓手机charles安全证书信任_抓包_11

 红色圈起来就是我们一会命名需要用到的,后缀名的数字是为了防止文件名冲突的,比如如果两个证书算出的Hash值是一样的话,那么一个证书的后缀名数字可以设置成0,而另一个证书的后缀名数字可以设置成1,一会设后最为0

如果下下来的是pem,用这条命令,openssl x509 -inform PEM -subject_hash_old -in a.pem

 这一步只是为了得到文件的hash值,载运行一条命令把他转换成一个以hash.0的文件,还是一样,下的证书格式是cer运行cer版的命令,下的是pem运行pem版的命令。

charles 手机如何信任证书 安卓手机charles安全证书信任_charles 手机如何信任证书_12

openssl x509 -inform DER -text -in a.cer > 01d5de4f.0,这个01d5de4f是上面计算的hash值,然后你就能得到一个01d5de4f.0文件,

charles 手机如何信任证书 安卓手机charles安全证书信任_charles 手机如何信任证书_13

用记事本打开,看到如下:

charles 手机如何信任证书 安卓手机charles安全证书信任_服务器_14

 

在Certificate上面加上刚才解析出来的东西

charles 手机如何信任证书 安卓手机charles安全证书信任_运维_15

 

从begin 黏贴到下面

charles 手机如何信任证书 安卓手机charles安全证书信任_运维_16

保存后基本就成功了,接下来就是把这个.0的文件丢到手机安卓系统放证书的地方,也就是 

 

charles 手机如何信任证书 安卓手机charles安全证书信任_charles 手机如何信任证书_10

charles 手机如何信任证书 安卓手机charles安全证书信任_后缀名_18

 

charles 手机如何信任证书 安卓手机charles安全证书信任_服务器_19

 直接拖进去,至于在拖到了哪个位置,自己摸索一下,然后把文件丢到那个放证书的位置后,要把这个.0的文件改为777,长按文件,属性,把读写执行权限都勾了,然后点开模拟器浏览器,就不会弹出不信任证书,就可以愉快的抓包了。