FIPS 対応 RHEL 8.X 上の Edge for Private Cloud

このセクションでは、RHEL 8 で FIPS モードを有効にし、Edge for Private Cloud バージョン 4.53.00 以降の安全でコンプライアンスに準拠した環境を確保するためのガイダンスを提供します。

プリインストール

Edge のインストールの概要のドキュメントに記載されている他の標準構成の前提条件とともに、ノードで FIPS が有効になっていることを確認します。

fips-mode-setup --check  
FIPS mode is enabled.  # Command output

FIPS モードが現在無効になっている場合は、Red Hat の公式ドキュメント Switching RHEL 8 to FIPS mode で有効にする方法をご覧ください。

Java の要件

使用する Java は、セキュリティ モジュールが FIPS に準拠していることを確認するために、Red Hat のリポジトリからダウンロードする必要があります。これにより、Java セキュリティを介して FIPS 固有の制限を有効にできます。

インストール

Edge 構成ファイル リファレンスで、各ノードに FIPS_OS=true を設定します。通常どおり、Edge for Private Cloud の一般的なインストール手順に沿って操作します。

秘密鍵の形式

API プロキシまたは仮想ホストで使用するために秘密鍵を Apigee キーストアにアップロードするには、PKCS12 / PFX 形式のみを使用できます。ファイルの作成方法については、証明書をサポートされている形式に変換するをご覧ください。

一般的な TLS オペレーション

FIPS 対応の RHEL 8.X で Edge for Private Cloud 4.53.00 以降を使用する場合、Edge の TLS 関連のコンポーネント構成のほとんどは、PKCS12 または BCFKS 形式のキーストアを介して行う必要があります。

詳細については、TLS 構成に関する FIPS 固有のドキュメントまたは関連する記事のメモをご覧ください。付録に、これらのキーストアの生成に使用できる便利なコマンドをいくつか記載しています。

デフォルトの Java キーストア / トラストストア

FIPS 対応の RHEL 8.X で Edge for Private Cloud 4.53.00 を使用すると、Message Processor、Management Server、その他の edge-* コンポーネントは、デフォルトで、プロダクトに付属のプレースホルダ BCFKS キーストアとトラストストア(/opt/apigee/edge-gateway/vault/bcfks-cacerts)を指します。

