[Java, WLS] JDK 8u161、7u171以後ではDemoIdentity.jksが作成されない

ちょっと前に
「WebLogic ServerでDemoIdentity.jks(WebLogicのためのデモ用秘密鍵を格納するキーストア)が見つからないんですが…」
とお客様から問合せがありました。ふつうにドメイン構成ウィザードを使うとできあがるはずなのですが、
「ありません(意訳)」
ということなのです。
ってことで、利用環境を確認しました。
  • JDKは8u192
  • WebLogic Serverは12.2.1.3を利用中
症状を見てみますと、
java.security.InvalidKeyException: exponent is larger than modulus
という例外が出ており、CertGenの実行で失敗していることが原因でDemoIdentity.jksが生成されていませんでした。これはリリースノートにある既知の不具合でした。
Oracle Fusion Middleware Release Notes for Oracle WebLogic Server 12c (12.2.1.3.0)
https://docs.oracle.com/middleware/12213/wls/WLSRN/issues.htm#WLSRN-GUID-F1A75EF1-2B11-4CA6-85D8-D95B5F0DFD8E
JDK8u161以上を使用したutils.CertGenでの証明書の生成が失敗する
https://docs.oracle.com/cd/E92951_01/wls/WLSRN/issues.htm#GUID-F1A75EF1-2B11-4CA6-85D8-D95B5F0DFD8E
回避策は、JDK 8u161以上、7u171以上でCertGenを実行する場合、-noskidを付けて実行する必要があります。
java utils.CertGen -keyfilepass <秘密鍵のパスフレーズ> -certfile <証明書> -keyfile <秘密鍵のファイル> -strength <生成するキーの長さ> -noskid
WebLogic Serverの上記症状に対するサポートドキュメントは以下にあります。
WebLogic 12c Utils.CertGen Fails to Create CACert With Newer JDK8u161+/JDK7u171+ Installed (Doc ID 2355249.1)
https://support.oracle.com/rs?type=doc&id=2355249.1
この事象は、SunRsaSignプロバイダのRSA実装がPKCS#1 version 2.2で定義されている有効範囲にない指数を持つRSA公開鍵を拒否していたために発生していました。JDK 8u161(JDK 7u171も同じ)で入った変更に由来するものです。
RSA public key validation (JDK8u161 Release Note)
https://www.oracle.com/technetwork/java/javase/8u161-relnotes-4021379.html#JDK-8174756
なお、DemoIdentity.jksは以下のサポートドキュメントの通り、再作成できるため、こちらを案内して、解決しました。
Regenerating DemoIdentity.jks and/or DemoTrust.jks (Doc ID 1392455.1)
https://support.oracle.com/rs?type=doc&id=1392455.1
DemoIdentity.jks および DemoTrust.jks を再生成する方法 (Doc ID 1553115.1)
https://support.oracle.com/rs?type=doc&id=1553115.1

0 件のコメント:

コメントを投稿