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