2017-01-23 29 views
1

我試圖使用imaps協議訪問郵件服務(zimbra)。 我使用JavaMail JAR版本1.4.7使用imaps協議連接到郵件服務,證書不符合算法

Properties props = (Properties)System.getProperties().clone(); 
// SSL setting 
props.put("mail.imaps.ssl.checkserveridentity", "false"); 
props.put("mail.imaps.ssl.trust", "*"); 
MailSSLSocketFactory socketFactory = new MailSSLSocketFactory(); 
socketFactory.setTrustAllHosts(true); 
props.put("mail.imaps.ssl.socketFactory", socketFactory); 
Store store = Session.getDefaultInstance(props).getStore("imaps"); 
store.connect(host, email, password); /* exception here */ 

打印例外:

javax.mail.MessagingException: java.security.cert.CertificateException: Certificates does not conform to algorithm constraints; 
    nested exception is: 
    javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Certificates does not conform to algorithm constraints 
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:670) 
    at javax.mail.Service.connect(Service.java:295) 
    at javax.mail.Service.connect(Service.java:176) 

首先我得從網頁證書(.crt文件)作爲顯示在下面的圖像。其次,我已經導入了keytool命令

keytool -importcert -file company.net.crt -keystore company.net -alias "company.net" -storepass changeit 

picture 1 picture 2

缺少什麼我在這裏傢伙證書?

回答

0

更改代碼,只是這樣的:

props.put("mail.imaps.ssl.checkserveridentity", "false"); 
props.put("mail.imaps.ssl.trust", "*"); 
Store store = Session.getInstance(props).getStore("imaps"); 
store.connect(host, email, password); /* exception here */ 

注到use Session.getInstance的關鍵變化。

希望你也可以按照Notes for use of SSL with JavaMail中所述設置信任庫屬性。

如果仍然不起作用,請發帖JavaMail debug output。您可能還想按照上述說明啓用某些SSL調試屬性。

呵呵,JavaMail 1.4.7很舊。如果可能,您應該升級到最新版本JavaMail 1.5.6

+0

工作!感謝您的回答, 我錯過了VM參數,發現它在使用JavaMail的SLL筆記中 -Djavax.net.ssl.trustStore = $ HOME/.keystore –

相關問題