关于JDK8采坑JCE加密限制版本问题
文章目錄
- 一、解決方案1
- 1. 調(diào)研
- 2. 常見的異常
- 3. 安全性機(jī)制導(dǎo)致的訪問https會報(bào)錯(cuò)
- 4. 解決方案
- 5. 操作流程
- 6. 移動jar配置策略
- 二、解決方案2
- 2.1. 聲明
- 2.2. 編輯策略文件
- 2.3. 修改默認(rèn)屬性
一、解決方案1
聲明:jdk1.8已經(jīng)經(jīng)過線上環(huán)境使用
1. 調(diào)研
JDK8的加密策略存在限制版本和無限制版本,隨著越來越多的第三方工具只支持 JDK8,業(yè)務(wù)環(huán)境中,發(fā)現(xiàn)有些方法會報(bào)異常。
2. 常見的異常
1、使用AES加解密
異常1:
java.security.InvalidKeyException: Illegal key size or default parameters
異常2:
java.lang.SecurityException: JCE cannot authenticate the provider BC
3. 安全性機(jī)制導(dǎo)致的訪問https會報(bào)錯(cuò)
Received fatal alert: handshake_failure; nested exception is javax.net.ssl.SSLHandshakeException:
Received fatal alert: handshake_failure,accessUrl
這是因?yàn)槟承﹪业倪M(jìn)口管制限制,JDK默認(rèn)的加解密有一定的限制。
4. 解決方案
比如默認(rèn)不允許 256 位密鑰的 AES 加解密,解決方法就下載官方JCE無限制強(qiáng)度加密策略文件,覆蓋即可。
官方網(wǎng)站提供了JCE無限制權(quán)限策略文件的下載:
JDK6的下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JDK7的下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
5. 操作流程
從官網(wǎng)下載jce策略文件(補(bǔ)丁包),進(jìn)入到jdkjre\lib\security目錄 ,覆蓋原有策略文件
注:如果測試通過下面的第6步可以跳過,如果不行請繼續(xù)操作
6. 移動jar配置策略
第1步:
把包bcprov-jdk15on-1.56.jar復(fù)制一個(gè),放到linux的$JAVA_HOME/jre\lib\ext下面
第2步:
配置我的安全屬性文件
重啟服務(wù)再次測試
二、解決方案2
2.1. 聲明
官網(wǎng)說從jdk的某個(gè)版本以后,只需簡單配置策略文件配置即可
從Java 1.8.0_151和1.8.0_152開始,為JVM啟用無限制強(qiáng)度管轄策略 有了一種新的更簡單的方法。如果不啟用此功能,則不能使用AES-256:
2.2. 編輯策略文件
vim /$JAVA_HOME/jre/lib/security/java.security2.3. 修改默認(rèn)屬性
在 jre/lib/security 文件夾中查找文件 java.security,現(xiàn)在用文本編輯器打開java.security,并找到定義java安全性屬性crypto.policy的行,它可以有兩個(gè)值limited或unlimited - 默認(rèn)值是limited。將其設(shè)置為:
crypto.policy=unlimited現(xiàn)在重新啟動指向JVM的Java應(yīng)用程序即可。
總結(jié)
以上是生活随笔為你收集整理的关于JDK8采坑JCE加密限制版本问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看脚本执行时间
- 下一篇: oracle查询当前用户名下所有表