使用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包乱码
错误: 如下图示例
原因: 未安装证书
解决方案:
- 安装本地证书,以Mac为例,步骤如下:
- Help -> SSL Proxying -> Install Charles Root Certificate,如图
- 找到CharlesProxy的证书,在信任里加密套接字协议层(SSL)项下拉选择始终信任,如图
- Help -> SSL Proxying -> Install Charles Root Certificate,如图
- 将证书安装到手机上
- 方法1,步骤如下:
- Help->SSL Proxying->Install Charles Root Certificate …Browser,然后弹出如下弹窗:
- 在手机已经连接代理的情况下,在浏览器中输入chls.pro/ssl,然后将证书下载到本地,再进行安装。
- Help->SSL Proxying->Install Charles Root Certificate …Browser,然后弹出如下弹窗:
- 方法2,步骤如下:
- Help->SSL Proxying->Save Charles Root Certificate… 将证书下载到本地,再将证书传输到手机上,再进行安装。
- 方法1,步骤如下: