2012-04-25 38 views
1

我有一个Tomcat Web应用5试图发送邮件,通过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。

回答

1

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

+0

以及我使用这个命令:keytool -import -trustcacerts -file c:\ verising-c3_01.cer它没有将证书放入信任库吗? – AgostinoX 2012-04-25 23:15:03

+0

@AgostinoX当然可以,但是您是否将密钥工具在*上运行的文件命名为JSSE信任库?* -Djavax.net.ssl.trustStore = .... – EJP 2012-04-26 00:59:41

1

这可能有助于使用JDK的新版本,哪怕只是为了调试的目的,看它是否有什么差别。

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