独自の BCFKS cacerts ストアを生成し、それを使用するように Edge コンポーネントを構成する手順は次のとおりです。

  1. 信頼するすべての CA 証明書を含む独自の BCFKS 形式の cacerts ファイルを生成します。キーストアのパスワードと鍵のパスワードが同じであることを確認します(厳格な BCFIPS パスワード チェックが適用される場合は 14 文字以上)。

    • オプション A: ホスト OS または JDK の cacerts ストアを BCFKS 形式に変換します(update-ca-trust によって管理される標準の OS 信頼済みルート CA を含める場合におすすめします)。

      BC_FIPS_JAR=$(ls /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-*.jar \
        | head -n 1)
      keytool -J-Dcom.redhat.fips=false -importkeystore \
        -srckeystore /etc/pki/java/cacerts \
        -srcstoretype JKS \
        -srcstorepass changeit \
        -destkeystore my-cacerts.bcfks \
        -deststoretype BCFKS \
        -deststorepass YOUR_STORE_PASSWORD \
        -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
        -providername BCFIPS \
        -providerpath "$BC_FIPS_JAR" \
        -noprompt
    • オプション B: カスタム CA 証明書(.pem または .crt)を使用して新しい BCFKS ストアを作成するか、既存の BCFKS ストア(オプション A の my-cacerts.bcfks など)に追加のカスタム CA 証明書をインポートします。

      BC_FIPS_JAR=$(ls /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-*.jar \
        | head -n 1)
      keytool -J-Dcom.redhat.fips=false -importcert \
        -file PATH_TO_CA_CERT.pem \
        -alias CA_ALIAS \
        -keystore my-cacerts.bcfks \
        -storetype BCFKS \
        -storepass YOUR_STORE_PASSWORD \
        -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
        -providername BCFIPS \
        -providerpath "$BC_FIPS_JAR" \
        -noprompt
    • 省略可: BCFKS ストアの内容を確認します。

      BC_FIPS_JAR=$(ls /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-*.jar \
        | head -n 1)
      keytool -J-Dcom.redhat.fips=false -list \
        -keystore my-cacerts.bcfks \
        -storetype BCFKS \
        -storepass YOUR_STORE_PASSWORD \
        -providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
        -providername BCFIPS \
        -providerpath "$BC_FIPS_JAR"
  2. ステップ 3 に記載されている Edge コンポーネントのいずれかを実行している各ノードで、BCFKS ファイルを適切なパスにコピーし、apigee ユーザーが読み取れるようにします。

    cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks
    chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
    chmod 600 /opt/apigee/customer/application/my-cacerts.bcfks
  3. 各ノードで、次の表からインストールされているコンポーネントごとに構成ファイルを作成または編集します(ノードにリストされているコンポーネントごとにステップ 3 ~ 6 を繰り返します)。

    コンポーネント ファイル
    edge-management-server /opt/apigee/customer/application/management-server.properties
    edge-message-processor /opt/apigee/customer/application/message-processor.properties
    edge-router /opt/apigee/customer/application/router.properties
    edge-postgres-server /opt/apigee/customer/application/postgres-server.properties
    edge-qpid-server /opt/apigee/customer/application/qpid-server.properties
  4. 構成ファイルに次の行を追加します。

    conf_system_javax.net.ssl.trustStore=/opt/apigee/customer/application/my-cacerts.bcfks
    conf_system_javax.net.ssl.trustStorePassword=YOUR_STORE_PASSWORD
    conf_system_javax.net.ssl.keyStore=/opt/apigee/customer/application/my-cacerts.bcfks
    conf_system_javax.net.ssl.keyStoreType=BCFKS
    conf_system_javax.net.ssl.keyStorePassword=YOUR_STORE_PASSWORD

    /opt/apigee/customer/application/my-cacerts.bcfks と YOUR_STORE_PASSWORD は、BCFKS cacerts ファイルのパスとパスワードに置き換えます。

  5. apigee ユーザーが構成ファイルを所有し、読み取り可能であることを確認します。

    chown apigee:apigee /opt/apigee/customer/application/FILE.properties
  6. コンポーネントを再起動します。

    /opt/apigee/apigee-service/bin/apigee-service COMPONENT restart

付録

BCFKS キーストア オペレーションのサンプル コマンド

次のコマンドは、自己署名鍵と証明書のペアを含む BCFKS キーストアを生成します。

keytool -genkeypair -keyalg RSA -alias node0 -validity 365 -keystore keystore.node0 \
-storepass keypass -keypass keypass -v \
-dname "EMAILADDRESS=youremail@domain.com, CN=yourcn, OU=yourou, O=youro, L=yourl, C=yourc" \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

keytool コマンドは、通常使用されるものと同じですが、keytool コマンドに次のオプションを含める必要があります。

--storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider 
-providername BCFIPS

Keytool の引数

keytool の引数 説明
-storetype ストアタイプを BCFKS に設定します。
-providerpath bc-fips-XXXX.jar へのパスを指定します。このバージョンは、今後の OPDK リリースで変更される可能性があります。Apigee が提供するバージョンを使用するか、Bouncycastle のリポジトリからダウンロードします。OPDK 4.53 の場合、パスは /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar にする必要があります。
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider に設定します。
-providername BCFIPS に設定します。

同様の keytool コマンドを使用して、BCFKS 形式のキーストアから証明書や鍵をインポートまたはエクスポートできます。BCFKS の操作方法については、BouncyCastle のドキュメントをご覧ください。

PKCS12 ストア

PKCS12 ストアを生成するには、openssl コマンドを使用します。

# Generate a self-signed private key and certificate
openssl req -x509 -newkey rsa:2048 -keyout private.key -out certificate.pem -sha256 -days 36500 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=cn/emailAddress=email"
# Package the above generated key and cert into a PKCS12
openssl pkcs12 -export -clcerts -in certificate.pem -inkey private.key -out keystore.pfx -name myalias

独自の秘密鍵と証明書があり、それらを PKCS12 形式に変換する必要がある場合は、証明書をサポートされている形式に変換するをご覧ください。