2017-01-23 12 views
1

Я пытаюсь получить доступ к электронной почте для почтовой службы (zimbra) с протоколом imaps. Я использую JavaMail баночку версии 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

WORKED !! Спасибо за ваш ответ, Мне не хватало аргумента VM, нашел его в примечаниях SLL с JavaMail -Djavax.net.ssl.trustStore = $ HOME/.keystore –