java8发送邮件失败, 修改jdk镜像中的java.security文件
背景
原本部署环境中的java:8镜像在检查问题删除, 用docker pull openjdk:8重新拉取并改名java:8, 在重新部署后, 发送邮件报错: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)!!!
原因
- 根本原因是jdk1.8版本SSL调用权限上有问题
参考Java调用ssl异常,javax.net.ssl.SSLHandshakeException: No appropriate protocol - 原本的java:8镜像是已经修复该问题的, 但被重置了
解决办法
修改jdk镜像中的java.security文件
- 重新拉取镜像openjdk:8
docker pull openjdk:8
- 创建临时容器temp-java8(temp-java8为容器名, 可自定义), 查找java.security位置
docker run -it --name temp-java8 openjdk:8 /bin/bash
find / -name "java.security"
exit
3.将文件复制出来修改, 再复制回去
docker cp temp-java8:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security /home/java.security
vi java.security
docker cp /home/java.security temp-java8:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security
4.用已有容器构建新的镜像
docker commit temp-java8 java:8
方法优缺点
优点
- 可以直接拿来即用
缺点
- 后续维护的人不清楚有什么改动
替换方法
直接修改Dockerfile, java.security需要放到Dockerfile同级目录
COPY java.security /usr/local/openjdk-8/jre/lib/security/java.security
优点
- 后续维护的人清楚有什么改动
缺点
- 迁移时需要移动相应的文件
每个牛B人物背后都有段苦逼的岁月,只要像SB一样坚持,终将牛B!
分类:
docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探