javamail中的STARTTLS验证需要证书时的发信

对于javamail发送邮件,服务器需要tls验证时只要指定mail.smtp.starttls.enable为true就可以了,

但遇到服务器需要使用CA证书时怎样操作,网上的资料太少了,今天遇到的问题

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


网上能找到的资料说明

官方的QA  http://www.oracle.com/technetwork/java/faq-135477.html#installcert

Q: When connecting to my mail server over SSL I get an exception like "unable to find valid certification path to requested target".
A: Your server is probably using a test certificate or self-signed certificate instead of a certificate signed by a commercial Certificate Authority. You'll need to install the server's certificate into your trust store. The InstallCert program will help.

运行 java InstallCert smtp.xyz.com:465
得到jssecacerts文件后复制到jdk1.6.0_14\jre\lib\security目录

 -------------------

以上是服务器需要ssl证书验证时的处理办法,但如果你的服务器是tls(STARTTLS)验证需要证书时就不行了。

InstallCert工具不能从服务器上把证书拿下来,那么就需要手工把证书添加到你的security目录了。

一个最简单的办法,随便用个客户端进行连接,下载下来证书后导出为文件。

导入邮箱CA命令:keytool -import -alias cacerts -keystore cacerts -file (证书文件名) -trustcacerts

cacerts文件是本机jre原有的认证文件(默认目录地址:C:\Program Files\Java\jre6\lib\security\)

命令会提示你输入cacerts证书库密码,默认密码为changeit,

然后Y确认即可,认证已添加到keystore。

上述操作后就可以用javamail进行服务器为STARTTLS验证并且需要证书的发信了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值