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 の公式ドキュメント(RHEL 8 を FIPS モードに切り替える)をご覧ください。

Java の要件

使用する Java は Red Hat のリポジトリからダウンロードする必要があります。これにより、セキュリティ モジュールが FIPS に準拠し、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-* コンポーネントは、製品に付属のデフォルトのトラストストアとキーストアに依存します。

これには、アプリケーションがデフォルトで信頼する CA 証明書が含まれています。CA 証明書を含む独自のストアを使用する場合は、次の手順を行います。

  1. 信頼するすべての CA 証明書を含む BCFKS 形式の cacerts ファイルを作成します。キーストアのパスワードと鍵のパスワードが同じであることを確認します。詳細については、付録をご覧ください。
  2. ファイルを適切なパスに配置し、apigee ユーザーが読み取れるようにします。
    cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks
    chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
  3. 作業するコンポーネントに基づいて、適切な構成ファイルを作成(または編集)します。
    コンポーネント ファイル
    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=<PATH to bcfks cacerts>
    conf_system_javax.net.ssl.trustStorePassword=changeme
    conf_system_javax.net.ssl.keyStore=<PATH to bcfks cacerts>
    conf_system_javax.net.ssl.keyStoreType=BCFKS
    conf_system_javax.net.ssl.keyStorePassword=changeme
  5. 構成ファイルの所有者が Apigee ユーザーであり、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 形式に変換する必要がある場合は、証明書をサポートされている形式に変換するをご覧ください。