第 2 章 将 TLS-e 迁移到 RHOSO 部署
如果您在 Red Hat OpenStack Platform (RHOSP) 17.1 部署中启用了 TLS (TLS-e),则必须将 TLS-e 迁移到 OpenShift (RHOSO)部署上的 Red Hat OpenStack Services。
RHOSO 部署使用 cert-manager operator 来发布、跟踪和更新证书。在以下步骤中,您将从您用来在 RHOSP 环境中提供证书的 FreeIPA 实例中提取 CA 签名证书,然后在 RHOSO 环境中将它们导入到 cert-manager 中。因此,您可以最小化 Compute 节点上的中断,因为您不需要安装新的信任链。
然后,您将弃用之前的 FreeIPA 节点,不再使用它来发布证书。如果您使用 IPA 服务器为非 RHOSP 系统发布证书,则可能无法实现。
- 以下流程在 FreeIPA 4.10.1 服务器上被重现。文件和目录的位置可能会根据版本而改变。
- 如果签名密钥存储在硬件安全模块(HSM)中,而不是 NSS 共享数据库(NSSDB)中,并且密钥可以被检索,则可能需要特殊的 HSM 工具。
先决条件
- 您的 RHOSP 部署使用 TLS-e。
- 确保新部署中的后端服务尚未启动。
定义以下 shell 变量:值是示例,引用单节点单机 director 部署。将这些示例值替换为适合您的环境的值:
IPA_SSH="ssh -i <path_to_ssh_key> <admin user>@<freeipa-server-ip-address> sudo"
IPA_SSH="ssh -i <path_to_ssh_key> <admin user>@<freeipa-server-ip-address> sudo"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
要找到 CA 证书和密钥,请列出 NSSDB 中的所有证书:
$IPA_SSH certutil -L -d /etc/pki/pki-tomcat/alias
$IPA_SSH certutil -L -d /etc/pki/pki-tomcat/alias
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
-L
选项列出所有证书。 -d
选项指定证书的存储位置。该命令生成类似以下示例的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
从
/etc/pki/pki-tomcat/alias
目录中导出证书和密钥。以下示例使用caSigningCert cert-pki-ca
证书:$IPA_SSH pk12util -o /tmp/freeipa.p12 -n 'caSigningCert\ cert-pki-ca' -d /etc/pki/pki-tomcat/alias -k /etc/pki/pki-tomcat/alias/pwdfile.txt -w /etc/pki/pki-tomcat/alias/pwdfile.txt
$IPA_SSH pk12util -o /tmp/freeipa.p12 -n 'caSigningCert\ cert-pki-ca' -d /etc/pki/pki-tomcat/alias -k /etc/pki/pki-tomcat/alias/pwdfile.txt -w /etc/pki/pki-tomcat/alias/pwdfile.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意命令生成包含证书和密钥的 P12 文件。
/etc/pki/pki-tomcat/alias/pwdfile.txt
文件包含保护密钥的密码。您可以使用密码提取密钥并生成新文件/tmp/freeipa.p12
。您还可以选择其他密码。如果为新文件选择了其他密码,请替换-w
选项的参数,或者使用-W
选项,后跟密码,以明文形式替换。使用该文件,您还可以使用
openssl pkcs12
命令获取证书和密钥。创建包含 root CA 的 secret:
oc create secret generic rootca-internal
$ oc create secret generic rootca-internal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 FreeIPA 导入证书和密钥:
oc patch secret rootca-internal -p="{\"data\":{\"ca.crt\": \"`$IPA_SSH openssl pkcs12 -in /tmp/freeipa.p12 -passin file:/etc/pki/pki-tomcat/alias/pwdfile.txt -nokeys | openssl x509 | base64 -w 0`\"}}" oc patch secret rootca-internal -p="{\"data\":{\"tls.crt\": \"`$IPA_SSH openssl pkcs12 -in /tmp/freeipa.p12 -passin file:/etc/pki/pki-tomcat/alias/pwdfile.txt -nokeys | openssl x509 | base64 -w 0`\"}}" oc patch secret rootca-internal -p="{\"data\":{\"tls.key\": \"`$IPA_SSH openssl pkcs12 -in /tmp/freeipa.p12 -passin file:/etc/pki/pki-tomcat/alias/pwdfile.txt -nocerts -noenc | openssl rsa | base64 -w 0`\"}}"
$ oc patch secret rootca-internal -p="{\"data\":{\"ca.crt\": \"`$IPA_SSH openssl pkcs12 -in /tmp/freeipa.p12 -passin file:/etc/pki/pki-tomcat/alias/pwdfile.txt -nokeys | openssl x509 | base64 -w 0`\"}}" $ oc patch secret rootca-internal -p="{\"data\":{\"tls.crt\": \"`$IPA_SSH openssl pkcs12 -in /tmp/freeipa.p12 -passin file:/etc/pki/pki-tomcat/alias/pwdfile.txt -nokeys | openssl x509 | base64 -w 0`\"}}" $ oc patch secret rootca-internal -p="{\"data\":{\"tls.key\": \"`$IPA_SSH openssl pkcs12 -in /tmp/freeipa.p12 -passin file:/etc/pki/pki-tomcat/alias/pwdfile.txt -nocerts -noenc | openssl rsa | base64 -w 0`\"}}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 cert-manager 签发者并引用 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除之前创建的 p12 文件:
$IPA_SSH rm /tmp/freeipa.p12
$IPA_SSH rm /tmp/freeipa.p12
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证是否已创建所需资源:
oc get issuers
$ oc get issuers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get secret rootca-internal -o yaml
$ oc get secret rootca-internal -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
采用完成后,cert-manager operator 会发布新证书,并使用新证书更新 secret。因此,control plane 上的 pod 会自动重启,以获取新证书。在数据平面上,您必须手动启动新部署并重启某些进程以使用新证书。旧证书会保持活跃状态,直到 control plane 和 data plane 都获取新证书。