我无法在Ubuntu服务器上发送电子邮件[javax.net.ssl.SSLHandshakeException]
我突然无法在 Unbuntu 服务器上发送电子邮件。
从今天起就发生了。它仍然在本地工作。
javax.mail.MessagingException: Could not convert socket to TLS;
nested exception is:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1907)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:666)
JAVA:
openjdk 版本“11.0.11” 2021-04-20
OpenJDK 运行时环境(构建 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64 位服务器 VM(构建 11.0.11+9-Ubuntu-0ubuntu2.20.04 、混合模式、共享)
握手后新会话票证到达:
SSL 会话:
协议:TLSv1.3
密码:TLS_AES_256_GCM_SHA384
回答
您的服务器似乎使用 TLSv1.1 或更早版本,并且您最近将 Java 升级到了 11.0.11 版。默认情况下,此版本的 Java 已禁用 TLSv1.0 和 TLSv1.1,例如参见Oracle Java 11.0.11 发行说明(尽管 AFAIK 这适用于所有 OpenJDK 派生版本):
安全库/javax.net.ssl
?禁用 TLS 1.0 和 1.1TLS 1.0 和 1.1 是不再被视为安全的 TLS 协议版本,已被更安全的现代版本(TLS 1.2 和 1.3)取代。
这些版本现已默认禁用。如果遇到问题,您可以自担风险,通过从配置文件的
jdk.tls.disabledAlgorithms
安全属性中删除“TLSv1”和/或“TLSv1.1”来重新启用这些版本java.security。
我建议您尝试TLSv1.1从文件中的jdk.tls.disabledAlgorithms属性中删除java.security是否可以解决您的问题,如果失败,请尝试删除TLSv1. 这表明您的邮件服务器需要更新或配置以支持更新和更安全的 TLS 版本。
THE END
二维码