java - 我无法在 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 运行环境(build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM(build 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 派生版本):
security-libs/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 版本。
推荐阅读
- c# - C#:具有返回派生类成员的静态基类方法
- r - shinyBS 模态不能与连续观察事件一起使用
- javascript - 即使添加了新问题,提交按钮如何始终位于页面下方
- python - Python Login-Post 请求到 REST-API
- python - 从 Python 中的单个 XML 元素获取所有文本
- python-3.x - 通过 NTRIP 接收 RTCM 数据但无法翻译机器码
- ios - Xcode Beta 6 中的 SwiftUI 模式?
- sockets - ksoftirq 在我的 netdata 警报上用完了 sysctl 和 tcp 接受队列丢弃
- c++ - unique_ptr 的有状态自定义删除器
- c# - 使用“浮点数”绘制图像