研发某个项目进行AES 256方式加密时报错
解决方式:更新JDK基础镜像
步骤:
1.更换JCE的库
文件位置在你的JDK/jre/lib/security
目录,目录下我们可以看到两个jar包:local_policy.jar
,US_export_policy.jar
,这两个jar包是jdk自带的。我们需要下载支持256位密钥加密的jar包
JDK8:
其对应的JCE下载地址为:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载完后,解压,将其中的local_policy.jar
和US_export_policy.jar
两个文件替换掉自己%JAVE_HOME%\jre\lib\security
文件夹下对应的原文件(%JAVE_HOME%是对应自己Java路径)
2.linux环境JDK1.8以上的该目录下可能没有这两个JAR包
解决方式为:
vim 命令打开java.security
文件,将注释掉的#crypto.policy=unlimited
打开,然后保存即可
3.Docker中操作方法
1.拉取原镜像查看:
docker pull xxx.com/aaa-test/java:8
2.进容器确认环境信息,如jdk目录位置
docker run -it --rm --name jdk_update_test xxx.com/aaa-test/java:8-aes /bin/bash
3.重新构建更新jdk镜像:
将下载的local_policy.jar
和US_export_policy.jar
,放在与Dockerfile
同级目录
Dockerfile内容:
FROM xxx.com/aaa-test/java:8
ENV SECURITY_PATH=/data/jdk1.8.0_191/jre/lib/security/
#将2个jar包拷贝到/data/jdk1.8.0_191/jre/lib/security/目录
COPY *_policy.jar $SECURITY_PATH/
#将java.security配置里的 #crypto.policy=unlimited 打开注释
RUN sed -i 's/#crypto.policy=unlimited/crypto.policy=unlimited/g' $SECURITY_PATH/java.security
4.构建镜像
docker build -t xxx/aaa-test/java:8-aes .
5.运行测试,检查更新的jdk镜像里配置和包都正常修改:
docker run -it --rm --name jdk_update_test xxx.com/aaa-test/java:8-aes /bin/bash
6.镜像推送到镜像仓库
docker push docker push xxx.com/aaa-test/java:8-aes
其它:
问题参考:https://blog.csdn.net/tomatocc/article/details/85096911