在啟用 FIPS 的 RHEL 8.X 上執行 Edge for Private Cloud

本節提供在 RHEL 8 上啟用 FIPS 模式的指引,確保 Edge for Private Cloud 4.53.00 以上版本的環境安全且符合法規要求。

預先安裝

請確認節點已啟用 FIPS,以及Edge 安裝總覽文件中列出的其他標準設定先決條件。

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 的一般安裝步驟操作。

私密金鑰格式

只有 PKCS12/PFX 格式可用於將私密金鑰上傳至 Apigee 金鑰庫,以便在 API 代理程式或虛擬主機中使用。如需建立檔案的指引,請參閱「將憑證轉換為支援的格式」。

一般 TLS 作業

在支援 FIPS 的 RHEL 8.X 上使用 Edge for Private Cloud 4.53.00 以上版本時,Edge 的大部分 TLS 相關元件設定都必須透過 PKCS12 或 BCFKS 格式的金鑰庫完成。

如需進一步瞭解 TLS 設定,請參閱 FIPS 專屬說明文件或相關文章中的附註。附錄列出一些可用來產生這些 KeyStore 的實用指令。

預設 Java KeyStore/TrustStore

在啟用 FIPS 的 RHEL 8.X 上使用 Edge for Private Cloud 4.53.00 以上版本時,訊息處理器、管理伺服器和其他 edge-* 元件會依賴產品提供的預設信任存放區和金鑰存放區。

這些檔案包含應用程式預設信任的憑證授權單位憑證。如果您想使用自己的存放區,並在其中放入 CA 憑證,請按照下列程序操作:

  1. 建立 BCFKS 格式的 cacerts 檔案,其中包含您要信任的所有 CA 憑證。請確認 Keystore 密碼和金鑰密碼相同。詳情請參閱附錄
  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 使用者擁有,且可供該使用者讀取:
    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 格式 KeyStore 匯入或匯出憑證和/或金鑰。如要進一步瞭解如何使用 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 格式,請參閱「將憑證轉換為支援的格式」。