我正在使用伟大的Charles Web Proxy做反向代理并调试我的客户端和安全服务器之间的交换。我接受了Charles证书作为可信任的权限,并且在代理模式下使用它时通常能很好地工作,问题是当我尝试制作反向代理时。
我正在使用一个外部库,我没有使用HttpUrlConnection的控件,让我指定URL。在Charles documentation之后,我将我的网址设置为https://mybox.test.com:100
(请注意,我使用了主机名,添加到我的主机文件中,而不是localhost,希望我能拥有有效的证书)。
问题在于,作为Https验证的一部分,HttpUrlConnection将验证主机名(mybox.test.com,因为它指向我的反向代理),而不是证书中的名称(我连接的安全站点之一)至)。显然,不匹配并导致a
引起:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException: No subject alternative DNS name matching localhost found.
我意识到Charles无法为mybox.test.com生成证书,因为它只侦听特定端口,并且不知道HttpUrlConnection中使用的URL。我不知道如何生成一个可以接受的正确证书。
我的问题是:有没有更好的方法来使用Https的反向代理,还是需要禁用主机名和证书验证?