发送邮件时找不到可信证书,但证书似乎在密钥库中

时间:2012-04-25 22:24:46

标签: java ssl javamail keystore

我有一个Tomcat 5 webapp,试图通过端口465上的smtp.gmail.com通过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。

2 个答案:

答案 0 :(得分:1)

使用较新版本的JDK可能会有所帮助,即使仅用于调试目的,看它是否有所不同。

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

答案 1 :(得分:1)

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