1

我有一个 Tomcat 5 webapp,它尝试通过 smtp.gmail.com 在端口 465 上通过 SSL 套接字发送邮件。我得到了例外:

javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
  nested exception is:
    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
    at javax.mail.Service.connect(Service.java:291)
    at javax.mail.Service.connect(Service.java:172)

好的。我试图在我的密钥库中导入我在网站https://www.gmail.com上获得的证书。

keytool -import -trustcacerts -file c:\verising-c3_01.cer

但是 keytool 说这个证书已经存在。Tomcat 是使用默认设置安装的,我没有移动密钥库(我什至不知道它们在哪里)。我的 javaMail 版本是 1.4.3,我的 jvm 版本是 1.4.2_12。

4

2 回答 2

1

导入的证书进入信任库,而不是密钥库。除非服务器需要客户端证书,否则您根本不需要密钥库,而邮件服务器很少这样做。

于 2012-04-25T23:03:45.460 回答
1

使用更新版本的 JDK 可能会有所帮助,即使只是为了调试目的,看看它是否有任何不同。

可能您的 Tomcat 配置覆盖了密钥库配置,因此您没有使用您认为正在使用的密钥库。JavaMail 包含的SSLNOTES.txt文件有指向 SSL 调试提示的指针;这可能会帮助您缩小问题的根源。

于 2012-04-25T22:57:51.423 回答