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

本文提供詳細資訊和操作說明,適用於使用 Edge for Private Cloud 4.53.00 以上版本 (在支援 FIPS 的 RHEL 8.X 上運作) 的客戶。

預先安裝

除了Edge for Private Cloud 說明文件中列出的其他標準設定先決條件之外,請務必在節點上啟用 FIPS。

fips-mode-setup --check
FIPS mode is enabled.

如果目前已停用 FIPS 模式,請參閱 Red Hat 官方文件,瞭解如何啟用這項模式:

Java 需求

您使用的 Java 應從 Red Hat 的存放區下載,以確保 Java 的安全性模組支援 FIPS,並可透過 Java 安全性實作 FIPS 專屬限制。

安裝

靜默安裝設定檔參考資料中,請在每個節點上設定 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 格式的金鑰庫完成。如需更多詳細資訊,請參閱 FIPS 專屬說明文件,或參閱相關文章的 TLS 設定附註。附錄列出一些可用來產生這些 KeyStore 的實用指令。

預設 Java KeyStore/TrustStore

當 Edge for Private Cloud 4.53.00 以上版本在支援 FIPS 的 RHEL 8.X 上運作時,訊息處理器、管理伺服器和其他 edge-* 元件會依賴產品隨附的預設信任存放區和金鑰存放區。這些檔案包含應用程式預設信任的 CA 憑證。如果您想將此存放區變更為含有 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  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 的路徑。這個 JAR 檔案的版本可能會在日後的 OPDK 版本中有所變動。請使用 Apigee 提供的任何版本。您也可以從 Bouncycastle 存放區下載 JAR。自 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,請參閱「將憑證轉換為支援的格式」一文。