日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于JDK8采坑JCE加密限制版本问题

發(fā)布時(shí)間:2024/9/27 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于JDK8采坑JCE加密限制版本问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

          • 一、解決方案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步:
配置我的安全屬性文件

vim /$JAVA_HOME/jre/lib/security/java.security security.provider.1=sun.security.provider.Sun security.provider.2=sun.security.rsa.SunRsaSign security.provider.3=sun.security.ec.SunEC security.provider.4=com.sun.net.ssl.internal.ssl.Provider security.provider.5=com.sun.crypto.provider.SunJCE security.provider.6=sun.security.jgss.SunProvider security.provider.7=com.sun.security.sasl.Provider security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.9=sun.security.smartcardio.SunPCSC #下面這一行是我新添加的 security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider


重啟服務(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.security
2.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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。