使用Charles遇到的问题

使用Charles遇到的问题

问题1:证书检验不通过

错误: Cause: unable to find valid certification path to requested target

使用命令行报的详细错误: Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

​ at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394)

​ at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.upgrade(DefaultHttpClientConnectionOperator.java:185)

​ at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.upgrade(PoolingHttpClientConnectionManager.java:369)

​ at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:415)

​ at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)

​ at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)

​ at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)

​ at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)

​ at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)

​ at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)

​ at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:149)

​ at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:127)

​ at org.gradle.internal.resource.transport.http.HttpClientHelper.executeGetOrHead(HttpClientHelper.java:104)

​ at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:95)

原因: 设置了SSL Proxying里的include项为*: *,导致Charles抓取了所有网址的数据,导致证书验证不通过,如下图:
在这里插入图片描述

解决方案: 在SSL Proxying里的exclude项将远程地址添加进去,远程地址如下:

https://jcenter.bintray.com

https://jitpack.io

https://repo1.maven.org

https://maven.aliyun.com

https://dl.google.com
在这里插入图片描述

问题2:抓取Https包乱码

错误: 如下图示例
在这里插入图片描述

原因: 未安装证书

解决方案:

  1. 安装本地证书,以Mac为例,步骤如下:
    1. Help -> SSL Proxying -> Install Charles Root Certificate,如图
      在这里插入图片描述
    2. 找到CharlesProxy的证书,在信任加密套接字协议层(SSL)项下拉选择始终信任,如图
      在这里插入图片描述
  2. 将证书安装到手机上
    1. 方法1,步骤如下:
      1. Help->SSL Proxying->Install Charles Root Certificate …Browser,然后弹出如下弹窗:
        在这里插入图片描述
      2. 在手机已经连接代理的情况下,在浏览器中输入chls.pro/ssl,然后将证书下载到本地,再进行安装。
    2. 方法2,步骤如下:
      1. Help->SSL Proxying->Save Charles Root Certificate… 将证书下载到本地,再将证书传输到手机上,再进行安装。
发布了40 篇原创文章 · 获赞 17 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章