前提:

Android使用Charles抓取Https请求的报文时,Android和Charles都正确安装了证书之后出现抓包失败,报错SSLHandshake: Received fatal alert: certificate_unknown,如下图所示:

原因:

安卓7之后调整了安全策略会导致部分手机抓包失败,请参考此链接:https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html

文中提到默认情况下,针对API Level 24及更高版本的应用程序不再信任用户或管理员添加的CA用于安全连接。意思就是就算你在手机上安装了受信任的证书也是没卵用的。

解决办法 一:

前提你的手机上已经正确安装了Charles证书:

  1. 在你的AndroidManifest.xml文件中添加如下配置:

    <?xml version="1.0" encoding="utf-8"?>    ...
  2. 在res目录下新建一个xml文件夹,之后在res/xml/路径下新建文件network_security_config.xml

    res/xml/network_security_config.xml:

    <?xml version="1.0" encoding="utf-8"?>                    你要抓取的域名                //信任用户自己安装的证书            

解决办法 二:

手机上是否有装证书都可以使用下面的方法:

  1. 在你的AndroidManifest.xml文件中添加如下配置:

    <?xml version="1.0" encoding="utf-8"?>    ...
  2. 在res目录下新建一个xml文件夹,之后在res/xml/路径下新建文件network_security_config.xml

    res/xml/network_security_config.xml:

    <?xml version="1.0" encoding="utf-8"?>                    你要抓取的域名                            
  3. 在res目录下新建一个raw文件夹,将手机上安装的证书文件放入res/raw/目录下,证书格式:pem,ca等(chales的话就是将你在手机浏览器打开http://charlesproxy.com/getssl下载的证书放入即可),步骤2中的证书文件名,就是你放入res/raw/目录下文件的名字

配置完重新运行项目,就可以看到报文了!

更多配置方法请参考Google-Android

更多相关文章

  1. Android(安卓)中的MimeType与MimeTypeMap
  2. android 屏幕适配
  3. Android之NDK开发
  4. Android高手进阶教程(七)之----Android(安卓)中Preferences的使
  5. android selector 背景选择器
  6. Android中的File文件存储及读取file中的Bitmap
  7. Android创建隐藏文件或者文件夹
  8. Android之NDK开发
  9. android 静音与振动

随机推荐

  1. Android: NDK编程
  2. [置顶] 历时一年,我的著作《第一行代码—
  3. Android百度地图HelloWorld运行异常处理
  4. 34.如何获取app(apk和ipa)中的资源
  5. android中在Layout布局文件中添加控件ID,
  6. Android开机广播无效问题(手机Root后)
  7. Android色彩矩阵——ColorMatrix
  8. Android(安卓)实现沉浸式状态栏
  9. 【腾讯bugly干货】关于 Android(安卓)N
  10. Android学习系列(4)--App自适应draw9patc