[英]Javamail and gmail, getting "PKIX path building failed"
我正在尝试运行一个独立的 Java 类,它将作为 imap 连接到 Gmail。 这是代码摘录(用户名和密码被屏蔽)
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imap");
System.out.println("getting session");
Session session = Session.getInstance(props);
System.out.println("getting store");
Store store = session.getStore("imaps");
System.out.println("connecting");
store.connect("imap.gmail.com", "xxxxx", "yyyyyy");
尝试运行时,它会显示“正在连接”消息,但会抛出此消息
javax.mail.MessagingException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target;
nested exception is:
javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我做了以下步骤:
keytool -keystore cacerts -import -trustcacerts -alias gmailcert -file c:\gmailcert.pem -storepass changeit
上面的步骤是在这个文件夹 C:\\Program Files\\Amazon Corretto\\jdk11.0.6_10\\lib\\security
在我运行课程的 Eclipse 中,我设置了这些 jvm args
-Djavax.net.ssl.trustStore="c:/Program Files/Amazon Corretto/jdk11.0.6_10/lib/security/cacerts"
-Djavax.net.ssl.trustStorePassword="changeit"
我也试过
-Djavax.net.ssl.trustStore="c:\Program Files\Amazon Corretto\jdk11.0.6_10\lib/security\cacerts"
-Djavax.net.ssl.trustStorePassword="changeit"
和
-Djavax.net.ssl.trustStore="c:\\Program Files\\Amazon Corretto\\jdk11.0.6_10\\lib\\security\\cacerts"
-Djavax.net.ssl.trustStorePassword="changeit"
我还提到了这个站点,以确保我正确导入了 gmail 证书。 然后我运行了一个 SSLPoke 实用程序并得到相同的错误,所以这与我获取和导入证书的方式有关。
我错过了什么?
很可能您有一个拦截连接的防病毒程序。 如果您可以将其配置为允许从您的程序直接连接,那就更好了。 如果没有,请参阅JavaMail FAQ以获取有关证书的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.