如何禁用javamail SSL支持?

时间:2010-11-21 13:05:44

标签: java ssl seam javamail

我在尝试发送电子邮件时使用以下异常(使用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"
  • 我怎样才能将上面的属性通过seam框架传递给javamail?

2 个答案:

答案 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 manualSeam forum,您应该可以在components.xml配置中直接停用TLS和SSL:

<mail:mail-session debug="true" tls="false" ssl="false" ... />