当前位置: 首页 > news >正文

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

相关文章:

  • 数据分析管理软件 Minitab 22.2.2 中文版安装包 免费下载
  • gtest 安装及使用
  • GPU 加速库(CUDA/cuDNN)
  • 2025年暨南大学 ACM校赛分析与题解
  • 数据结构顺序表的实现
  • react 报错
  • TortoiseGit 入门指南
  • [特殊字符] 深入理解Spring Cloud与微服务架构:全流程详解(含中间件分类与实战经验)
  • 什么是函数依赖中的 **自反律(Reflexivity)**、**增广律(Augmentation)** 和 **传递律(Transitivity)?
  • 大模型奖励建模新突破!Inference-Time Scaling for Generalist Reward Modeling
  • Python爬虫-爬取汽车之家各品牌月销量榜数据
  • Pygame终极项目:从零开发一个完整2D游戏
  • 一键快速转换音频视频格式的实用工具
  • Linux进程解析
  • Java操作数据库(JDBC)
  • C++异步并发支持库future
  • FPGA前瞻篇-组合逻辑电路设计-多路复用器
  • 云原生--核心组件-容器篇-3-Docker核心之-镜像
  • 我是如何用AI编程制作一个AI表情包生成的小程序
  • 大模型微调与蒸馏的差异性与相似性分析
  • 加拿大温哥华一车辆冲撞人群,造成多人伤亡
  • 乌克兰否认俄收复库尔斯克州,称战斗仍在持续
  • 乌称泽连斯基与特朗普进行简短会谈
  • 游戏论|迟来的忍者与武士:从《刺客信条:影》论多元话语的争议
  • 居民被脱落的外墙瓦砖砸中致十级伤残,小区物业赔付16万元
  • 青海西宁市公安局原党委委员、副局长王小华被“双开”