研發某個項目進行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
