我在尝试发送电子邮件时使用以下异常(使用Seam)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find vali
d certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:285)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:191)
at sun.security.validator.Validator.validate(Validator.java:218)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1014)
... 68 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:280)
... 74 more
我使用普通的javamail应用程序测试了服务器,没有额外的设置,它工作正常。
但是使用Seams邮件标签会发生异常。 - 有没有办法禁用SSL? 我真的不需要SSL。
我在forum
中找到了这些属性mail.smtp.ssl.trust="*"
mail.smtp.starttls.enable="true"
答案 0 :(得分:3)
您获得的错误意味着您的JavaMail客户端不信任其中一个证书(可能是服务器的证书)。由于您似乎使用的是STARTTLS,因此您实际上正在使用SSL / TLS。
如果你根本不想使用SSL / TLS,你可以试试像mail.smtp.starttls.enable="false"
这样的东西,虽然有些SMTP服务器会强迫你使用它(连接时通过SSL / TLS或通过STARTTLS)继续前进。
或者,如果您改变主意并希望/需要使用SSL,请确保客户端上的信任存储包含可用于验证服务器证书的信任锚(CA证书)。 (请注意,mail.smtp.ssl.checkserveridentity
默认为false
是不安全的,因此您需要将其更改为true
,而不是使用mail.smtp.ssl.trust="*"
。)
答案 1 :(得分:3)
根据Seam reference manual和Seam forum,您应该可以在components.xml
配置中直接停用TLS和SSL:
<mail:mail-session debug="true" tls="false" ssl="false" ... />