前提:

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 studio 60音乐播放器 下载音乐
  2. android 界面常亮设置
  3. 从android image中提取文件
  4. vlc for android 官网sample使用
  5. Android保存文件到手机
  6. android的几种默认路径
  7. android 读取ini文件
  8. android上传文件到服务器
  9. android文件操作工具类

随机推荐

  1. Android(安卓)计算控件尺寸
  2. 2019-02-19 更新Android(安卓)Studio
  3. Android(安卓)4.1打开相机(自己写的压力测
  4. Android(安卓)-- Canvas java.lang.Unsup
  5. android studio-2013.7.4
  6. android广播总结
  7. Linux Out of memory error
  8. Android中关于setTitle(CharSequence tit
  9. 安卓编译环境设置
  10. Android切换主题