作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近,我尝试使用 Java 邮件和 Apache commons 电子邮件框架来验证 SMTP 服务器的证书,但我没有得到任何线索,只验证 SMTP 服务器的证书(使用 ssl 或 tls)而不发送任何内容message/mail。我猜它可能使用 SSLSocket 来执行此操作,但我只是收到 SSLException 说“消息应该是普通的”,而不是证书异常(我期望)。有什么想法吗?
编辑:(使用 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)情况是:
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)
我认为这可以帮助我确定证书是否有效。
最佳答案
我假设你的意思是“smtp”,而不是“snmp”。
如果您收到“should be plain”错误,则意味着您连接到纯文本端口而不是 SSL 端口。
如果您只是想验证证书是否有效,而不登录,则应该使用SSLSocket并查看是否可以连接而不会出现异常。
如果要验证证书是否有效以及认证信息是否有效,可以使用 Transport.connect .
关于java - 如何用Java获取SMTP服务器的证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33169486/
我是一名优秀的程序员,十分优秀!