簡體   English   中英

Javamail 和 gmail,得到“PKIX 路徑構建失敗”

[英]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

我做了以下步驟:

  • a)(來自 Linux 實例):openssl s_client -connect imap.gmail.com:993
  • b) 從上面的輸出中將證書復制到一個 pem 文件中,然后在 Windows 上運行它
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM