java - SunCertPathBuilderException : unable to find valid certification path to requested target`

标签 java ssl jakarta-mail

我知道在 SO 上有很多关于同一件事的问题,但我似乎还没有找到解决我的问题的方法。

我正在使用 JavaMail API 连接到邮件服务器。最初我使用端口 110 连接到 pop3 服务器,那时我得到以下异常 -
javax.net.ssl.SSLException:无法识别的 SSL 消息,纯文本连接?

我将端口更改为 995 并得到以下异常 -

sun.security.validator.ValidatorException:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

连接服务器代码:

Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "pop3");
props.setProperty("mail.pop3.ssl.enable", "true");

Session session = Session.getInstance(props, null);
store           = session.getStore("pop3");
store.connect(ServerName, Port, UserName, Password);

我哪里错了?任何意见将是有益的。提前致谢。

最佳答案

第一条错误消息说明了一切。您正在尝试将 SSL 连接到明文端口。尝试禁用 SSL,或为 SSL 使用正确的端口。

第二个表示您的信任库不信任服务器证书。如果它是自签名的,您需要将其导入您的信任库。

关于java - SunCertPathBuilderException : unable to find valid certification path to requested target`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23195562/

相关文章:

java - 电子邮件地址中的特殊字符抛出异常

Javamail : copy message to sent folder

JavaMail BASE64_LENGTH_79_INF 垃圾邮件

java - 分布式 session 处理

java - 有没有更有效的方法来使用 ArrayList 中的计数器制作 HashMap?

ssl - puppet 大师没有将代理主机名/fqdn 传递给 enc 脚本

amazon-web-services - 服务器上的 AWS 负载均衡器、静态 IP 和 SSL 终止(不是负载均衡器)

java - Docker Compose Tomcat无法连接到postgresql

java - 在java中操作字符串

laravel - 如何在 VestaCP 的单个项目中为多个域启用 let's encrypt SSL?