使用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抓取了所有网址的数据,导致证书验证不通过,如下图:
使用Charles遇到的问题_第1张图片

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

https://jcenter.bintray.com

https://jitpack.io

https://repo1.maven.org

https://maven.aliyun.com

https://dl.google.com
使用Charles遇到的问题_第2张图片

问题2:抓取Https包乱码

错误: 如下图示例
使用Charles遇到的问题_第3张图片

原因: 未安装证书

解决方案:

  1. 安装本地证书,以Mac为例,步骤如下:
    1. Help -> SSL Proxying -> Install Charles Root Certificate,如图
      使用Charles遇到的问题_第4张图片
    2. 找到CharlesProxy的证书,在信任加密套接字协议层(SSL)项下拉选择始终信任,如图
      使用Charles遇到的问题_第5张图片
  2. 将证书安装到手机上
    1. 方法1,步骤如下:
      1. Help->SSL Proxying->Install Charles Root Certificate …Browser,然后弹出如下弹窗:
        使用Charles遇到的问题_第6张图片
      2. 在手机已经连接代理的情况下,在浏览器中输入chls.pro/ssl,然后将证书下载到本地,再进行安装。
    2. 方法2,步骤如下:
      1. Help->SSL Proxying->Save Charles Root Certificate… 将证书下载到本地,再将证书传输到手机上,再进行安装。

你可能感兴趣的:(android,studio)