当前位置: 首页 > 知识库问答 >
问题:

javax。邮政MessaginException:无法向SMTP主机发送命令;

秦英发
2023-03-14

我已经将证书导入了cacerts(JAVA\u HOME指向的地方),但仍然出现了这个错误。无法解决问题。客户端的邮件服务器(Microsoft ESMTP服务器)没有防火墙问题。我可以从我的服务器远程登录。已尝试SSLpoke,但超时。试过25号端口的tcpdump,可以看到来回的通信。基本上是试图触发来自邮件服务器的出站电子邮件。

详细的错误日志为:

原因:javax。邮政MessaginException:无法向SMTP主机发送命令;嵌套的例外是:javax。网ssl。SSLHandshakeException:太阳。安全验证器。ValidatorException:PKIX路径生成失败:sun。安全供应商。证书路径。SunCertPathBuilderException:无法在com上找到请求目标的有效证书路径。太阳邮政smtp。SMTP运输。com上的sendCommand(SMTPTransport.java:1420)。太阳邮政smtp。SMTP运输。com上的sendCommand(SMTPTransport.java:1408)。太阳邮政smtp。SMTP运输。com上的ehlo(SMTPTransport.java:847)。太阳邮政smtp。SMTP运输。javax上的protocolConnect(SMTPTransport.java:384)。邮政服务在javax上连接(Service.java:297)。邮政服务在javax上连接(Service.java:156)。邮政服务在javax上连接(Service.java:105)。邮政运输javax上的send0(Transport.java:168)。邮政运输在com上发送(Transport.java:98)。issuetracker。esb。邮政GmailImpl。com上的transportMessage(Gmail.java:94)。issuetracker。esb。邮政邮政sendSRMail(Mail.java:188)

共有1个答案

施俊哲
2023-03-14

在使用keytool导入证书时是否使用了-trustcacerts参数?

编辑:我关于这个主题的对话已经涵盖了错误发生的具体原因,但没有出现“答案”,所以这里有一个重写。

PKIX路径生成失败:sun。安全供应商。证书路径。SunCertPathBuilderException:无法找到请求目标的有效证书路径

此错误表示无法从正在运行的JRE使用的常驻密钥库文件(默认情况下,在JRE的jre/lib/security/cacerts文件中)中获取用于信任传入证书的有效证书链。

其典型原因包括:

使用keytools命令导入证书时忽略包含参数-Trust cacerts。

当JRE寻找它知道的与传入证书匹配的证书时,它将只考虑以这种方式标记为受信任的证书。

证书已由根CA签名,JRE尚未为其安装根证书。

通常,这是由未知根证书颁发机构(CA)签署的证书引起的,例如JRE不知道的公司内部CA,或者甚至是由一些第三方根证书颁发机构签署的证书,这些第三方根证书颁发机构不像其他一些知名供应商那样受欢迎,因此虽然浏览器或操作系统可能已经有根证书,但Java可能没有随附。

为了纠正这种情况,您还需要获取并安装根CA证书,并将其标记为trusted。

还有一些提供证书签名的公司充当中间人,这意味着他们自己没有自己的根CA,但由受信任的根CA授予证书,以允许他们进一步签署证书签名请求(CSR)。

在这些情况下,虽然您可能已经安装并信任了自己的证书和底层根CA,但除非您还获得并安装了中间证书,否则“证书链”将断开,无法创建有效的证书路径。

因此,概括而言,可能的解决方案包括:

  1. 使用-trustcacerts参数为其他站点执行所有证书安装

注意:通过双击文件检查Windows中的. crt文件可以让您有机会检查证书路径,并查看是否以及涉及哪些根和中介CA来帮助显示您需要什么。

一旦安装了完整有效的证书链并将其信任到密钥库文件中,错误就会过去。

 类似资料: