2015-10-16 4 views
0

Недавно я пытался проверить сертификат SMTP-сервера, используя почтовую фразу электронной почты Java и Apache, но я не понял, как проверить сертификат SMTP-сервер (ssl или tls) без отправки сообщений/почты. Я думаю, что он может использовать SSLSocket для этого, но я просто получил сообщение SSLException: «сообщение должно быть простым», а не «Исключение сертификата» (я ожидал).Есть идеи?Как получить сертификат SMTP-сервера в Java

Отредактировано: (Используйте sslsocket.connect) я действительно получаю исключение сертификата с помощью кода последующей

 SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory 
      .getDefault(); 
    SSLSocket s = (SSLSocket) factory.createSocket("localhost", 9999); //9999 is the SMTP SSL port 
    //this really throws a exception. 
    s.startHandshake(); 
    System.out.println("ok"); 

Исключение:

Exception in thread "main" 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 sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904) 
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279) 
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273) 
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1446) 

Я думаю, что это может помочь я задержу, действительно ли сертификат действителен или нет.

ответ

1

Предполагаю, вы имеете в виду «smtp», а не «snmp».

Если у вас возникла ошибка «должна быть простой», значит, вы подключились к порту обычного текста вместо порта SSL.

Если вы просто хотите проверить, что сертификат действителен, без входа в систему, вы должны использовать SSLSocket и посмотреть, можете ли вы подключиться без получения исключения.

Если вы хотите проверить, что сертификат действителен и что данные аутентификации действительны, вы можете использовать Transport.connect.

Смежные вопросы