使用 Charles Web 代理作为 Https 反向代理

J_D*_*J_D 5 java ssl https proxy charles-proxy

我正在使用伟大的 Charles Web 代理做反向代理并调试我的客户端和安全服务器之间的交换。我接受 Charles 证书作为受信任的权威机构,并且在代理模式下使用它时通常工作得很好,问题是当我尝试创建反向代理时。

我正在使用一个外部库,我无法控制该库使用 HttpUrlConnection 并让我指定 URL。按照Charles 文档,我将 URL 设置为https://mybox.test.com:100(请注意,我使用了添加到主机文件中的主机名,而不是 localhost,希望我可以获得有效的证书)。

问题是,作为 Https 验证的一部分,HttpUrlConnection 会根据证书中的主机名(我要连接到的安全站点之一)验证主机名(mybox.test.com,因为它指向我的反向代理)。显然,这不匹配并导致 Caused by: javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException: No subject alternative DNS name matching localhost found.

我意识到 Charles 无法为 mybox.test.com 生成证书,因为它只侦听特定端口并且不知道 HttpUrlConnection 中使用的 URL。我不明白它如何生成可以接受的正确证书。

我的问题是:是否有更好的方法将反向代理与 Https 结合使用,或者我是否需要禁用主机名和证书验证?