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证书:

  1. 在你的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
  2. 在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="user"/>//信任用户自己安装的证书
            </trust-anchors>
        </domain-config>
    </network-security-config>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

解决办法 二:

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

  1. 在你的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
  2. 在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="@raw/证书文件名"/>
            </trust-anchors>
        </domain-config>
    </network-security-config>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  3. 在res目录下新建一个raw文件夹,将手机上安装的证书文件放入res/raw/目录下,证书格式:pem,ca等(chales的话就是将你在手机浏览器打开http://charlesproxy.com/getssl下载的证书放入即可),步骤2中的证书文件名,就是你放入res/raw/目录下文件的名字

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

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

转载:https://blog.csdn.net/mrxiagc/article/details/75329629

原文地址:https://www.cnblogs.com/c-x-a/p/9070052.html

时间: 2024-10-25 11:53:49

Charles Android 抓包失败SSLHandshake: Received fatal alert: certificate_unknown的相关文章

解决:推送iOS Invalid certificate chain (Received fatal alert: certificate_unknown)!

Invalid certificate chain (Received fatal alert: certificate_unknown)! 是由于导证书的时候 导的是产品推送的钥匙串.p12而不是 Apple Production IOS Push Services:XXX 的.p12 切记选择导出证书的时候保证推送证书的p12而不是钥匙串的 正确的导出方式: 错误的导出方式: 转自:http://segmentfault.com/a/1190000000376953

HttpCanary——最强Android抓包工具!

迎使用HttpCanary——最强Android抓包工具! HttpCanary是一款功能强大的HTTP/HTTPS/HTTP2网络包抓取和分析工具,你可以把他看成是移动端的Fiddler或者Charles,但是HttpCanary使用起来更加地简单容易,因为它是专门为移动端设计的!

Android抓包方法(转)

Android抓包方法(转) 作者:Findyou 地址:http://www.cnblogs.com/findyou/p/3491014.html 前言: 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 不管是之前做HTML5手机项目测试,还是现在的企邮app测试,经常需要抓包,做前端开发基本第一时间会想到Fiddler,的确Fiddler比较强大方便,本文主要以Android手机为例介绍通过Fiddler抓手机数据包,Ipho

IDEA中用Maven创建webapp项目失败(没有src等文件目录) 报错: Received fatal alert: protocol_version 解决方法

具体步骤: 1.首先,给maven的运行时添加一个配置:-Dhttps.protocols=TLSv1.2,如下图 2.创建project或module 3.选择webapp模板的时候,要用下面的maven那个,而不要用上面coco这个. 3.剩下就是正常流程化的东西了,不多赘述了. 创建完的web项目结构: 说明一下原因: 由于TLSv1.1 协议不安全, 出于PCI 安全标准的原因, 从2018-06-18起, maven Sonatype 中央仓库不再支持 TLSv1.1 以及以下的协议版

Eclipse4.6安装Tomcat插件时报错:Unable to read repository at http://tomcatplugin.sf.net/update/content.xml. Received fatal alert: handshake_failure

错误如下: Unable to read repository at http://tomcatplugin.sf.net/update/content.xml.Received fatal alert: handshake_failure 由于使用的是Eclipse4.6.3,导致安装时提示不能安装此插件,解决方法如下: 1.网络问题,使用VPN. 2.挂载了VPN之后再拖动一次这个按钮到Eclipse中: 此时基本正常,按[Confirm]进行确认. 3.如果实在不行就手动安装.下面为手动安

转:javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 解决方案

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 解决方案 这个是jdk导致的,jdk里面有一个jce的包,安全性机制导致的访问https会报错,官网上有替代的jar包,换掉就好了 目录 %JAVA_HOME%\jre\lib\security里的local_policy.jar,US_export_policy.jar JDK7 http://www.oracle.com/technetwo

【原创】经验分享(10)Could not transfer artifact org.apache.maven:maven. from/to central. Received fatal alert: protocol_version

maven编译工程报错 [ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:add-source (scala-compile-first) on project trade: Execution scala-compile-first of goal net.alchim31.maven:scala-maven-plugin:3.2.2:add-source failed: Plugin net.

SSL/TLS的Handshake过程与javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure异常

转载自http://blog.csdn.net/taiyangdao/article/details/54707184 一.SSL/TLS的Handshake过程 在SSL/TLS的Handshake过程中,客户端与服务器之间需要交换参数,具体过程如下: 客户端提供其所支持的各种cipher suites(包含加密算法和Hash函数) 服务器从中选择自己也支持的cipher suite,并通知客户端,表明两者将以此进行数据传输 服务器同时将自己的数字证书(包括服务器名称.CA和公钥)作为标识符发

charles iPhone抓包步骤

一.安装charles 30天试用 ps.可以去xclient.info搜索 charles(支持正版) 二.配置参考:抓包工具Charles的试用心得 三.证书安装 1.mac证书安装 参考:抓包工具Charles乱码解决办法 中的证书安装 https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/ 中有相关说明   启动 Charles 软件,在菜单中找到 Help -> SSL Proxying ->