Java 7 - SSL如何信任所有证书

时间:2013-12-19 11:34:17

标签: java ssl ssl-certificate

我正在编写一个Java代理,它使用SSL与其他服务器通信。 使用ServerSocketFactory以及使用服务器证书填充的密钥库和信任库都可以很好地工作。

我想知道,Java 7中有没有办法禁用认证并信任所有服务器? (是的,我知道这有风险 - 代理仅供内部使用)

我已经看到了使用X509TrustManager实现实现TrustManager的一些示例,尽管显然Java 7不支持这些契约,并且X509TrustManager本身已被弃用。

感谢您在Java 7上的建议和任何代码示例。

2 个答案:

答案 0 :(得分:1)

MITM代理服务器(即能够查看SSL / TLS流量的服务器)通常使用自己的CA为请求的站点生成虚假证书。

在客户的信任库中安装此CA证书,而不是调整代码。这是一个更清洁的解决方案,从长远来看,它更容易部署。

(为了更直接地回答您的问题,无数信任管理器的例子在Java 7中仍然可以正常工作。)

答案 1 :(得分:0)

我所做的是使用本文中提到的代码实现java.security.Provider

https://code.google.com/p/misc-utils/wiki/JavaHttpsUrl

注意:这是第二个提供的解决方案。

这篇文章没有提到您还应该按顺序添加密钥库以使工作正常。 因此,也应该设置这些VM参数(除非你得到“没有共同的密码套件”的错误信息):

                -Djavax.net.ssl.keyStore=KEYSTORE LOCATION
                -Djavax.net.ssl.keyStorePassword=YOUR PASS

我希望这会对你有所帮助,因为在我所看到的所有地方都没有提到这部分。