SOAtest と Virtualize は、FIPS に準拠するように構成できます。このドキュメントでは、Bouncy Castle FIPS ライブラリを使用して、FIPS に準拠するように SOAtest/Virtualize WAR デプロイメントを構成する方法を説明します。FIPS 準拠は他の方法でも構成できますが、テストは Bouncy Castle FIPS ライブラリを使用して行われました。 FIPS モードは、WAR デプロイメントでのみサポートされます。
サーバーのインストール ページにある手順はすでに完了しているはずです。
次の Bouncy Castle FIPS ライブラリを https://www.bouncycastle.org/fips-java/ からダウンロードする必要があります。
bc-fips-<VERSION>.jar (バージョン 2.1.1 でテスト済み)
bctls-fips-<VERSION>.jar (バージョン 2.1.20 でテスト済み)
bcutil-fips-<VERSION>.jar (バージョン 2.1.4 でテスト済み)
これらのライブラリはどこにでも配置できます。この場所を以下の説明では <BC_DIR> と呼びます。
FIPS 承認のアルゴリズムのみを許可するシステム プロパティを設定します。FIPS に準拠するようにシステムを構成するために使用する方法に関係なく、このプロパティを設定する必要があります。
-Dorg.bouncycastle.fips.approved_only=true |
17 以降のバージョンの Java を使用している場合は、keytool を使用して cacerts ファイルを FIPS 準拠の BCFKS 形式に変換します。
cd <JAVA_HOME> mv lib/security/cacerts lib/security/cacerts.pkcs12 ./bin/keytool -importkeystore -srckeystore lib/security/cacerts.pkcs12 -srcstoretype PKCS12 -destkeystore lib/security/cacerts -deststoretype BCFKS -providername BCFIPS -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath <BC_DIR>/bc-fips-<VERSION>.jar -srcstorepass changeit -deststorepass changeit |
-Djavax.net.ssl.trustStorePassword=changeit |
<JAVA_HOME>/conf/security ディレクトリにある java.security ファイルを開き、次の変更を加えます。
security.provider.<number> および fips.provider.<number> という名前の既存のプロパティをすべてコメント アウトし、次の行を挿入して、セキュリティ プロバイダーのリストを設定します。
security.provider.1=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider fips:BCFIPS security.provider.3=SUN |
javax.net.ssl パッケージのキーおよびトラスト マネージャー ファクトリ アルゴリズムを PKIX に変更します。
ssl.KeyManagerFactory.algorithm=PKIX ssl.TrustManagerFactory.algorithm=PKIX |
デフォルトのキーストア タイプを fips に変更し、JKS および PKCS12 キーストア タイプの互換モードを無効にします。
keystore.type=fips keystore.type.compat=false |
(Linux のみ) NativePRNGNonBlocking アルゴリズムを既知の強力な SecureRandom 実装のリストに追加します。
securerandom.strongAlgorithms=NativePRNGNonBlocking:SUN,NativePRNGBlocking:SUN,DRBG:SUN |
<JAVA_HOME>/conf/security ディレクトリにある java.policy ファイルを開き、次の権限をデフォルト ドメインに挿入します。
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.internal.spec"; permission org.bouncycastle.crypto.CryptoServicesPermission "tlsAglorithmsEnabled"; |
<JAVA_HOME>/conf ディレクトリにある logging.properties ファイルを開き、次の Bouncy Castle ロガー構成を挿入します。
org.bouncycastle.jsse.provider.DisabledAlgorithmConstraints.level=SEVERE org.bouncycastle.jsse.provider.PropertyUtils.level=SEVERE |
サーバー証明書がホストされる BCFKS タイプの新しいキーストア ファイルを作成します。次のオプションを含める必要があります。
keytool コマンドの例:
keytool -genkey -keyalg RSA -alias <ALIAS> -storetype BCFKS -keystore keystore.bcfks -storepass <PASSWORD> -keysize 2048 -providername BCFIPS -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath <BC_DIR>/bc-fips-<VERSION>.jar |
<TOMCAT_HOME>/conf にコピーします。<TOMCAT_HOME>/conf ディレクトリ内の server.xml ファイルを開き、次の属性を <Connector> 要素に追加します。
certificateKeystoreType="BCFKS"
certificateKeystoreFile="conf/keystore.bcfks"
例:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
maxParameterCount="1000"
>
<SSLHostConfig>
<Certificate certificateKeystoreProvider="BCFIPS"
certificateKeystoreType="BCFKS"
certificateKeystoreFile="conf/keystore.bcfks"
certificateKeyAlias="$ALIAS"
certificateKeystorePassword="$PASSWORD"
type="RSA" />
</SSLHostConfig>
</Connector> |
<TOMCAT_HOME>/conf 内の context.xml ファイルを開き、次の行を挿入します。
<Manager className="org.apache.catalina.session.StandardManager" secureRandomProvider="BCFIPS" secureRandomAlgorithm="DEFAULT" /> |
次の Java オプションを起動コマンドに追加して、Bouncy Castle FIPS ライブラリを指定します。
--module-path=<BC_DIR> |