- 環境
- Red Hat Enterprise Linux Server release 6.3 (Santiago)
- java version "1.7.0_79"
事象 : 複合化する処理が動いたらInvalidKeyExceptionが発生した
ほかのサーバから送られてきたパラメータを複合化する処理が動いたらInvalidKeyExceptionが発生した
java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1011)
at javax.crypto.Cipher.implInit(Cipher.java:786)
at javax.crypto.Cipher.chooseProvider(Cipher.java:849)
at javax.crypto.Cipher.init(Cipher.java:1213)
at javax.crypto.Cipher.init(Cipher.java:1153)
...省略...
原因 : (Java8以下の場合)AES256bitの鍵長が使えないから
Java では標準ライブラリの Cipher クラスを使えば、サードパーティのライブラリを使うことなく AES 暗号を扱うことができます。しかし、AES 暗号はアメリカの輸出規制の対象になっているらしく、標準では 128bit までの鍵しか扱えません。
Java 9時代のAES 256暗号 - Qiita
対応 : ポリシーファイルを入れ替える
-
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE DownloadからJavaのバージョンに合ったzipファイルをダウンロードする
- 今回はJava1.7なので
UnlimitedJCEPolicyJDK7.zip
をダウンロード
- 今回はJava1.7なので
- 解凍したディレクトリ内のjar(
local_policy.jar``US_export_policy.jar
)を配置するサーバへ転送する - Javaのインストールディレクトリを確認する
- 当たり前のことだけど・・・同じバージョンが2箇所にあって最初間違えたディレクトリに配置したのでちゃんと書いた
- Javaのインストールディレクトリがわからなくなった時の探し方 - Qiita
-
{javaのインストールディレクトリ}/jre/lib/security/
にあるlocal_policy.jar``US_export_policy.jar
のバックアップを取る -
{javaのインストールディレクトリ}/jre/lib/security/
に解凍したディレクトリ内のjarを配置する
# jarを配置するサーバへ転送する
$ scp -i /path/to/{秘密鍵}.pem /path/to/zip/UnlimitedJCEPolicy/*.jar ponsuke@{サーバ}:/home/ponsuke/
local_policy.jar 100% 2500 12.2KB/s 00:00
US_export_policy.jar 100% 2487 12.1KB/s 00:00
# サーバにログイン
$ ssh -i /path/to/{秘密鍵}.pem ponsuke@{サーバ}
Last login: Thu May 14 20:56:50 2020 from 10.0.1.10
# Javaのインストールディレクトリを確認する
$ printenv JAVA_HOME
/usr/java/default
# jarのバックアップを取る
$ cd $JAVA_HOME/jre/lib/security/
$ sudo mv local_policy.jar local_policy.jar.bak
[sudo] password for ponsuke:
$ sudo mv US_export_policy.jar US_export_policy.jar.bak
# 解凍したディレクトリ内のjarを配置する
$ sudo mv /home/ponsuke/*.jar .
$ ls -la | grep jar
-rw-r--r-- 1 ponsuke appl 2487 5月 14 21:36 2020 US_export_policy.jar
-rw-r--r--. 1 root root 2397 4月 11 03:55 2015 US_export_policy.jar.bak
-rw-r--r-- 1 ponsuke appl 2500 5月 14 21:36 2020 local_policy.jar
-rw-r--r--. 1 root root 2865 4月 11 03:55 2015 local_policy.jar.bak