gpt4 book ai didi

Java 信任库在生产环境中不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:29 26 4
gpt4 key购买 nike

我正在尝试通过 TLS-SMTP 从我的应用程序发送电子邮件。这在本地运行时有效(Tomcat7、Java7、Windows),但在生产环境中(Tomcat7、Java6、Linux)无效。包含 SMTP 服务器公共(public)证书的信任库随应用程序一起提供,通过手动设置

System.setProperty("javax.net.ssl.trustStore", "pathToJssecacerts")

并且在这两种情况下是相同的。我使用

验证了这一点
System.getProperty("javax.net.ssl.trustStore")

就在发送邮件之前,它返回指向相应环境中商店的绝对路径。

因此,据我所知,这两个应用程序环境使用完全相同的信任库。 (有什么方法可以绝对确定吗?)

我正在使用

System.setProperty("javax.net.debug", "ssl:handshake:trustmanager");

为了获得更深入的了解,但两种环境之间的输出差异很大,这可能是由于 Java6 和 Java7 之间的差异。生产 (Java6) 中的错误显示为:

...
SEND TLSv1 ALERT: fatal, description = certificate_unknown
WRITE: TLSv1 Alert, length = 2
called closeSocket()

handling exception: 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
...

因此,要么是我的推理存在缺陷,一个错误,要么是我到目前为止还没有考虑到另一件事。有什么想法吗?

最佳答案

此消息表示 Java 无法使用您的证书建立信任链。

作为测试,您可以尝试设置属性

System.setProperty("mail.smtp.ssl.trust", "*");

此属性将覆盖默认行为并信任所有证书。

注意:在生产环境中不推荐这样做。

关于Java 信任库在生产环境中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20619548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com