Я пытаюсь запустить автономный класс Java, который будет подключаться к Gmail как imap. Вот выдержка из кода (имя пользователя и пароль маскированы)
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
-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 и получил ту же ошибку, так что это связано с тем, как я получаю и импортирую сертификат.
Чего мне не хватает?