Charles Android 抓包失败SSLHandshake: Received fatal alert: certificate_unknown
观书散遗帙,探古穷至妙。这篇文章主要讲述Charles Android 抓包失败SSLHandshake: Received fatal alert: certificate_unknown相关的知识,希望能为你提供帮助。
前提:
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证书:
- 在你的AndroidManifest.xml文件中添加如下配置:
< ?xml version="1.0" encoding="utf-8"?> < manifest ... > < application android:networkSecurityConfig="@xml/network_security_config" ... > ... < /application> < /manifest>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 在res目录下新建一个xml文件夹,之后在res/xml/路径下新建文件network_security_config.xml
res/xml/network_security_config.xml:
< ?xml version="1.0" encoding="utf-8"?> < network-security-config> < domain-config> < domain includeSubdomains="true"> 你要抓取的域名< /domain> < trust-anchors> < certificates src="https://www.songbingjia.com/android/user"/> //信任用户自己安装的证书 < /trust-anchors> < /domain-config> < /network-security-config>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
手机上是否有装证书都可以使用下面的方法:
- 在你的AndroidManifest.xml文件中添加如下配置:
< ?xml version="1.0" encoding="utf-8"?> < manifest ... > < application android:networkSecurityConfig="@xml/network_security_config" ... > ... < /application> < /manifest>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 在res目录下新建一个xml文件夹,之后在res/xml/路径下新建文件network_security_config.xml
res/xml/network_security_config.xml:
< ?xml version="1.0" encoding="utf-8"?> < network-security-config> < domain-config> < domain includeSubdomains="true"> 你要抓取的域名< /domain> < trust-anchors> < certificates src="https://www.songbingjia.com/android/@raw/证书文件名"/> < /trust-anchors> < /domain-config> < /network-security-config>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 在res目录下新建一个raw文件夹,将手机上安装的证书文件放入res/raw/目录下,证书格式:pem,ca等(chales的话就是将你在手机浏览器打开http://charlesproxy.com/getssl下载的证书放入即可),步骤2中的证书文件名,就是你放入res/raw/目录下文件的名字
更多配置方法请参考Google-Android
【Charles Android 抓包失败SSLHandshake: Received fatal alert: certificate_unknown】转载:https://blog.csdn.net/mrxiagc/article/details/75329629
推荐阅读
- 转载快速理解android View的测量onMeasure()与MeasureSpec
- 下载必要的android sdk
- 安卓GreenDao(基础)
- Application.Exit()结束程序,但线程还在的解决方法。
- SpringBoot application.proerties基本配置
- BAT大牛 带你深度剖析Android 10大开源框架
- 关于开发视频直播社交APP小型直播平台搭建问题探讨
- WinXP停止服务怎样办?
- WinXP如何设置IE为默认浏览器?设置默认浏览器的办法