使用Charles 抓取Java程序的请求

因为需要对自己的后端访问请求,做性能分析,其中有部分接口是调用了第三方的网络资源。现在想通过抓包,能够抓到从自己的本地的服务中,向外发送请求之间的关系。

使用Charles请求,来抓去Java应用程序。当我配置好Charles之后,Java程序 爆出如下的错误:

{
    "httpStatusCode": 500,
    "errorMessage": "I/O error on POST request for \"https://第三方请求链接\": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is 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"
}

然后Google了一番,想着应该是没有配置好应用程序的证书。然后找到charles 的官网上面,去寻找如何配置SSL证书。

SSL Certificates • Charles Web Debugging Proxy

官网上有专门针对Java Application 的说明。这里只说明下,在Mac下的操作。
先从Charles软件的 Help --> SSL Proxying > Save Charles Root Certificate. 将证书文件保存在Desktop文件夹下。

  1. 首先就是确定自己的$JAVA_HOME。Mac下通过执行 /usr/libexec/java_home 可以得到路径;
  2. 然后执行证书的导入命令。(官网有些时候不能显示完整的命令)
sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

其中 “changeit” 是java虚拟机中的cacerts文件的密码。

  1. 通常这时候就成功了,可以输入命令查看
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

参考文献

  1. Workaround for secure Java applet problems - Mac OS X Hints
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值