本文档包含适用于使用版本 4.53.00 或更高版本(在启用了 FIPS 的 RHEL 8.X 上运行)的 Edge for Private Cloud 客户的详细信息和说明。
预安装
除了“适用于私有云的 Edge”文档中列出的其他标准配置前提条件之外,还应确保在节点上启用 FIPS。
fips-mode-setup --check FIPS mode is enabled.
如果 FIPS 模式目前处于停用状态,请参阅 Red Hat 官方文档,了解如何启用该模式:
Java 要求
您应从 Red Hat 的代码库下载所用的 Java,以确保 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 格式的密钥库完成。如需了解详情,请参阅有关 TLS 配置的 FIPS 专用文档或相关文章中的备注。附录列出了一些可用于生成这些密钥库的实用命令。
默认的 Java 密钥库/信任库
在启用了 FIPS 的 RHEL 8.X 上运行 Edge for Private Cloud 4.53.00 或更高版本时,消息处理器、管理服务器和其他 edge-* 组件会依赖于产品随附的默认信任库和密钥库。其中包含应用默认信任的 CA 证书。如果您想将其更改为包含 CA 证书的自己的存储区,请按以下步骤操作:
- 创建一个 BCFKS 格式的 cacerts 文件,其中包含您要信任的所有 CA 证书。确保密钥库密码和密钥密码相同。如需了解详情,请参阅附录。
-
将文件放置在适当的路径中,并确保 apigee 用户可以读取该文件:
cp my-cacerts.bcfks /opt/apigee/customer/application/my-cacerts.bcfks chown apigee:apigee /opt/apigee/customer/application/my-cacerts.bcfks
-
根据您使用的组件创建(或修改)适当的配置文件:
组件 文件 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 -
将以下代码行添加到文件中:
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
-
确保配置文件归 apigee 用户所有且可供该用户读取:
chown apigee:apigee $opt/apigee/customer/application/<file>.properties
-
重启组件:
/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 格式密钥库导入或导出证书和/或密钥,也可以从 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 中,请参阅将证书转换为受支持的格式。