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_DIR> と呼びます。

FIPS モードの構成

  1. FIPS 承認のアルゴリズムのみを許可するシステム プロパティを設定します。FIPS に準拠するようにシステムを構成するために使用する方法に関係なく、このプロパティを設定する必要があります。

    -Dorg.bouncycastle.fips.approved_only=true
  2. バージョン 17 以降の Java を使用している場合は、keytool ユーティリティを使用して、デフォルトの信頼ストア ファイル (cacerts) を FIPS 準拠の BCFKS 形式に変換します。

    1. コンソールを開き、次のコマンドを実行します。
      cd <JAVA_HOME> 
      
      mv bin/jre/lib/security/cacerts bin/jre/lib/security/cacerts.pkcs12
       
      ./bin/jre/bin/keytool -importkeystore -srckeystore bin/jre/lib/security/cacerts.pkcs12 -srcstoretype PKCS12 -destkeystore bin/jre/lib/security/cacerts -deststoretype BCFKS -providername BCFIPS -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providerpath <BC_DIR>/bc-fips-<VERSION>.jar -srcstorepass changeit -deststorepass changeit
    2. 信頼ストアにアクセスするために必要なパスワードを指定するには、システム プロパティを設定します。
      -Djavax.net.ssl.trustStorePassword=changeit
  3. <JAVA_HOME>/conf/security ディレクトリにある java.security ファイルを開き、次の変更を加えます。 

    1. 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
    2. javax.net.ssl パッケージのキーおよびトラスト マネージャー ファクトリ アルゴリズムを PKIX に変更します。

      ssl.KeyManagerFactory.algorithm=PKIX 
      ssl.TrustManagerFactory.algorithm=PKIX
    3. デフォルトのキーストア タイプを fips に変更し、JKS および PKCS12 キーストア タイプの互換モードを無効にします。

      keystore.type=fips 
      keystore.type.compat=false
    4. (Linux のみ) NativePRNGNonBlocking アルゴリズムを既知の強力な SecureRandom 実装のリストに追加します。

      securerandom.strongAlgorithms=NativePRNGNonBlocking:SUN,NativePRNGBlocking:SUN,DRBG:SUN
  4. 変更を保存します。
  5. <JAVA_HOME>/conf/security ディレクトリにある java.policy ファイルを開き、次の権限をデフォルト ドメインに挿入します。

    permission java.lang.RuntimePermission "accessClassInPackage.sun.security.internal.spec"; permission org.bouncycastle.crypto.CryptoServicesPermission "tlsAglorithmsEnabled";
  6. 変更を保存します。
  7. <JAVA_HOME>/conf ディレクトリにある logging.properties ファイルを開き、次の Bouncy Castle ロガー構成を挿入します。

    org.bouncycastle.jsse.provider.DisabledAlgorithmConstraints.level=SEVERE 
    org.bouncycastle.jsse.provider.PropertyUtils.level=SEVERE
  8. サーバー証明書がホストされる BCFKS タイプの新しいキーストア ファイルを作成します。次のオプションを含める必要があります。

  9. keystore.bcfks ファイルを <TOMCAT_HOME>/conf にコピーします。
  10. <TOMCAT_HOME>/conf ディレクトリ内の server.xml ファイルを開き、次の属性を <Connector> 要素に追加します。

  11. <TOMCAT_HOME>/conf 内の context.xml ファイルを開き、次の行を挿入します。

    <Manager className="org.apache.catalina.session.StandardManager" secureRandomProvider="BCFIPS" secureRandomAlgorithm="DEFAULT" />
  12. 変更を保存します。
  13. 次の Java オプションを起動コマンドに追加して、Bouncy Castle FIPS ライブラリを指定します。

    --module-path=<BC_DIR>