java8发送邮件失败, 修改jdk镜像中的java.security文件

发布时间 2023-07-03 14:59:38作者: 黒马

背景

原本部署环境中的java:8镜像在检查问题删除, 用docker pull openjdk:8重新拉取并改名java:8, 在重新部署后, 发送邮件报错: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)!!!

原因

  1. 根本原因是jdk1.8版本SSL调用权限上有问题
    参考Java调用ssl异常,javax.net.ssl.SSLHandshakeException: No appropriate protocol
  2. 原本的java:8镜像是已经修复该问题的, 但被重置了

解决办法

修改jdk镜像中的java.security文件

  1. 重新拉取镜像openjdk:8
docker pull openjdk:8
  1. 创建临时容器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

方法优缺点

优点

  1. 可以直接拿来即用

缺点

  1. 后续维护的人不清楚有什么改动

替换方法

直接修改Dockerfile, java.security需要放到Dockerfile同级目录

COPY java.security /usr/local/openjdk-8/jre/lib/security/java.security

优点

  1. 后续维护的人清楚有什么改动

缺点

  1. 迁移时需要移动相应的文件