在启用 FIPS 的 RHEL 8.X 或 Rocky 8.X 上运行的 Edge 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 或 Rocky 8.X 上使用 Edge for Private Cloud 4.53.00 或更高版本时,Edge 的大多数 TLS 相关组件配置都需要通过 PKCS12 或 BCFKS 格式的密钥库完成。

如需详细了解 TLS 配置,请参阅 FIPS 专用文档或相关文章中的注释。附录列出了一些可用于生成这些密钥库的实用命令。

默认 Java 密钥库/信任库

在启用 FIPS 的 RHEL 8.X 或 Rocky 8.X 上使用 Edge for Private Cloud 4.53.00 或更高版本时,您的消息处理器、管理服务器和其他 edge-* 组件依赖于产品随附的默认信任库和密钥库。

这些文件包含您的应用默认信任的 CA 证书。如果您希望使用包含 CA 证书的自有存储区,请按照以下步骤操作:

  1. 创建一个 BCFKS 格式的 cacerts 文件,其中包含您要信任的所有 CA 证书。确保密钥库密码和密钥密码相同。如需了解详情,请参阅附录
  2. 将文件放置在适当的路径中,并确保 apigee 用户可以读取该文件:
    cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks
    chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
  3. 根据您使用的组件创建(或修改)相应的配置文件:
    组件 文件
    边缘管理服务器 $/opt/apigee/customer/application/management-server.properties
    edge-message-processor $/opt/apigee/customer/application/message-processor.properties
    边缘路由器 $/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 格式的密钥库导入或导出证书和/或密钥,也可用于将证书和/或密钥导入或导出到 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 格式,请参阅将证书转换为支持的格式