Docker中修改OpenJDK 17 TLS禁用算法

问题:jdk17 发送邮件报错

报错内容:

ERROR c.b.c.exception.BDExceptionHandler - javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 465;
  nested exception is:
        javax.net.ssl.SSLException: Received fatal alert: internal_error
org.dromara.email.comm.errors.MailException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 465;
  nested exception is:
        javax.net.ssl.SSLException: Received fatal alert: internal_error
        at org.dromara.email.core.service.MailService.ReSendList(MailService.java:177)
        at org.dromara.email.core.service.MailService.send(MailService.java:122)
        at org.dromara.email.core.service.MailService.send(MailService.java:63)

查询资料,分析原因:

JDK17默认禁用TLSv1.2及以下协议,而163的SMTP服务器可能仅支持TLSv1.2。

docker 当前配置:

docker 内 openjdk:17-jdk-alpine 修改 jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL

"PATH=/opt/openjdk-17/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "JAVA_HOME=/opt/openjdk-17", "JAVA_VERSION=17-ea+14", "TZ=Asia/Shanghai"

目标:

删除前:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
   DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL

删除后:

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
  DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL

方法:在 dockerfile 中添加以下内容

dockerfile

RUN sed -i.bak '/^jdk\.tls\.disabledAlgorithms=/ s/, TLSv1, TLSv1.1//' \
"${JAVA_HOME}/conf/security/java.security" \
    && rm "${JAVA_HOME}/conf/security/java.security.bak"

完整示例:

dockerfile

FROM openjdk:17-jdk-alpine

# 设置环境变量
ENV TZ=Asia/Shanghai \
    JAVA_HOME=/opt/openjdk-17 \
    PATH=/opt/openjdk-17/bin:$PATH

# 移除已禁用的TLSv1和TLSv1.1(假设它们已被默认禁用,需检查实际文件)
RUN sed -i.bak '/^jdk\.tls\.disabledAlgorithms=/ s/, TLSv1, TLSv1.1//' \
"${JAVA_HOME}/conf/security/java.security" \
    && rm "${JAVA_HOME}/conf/security/java.security.bak"

# 复制应用 JAR 包
COPY your-app.jar /app.jar

# 添加 TLSv1.2 协议参数并启动
CMD ["java", "-Dhttps.protocols=TLSv1.2", "-jar", "/app.jar"]

参考资料:

        Deepseek

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值