【问题标题】:fatal alert: bad_record_mac is received when sending Email with SSL using Java code (javax.mail)致命警报:使用 Java 代码 (javax.mail) 通过 SSL 发送电子邮件时收到 bad_record_mac
【发布时间】:2022-01-03 17:27:37
【问题描述】:

我尝试使用 javax.mail 使用 SSL 发送电子邮件 我收到了下一个错误:

Error: Sending the email to the following server failed : 10.100.65.159:465. Cause: javax.mail.MessagingException: Could not convert socket to TLS;
  nested exception is:
        javax.net.ssl.SSLException: Received fatal alert: bad_record_mac

我的java版本:

openjdk 版本“1.8.0_242” OpenJDK 运行时环境 Corretto-8.242.07.1 (build 1.8.0_242-b07) OpenJDK 64 位服务器 VM Corretto-8.242.07.1(内部版本 25.242-b07,混合模式)

我的java代码:

       email.getMailSession().getProperties().put("mail.smtp.ssl.trust", "*");
       email.getMailSession().getProperties().put("mail.smtp.starttls.enable", "true");
       email.getMailSession().getProperties().put("mail.smtp.ssl.protocols", "SSLv3");

我的 javax.mail 版本:1.4.5

我从 java.security 文件的禁用算法列表中删除了 SSLv3

我仍然不知道可能是什么问题

有什么想法吗?

【问题讨论】:

  • 你的邮件服务器支持 SSLv3 吗?
  • 是的,我确定。

标签: java email ssl smtp


【解决方案1】:

由于 SSLv3 自 2015 年 6 月起已被弃用,您可能会面临任何相关哈希算法或密码套件已停用或不由任何两个(客户端/服务器)平台提供的问题。

您可以尝试通过使用系统选项javax.net.debug=all 启用 SSL 调试输出并分析输出来找出根本原因。但更好的方法是尽可能升级到 TLSv1.2。

【讨论】:

    【解决方案2】:

    最后我只需要删除 security.provider.1=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider

    来自 java.security 它已修复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 2018-09-01
      相关资源
      最近更新 更多