如何强制 JavaMailSenderImpl 使用 TLS1.2?

新手上路,请多包涵

有一个在 Tomcat 上运行的 JDK7 应用程序,它确实具有以下环境设置:

 -Dhttps.protocols=TLSv1.1,TLSv1.2

上述设置确保我们在进行 API 调用等时通过 HTTPS 连接时不使用 TLS 1.0。

我们还使用了 org.springframework.mail.javamail。 JavaMailSenderImpl 类发送传出 SMTP 电子邮件,并使用这些道具:

  mail.smtp.auth=false;mail.smtp.socketFactory.port=2525;mail.smtp.socketFactory.fallback=true;mail.smtp.starttls.enable=true

问题是在升级到 TLS1.2 时与 SMTP 电子邮件服务器的连接失败。

javax.net.ssl.SSLHandshakeException:握手期间远程主机关闭连接

是否存在强制使用 TLS1.2 协议的设置或代码更改?

我做了一些搜索,看起来这些环境设置仅适用于小程序和网络客户端,不适用于服务器端应用程序

-Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false

原文由 Sunny 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

这是下一个寻找的人的修复:

 mail.smtp.starttls.enable=true;
mail.smtp.ssl.protocols=TLSv1.2;

原文由 Sunny 发布,翻译遵循 CC BY-SA 4.0 许可协议

它在一个非常古老的应用程序中对我不起作用,我不明白为什么。经过一些研究,我发现应用程序依赖项中的 javax.mail 版本是 1.4。您必须至少升级到 1.5。

原文由 Vojtěch Zavřel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题