我有一个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。
答案 0 :(得分:1)
使用较新版本的JDK可能会有所帮助,即使仅用于调试目的,看它是否有所不同。
可能您的Tomcat配置覆盖了密钥库配置,因此您没有使用您认为正在使用的密钥库。 JavaMail附带的SSLNOTES.txt文件指向SSL调试技巧;这可能会帮助您缩小问题的根源。
答案 1 :(得分:1)
导入的证书位于信任库中,而不是密钥库。除非服务器需要客户端证书,否则根本不需要密钥库,邮件服务器很少这样做。