Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to ignore server cert error in javamail

when i connect to my imap server using imaps,it failes.

can you tell me how to ignore server cert error in javamail

Exception in thread "main" javax.mail.MessagingException: sun.security.validator.ValidatorException: 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: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:665)     at javax.mail.Service.connect(Service.java:295)     at javax.mail.Service.connect(Service.java:176)     at App20110204.main(App20110204.java:31) Caused by: 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    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1623)     at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:198)     at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:192)     at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1074)     at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:128)     at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:529)     at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:465)     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1120)     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1147)     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1131)     at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:507)     at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)     at com.sun.mail.iap.Protocol.<init>(Protocol.java:113)     at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:110)     at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:632)     ... 3 more Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:294)     at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:200)     at sun.security.validator.Validator.validate(Validator.java:218)     at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)     at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)     at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)     at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1053)     ... 15 more Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)     at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)     at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:289)     ... 21 more 

and my source code

Properties prop = new Properties(); prop.put("mail.imap.ssl.checkserveridentity", "false"); prop.put("mail.imap.ssl.trust", "*");  Session session = Session.getDefaultInstance(prop); Store store = session.getStore("imaps"); store.connect("mail.xxx.com", "xxxx", "p@ssw0rd"); System.out.println(store.getFolder("INBOX").getMessageCount()); 
like image 885
ncowboy Avatar asked Feb 04 '11 05:02

ncowboy


1 Answers

use prop.put("mail.imaps.ssl.trust", "*"); since you are using imaps store.

and for smtp you can try : prop.put("mail.smtp.ssl.trust", "*"); .

like image 136
Vishwanath Avatar answered Oct 08 '22 02:10

Vishwanath