JREをBCFIPSのapproved-onlyモード用に設定するには、次の手順を実行します。
BCFIPS.jarファイルをJavaクラスパスに追加します。
必要なBCFIPSファイルは次のとおりです。
bc-fips-1.0.2.4.jar
bcpkix-fips-1.0.7.jar
bctls-fips-1.0.18.jar
<jre-root>/lib/securityディレクトリにあるjava.securityファイルを変更し、BCFIPSで定義されたJavaシステムプロパティを設定します。
テキストエディタで、WebコンテナをホストしているJRE用の上記のファイルを開きます。ファイルは<jre-root>/conf/security/java.securityにあります。セキュリティプロバイダのリストを見つけて、既存のプロバイダをすべてコメント化し、そのエントリを以下に置き換えます。
security.provider.1=BCFIPS
security.provider.2=BCJSSE
security.provider.3=SunJSSE
security.provider.4=SUN
security.provider.5=SunJCE
OSPはトラストストアを初期化する際に特定のTrustManagerの実装を必要とするため、SunJSSEプロバイダ(Java 11)が必要です。セキュリティプロバイダを変更する以外に、BCFIPS JSSE KeyManagerの実装を使用する必要もあります。これが必要な理由は主に、Sunの実装に不備があり、FIPSで必要な、キーに関する特定の決定を行えないためです。これは、java.securityの次の行を置き換えることで実行します。
ssl.KeyManagerFactory.algorithm=SunX509
これを以下に置き換えます。
ssl.KeyManagerFactory.algorithm=PKIX
また、古いSSLおよびTLSのアルゴリズムを無効にすることもお勧めします。その理由は、TLS v2.0よりも前のSSL/TLSバージョンに必要なアルゴリズムは、BCFIPS approvedモードでは利用できないためです。古いアルゴリズムを無効にするには、jdk.tls.disabledAlgorithmsエントリを見つけます。次に例を示します。
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, \ EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC
このリストにTLSv1とTLSv1.1を追加します。
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, MD5withRSA, DH keySize < 1024, \ EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC
TLSv1およびTLSv1.1の無効化はオプションですが、無効にしておくと、OSPが、TLS v1.1以前のみをサポートするサービス(LDAPなど)との安全な接続を試みたときに、わかりにくいエラーメッセージを回避できます。以前のTLSバージョンを無効にした場合に表示されるエラーメッセージは、より理解しやすく、問題を直接指示します。
メモ:eDirectory 8.8 (またはそれ以前)は、TLS v1.0のみをサポートするため、セキュアLDAPとともに使用することはできません。セキュアLDAPを使用するには、eDirectory 9以降を使用する必要があります。別の代替手段は、デフォルトのキーストアタイプを変更することです。keystore.type=jksまたはkeystore.type=pkcs12の行を見つけて、それをkeystore.type=bcfksに変更します。