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

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

http://www.xdnf.cn/news/2255.html

相关文章:

  • Debian12.8如何部署Ragflow
  • 计算机网络 | 应用层(4)--DNS:因特网的目录服务
  • Tauri快速入门1 - 搭设开发环境
  • HTML与安全性:XSS、防御与最佳实践
  • Linux系统编程之内存映射
  • 深入浅出理解并应用自然语言处理(NLP)中的 Transformer 模型
  • 【Pandas】pandas DataFrame rdiv
  • 第6讲:科学配色基础——认识颜色空间(RGB、HSV、HCL)
  • AI图像编辑器 Luminar Neo 便携版 Win1.24.0.14794
  • Tableau 基础表制作
  • Java在云计算、大数据、云原生下的应用和优势 - 面试实战
  • 使用 OpenCV 进行视觉图片调整的几种常见方法
  • 碰一碰发视频源码搭建全解析,支持OEM
  • Ubuntu下安装vsode+qt搭建开发框架(二)
  • STM32 开发 - stm32f10x.h 头文件(内存映射、寄存器结构体与宏、寄存器位定义、实现点灯案例)
  • i18n-ai-translate开源程序,可以使用DeepSeek等模型将您的 i18nJSON翻译成任何语言
  • stm32之EXIT外部中断详解
  • (done) 吴恩达版提示词工程 5. 推理 (情绪分类,控制输出格式,输出 JSON,集成多个任务,文本主题推断和索引,主题内容提醒)
  • 基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
  • JAVA服务内存缓慢上涨,年轻代GC正常但Full GC频繁,如何定位?
  • IntelliJ IDEA修改实体类成员变量的名称(引入了该实体类的全部文件也会自动更新变量的名称)
  • 精益数据分析(25/126):关键指标驱动业务发展
  • GPT系列模型-20250426
  • Spring Boot 3.4 实战指南:从性能优化到云原生增强
  • 嵌入式C设计模式---策略模式
  • 跨境支付接口RT从300ms突增至2000ms,但CPU/Memory无异常,如何排查?
  • 测试模板x
  • 浏览器界面无显示,提示“代理服务器可能有问题”,这是怎么回事呢?
  • 在 Vue 3 setup() 函数中使用 TypeScript 处理 null 和 undefined 的最佳实践
  • Redis的两种持久化方式:RDB和AOF