是否有可能让 Java 忽略“信任存储”? 并接受它获得的任何 SSL 证书?
我正在尝试编写一个使用 javax.mail API 发送邮件的 SSL 客户端。 我遇到的问题是服务器请求我使用 SSL,但服务器还配置了非标准 SSL 证书。 我发现的网页说我需要将证书安装到信任存储中。 我不想这样做(我没有必要的权限。)
- 有没有办法让 Java 忽略证书错误并接受它?
- 如果做不到这一点,有没有办法让信任存储位于我的程序本地,而不是为整个 JVM 安装?
I am trying to write an SSL client that sends mail using the javax.mail API. The problem I am having is that the server request that I use SSL, but the server is also configured with a non-standard SSL certificate. The web pages I have found say that I need to install the certificate into the trust store. I don't want to do that (I don't have the necessary permissions.)
- Is there a way to get Java to just ignore the certificate error and accept it?
- Failing that, is there a way to have the trust store be local for my program, and not installed for the whole JVM?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
#1 的工作代码(在 jdk1.6.0_23 中)。
导入
实际信任所有TrustManager 代码。
Working code ( in jdk1.6.0_23) for #1.
Imports
The actual trust all TrustManager code.
您需要创建一个接受所有证书的假 TrustManager,并将其注册为管理器。 像这样的东西:
You need to create a fake TrustManager that accepts all certificates, and register it as a manager. Something like this:
试试这个(问题 2 的答案):
您还可以将其指定为附加命令行参数:
在 Fedora 上,这可能是
/etc/pki/java/cacerts
中的系统范围 Java 信任存储Try this (answer to question 2):
You can also specify this as an additional command line parameter:
On Fedora this could be the system wide java trust store in
/etc/pki/java/cacerts
只需将
-Dtrust_all_cert=true
添加到 VM 参数即可。 该参数告诉 java 忽略所有证书检查。Just add
-Dtrust_all_cert=true
to VM arguments. This argument tells java to ignore all certificate checks.在命令行中,您可以将参数
-noCertificationCheck
添加到 java 以忽略证书检查。In Command Line you can add argument
-noCertificationCheck
to java to ignore the certificate checks.