【问题标题】:I can't send emails on Ubuntu server [javax.net.ssl.SSLHandshakeException]我无法在 Ubuntu 服务器上发送电子邮件 [javax.net.ssl.SSLHandshakeException]
【发布时间】:2021-07-22 10:32:32
【问题描述】:

我突然无法在 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-Bit Server VM(build 11.0.11+9-Ubuntu-0ubuntu2.20.04,混合模式,共享)

握手后新会话票到达:
SSL 会话:
协议:TLSv1.3
密码:TLS_AES_256_GCM_SHA384

【问题讨论】:

  • 这是托管在 VPS 还是公司 VM 上?可能是端口被阻塞了
  • 通过 ssh 进入 VPS 确认,然后使用 ssmtp 或 smtpc 进行测试。如果它也失败了,请尝试使用其他端口的其他电子邮件提供商
  • AWS 确实默认阻止 SMTP。
  • 别猜了。确认。选择其中一个,您将看到 VPS 或提供商是否阻止了您
  • @Martheen 阻塞的端口不会导致错误“没有合适的协议(协议被禁用或密码套件不合适)”。此错误可能意味着服务器正在使用自 Java 11.0.11 以来默认禁用的 TLS v1.1 或更早版本,并且鉴于该版本是最近发布的,我猜想它在 Java 升级时开始失败。跨度>

标签: java linux spring email ssl


【解决方案1】:

您的服务器似乎使用 TLSv1.1 或更早版本,并且您最近将 Java 升级到了 11.0.11 版本。此版本的 Java 默认禁用 TLSv1.0 和 TLSv1.1,例如参见 Oracle Java 11.0.11 release notes(尽管 AFAIK 这适用于所有 OpenJDK 派生版本):

安全库/javax.net.ssl
禁用 TLS 1.0 和 1.1

TLS 1.0 和 1.1 是 TLS 协议的版本,它们不再是 被认为是安全的,并已被更安全和现代的取代 版本(TLS 1.2 和 1.3)。

这些版本现已默认禁用。如果遇到 问题,您可以自担风险,通过删除重新启用版本 jdk.tls.disabledAlgorithms 中的“TLSv1”和/或“TLSv1.1” java.security 配置文件中的安全属性。

我建议您尝试从java.security 文件中的jdk.tls.disabledAlgorithms 属性中删除TLSv1.1 是否可以解决您的问题,如果失败,请尝试删除TLSv1。这表明您的邮件服务器需要更新或配置以支持更新和更安全的 TLS 版本。

【讨论】:

  • 我在 gmail 上遇到了同样的问题。在 Intellij 中哪里可以找到配置文件?
  • @AlGrant 您需要修改用于运行项目的 Java 安装的配置文件。如果您在 IntelliJ 中运行,请转到您的项目结构,并在项目下检查您正在使用的 JDK,然后单击编辑以查看其安装路径。对于 Java 8,它通常在 jre/lib/security 中,对于 Java 9,在该安装路径内的 lib/security 中。如果您在 IntelliJ 之外运行程序,则需要修改 PATH 上的 Java 安装。
【解决方案2】:

如果你有 ubuntu 操作系统,那就去

/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security

然后找到jdk.tls.disabledAlgorithms

然后删除TLSv1, TLSv1.1

重启服务器并再次尝试发送邮件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-17
    • 2021-01-25
    • 1970-01-01
    • 2018-07-27
    • 2020-05-09
    • 1970-01-01
    • 2015-09-05
    • 2022-01-05
    相关资源
    最近更新 更多