gpt4 book ai didi

java - 如何用Java获取SMTP服务器的证书

转载 作者:行者123 更新时间:2023-12-01 11:03:18 25 4
gpt4 key购买 nike

最近,我尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com