8.2. 更改 SSL 证书
要更改 SSL 证书,您可以编辑清单文件并运行安装程序。安装程序验证所有 Ansible Automation Platform 组件是否正常工作。安装程序可能需要很长时间才能运行。
或者,您可以手动更改 SSL 证书。这速度更快,但没有自动验证。
红帽建议您使用安装程序更改 Ansible Automation Platform 实例。
8.2.1. 先决条件
- 如果存在中间证书颁发机构,您必须将它附加到服务器证书中。
- 自动化控制器和自动化中心都使用 NGINX,因此服务器证书必须采用 PEM 格式。
- 为证书使用正确的顺序:服务器证书首先,后跟中间证书颁发机构。
如需更多信息,请参阅 NGINX 文档中的 ssl 证书部分。
8.2.2. 使用安装程序更改 SSL 证书和密钥
以下流程描述了如何更改清单文件中的 SSL 证书和密钥。
流程
- 将新的 SSL 证书和密钥复制到相对于 Ansible Automation Platform 安装程序的路径。
将 SSL 证书和密钥的绝对路径添加到清单文件。有关设置这些变量的指导,请参阅 Red Hat AnsibleAutomation Platform 安装指南中的 Automation controller 变量、Automation hub 变量 和 Event-Driven Ansible 控制器变量部分。https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.4/html/red_hat_ansible_automation_platform_installation_guide/index#ref-hub-variables
-
自动化控制器:
web_server_ssl_cert
,web_server_ssl_key
,custom_ca_cert
-
自动化中心:
automationhub_ssl_cert
,automationhub_ssl_key
,custom_ca_cert
-
event-Driven Ansible 控制器:
automationedacontroller_ssl_cert
,automationedacontroller_ssl_key
,custom_ca_cert
注意custom_ca_cert
必须是签署中间证书颁发机构的根证书颁发机构。此文件安装在/etc/pki/ca-trust/source/anchors
中。-
自动化控制器:
- 运行安装程序。
8.2.3. 手动更改 SSL 证书
8.2.3.1. 在自动化控制器中手动更改 SSL 证书和密钥
以下流程描述了如何在 Automation Controller 上手动更改 SSL 证书和密钥。
流程
备份当前的 SSL 证书:
cp /etc/tower/tower.cert /etc/tower/tower.cert-$(date +%F)
备份当前密钥文件:
cp /etc/tower/tower.key /etc/tower/tower.key-$(date +%F)+
-
将新 SSL 证书复制到
/etc/tower/tower.cert
。 -
将新密钥复制到
/etc/tower/tower.key
。 恢复 SELinux 上下文:
restorecon -v /etc/tower/tower.cert /etc/tower/tower.key
为证书和密钥文件设置适当的权限:
chown root:awx /etc/tower/tower.cert /etc/tower/tower.key chmod 0600 /etc/tower/tower.cert /etc/tower/tower.key
测试 NGINX 配置:
nginx -t
重新载入 NGINX:
systemctl reload nginx.service
验证是否安装了新的 SSL 证书和密钥:
true | openssl s_client -showcerts -connect ${CONTROLLER_FQDN}:443
8.2.3.2. 在 OpenShift Container Platform 上更改自动化控制器中的 SSL 证书和密钥
以下流程描述了如何为 OpenShift Container Platform 上运行的自动化控制器更改 SSL 证书和密钥。
流程
- 将签名的 SSL 证书和密钥复制到安全位置。
在 OpenShift 中创建 TLS secret:
oc create secret tls ${CONTROLLER_INSTANCE}-certs-$(date +%F) --cert=/path/to/ssl.crt --key=/path/to/ssl.key
修改自动化控制器自定义资源,将
route_tls_secret
和新 secret 的名称添加到 spec 部分。oc edit automationcontroller/${CONTROLLER_INSTANCE}
... spec: route_tls_secret: automation-controller-certs-2023-04-06 ...
TLS secret 的名称是任意的。在本例中,它的时间戳为创建 secret 的日期,以便将其与应用到自动化控制器实例的其他 TLS secret 进行区分。
- 等待几分钟,以便应用更改。
验证是否安装了新的 SSL 证书和密钥:
true | openssl s_client -showcerts -connect ${CONTROLLER_FQDN}:443
8.2.3.3. 在 Event-Driven Ansible 控制器上更改 SSL 证书和密钥
以下流程描述了如何在 Event-Driven Ansible 控制器上手动更改 SSL 证书和密钥。
流程
备份当前的 SSL 证书:
cp /etc/ansible-automation-platform/eda/server.cert /etc/ansible-automation-platform/eda/server.cert-$(date +%F)
备份当前密钥文件:
cp /etc/ansible-automation-platform/eda/server.key /etc/ansible-automation-platform/eda/server.key-$(date +%F)
-
将新 SSL 证书复制到
/etc/ansible-automation-platform/eda/server.cert
。 -
将新密钥复制到
/etc/ansible-automation-platform/eda/server.key
。 恢复 SELinux 上下文:
restorecon -v /etc/ansible-automation-platform/eda/server.cert /etc/ansible-automation-platform/eda/server.key
为证书和密钥文件设置适当的权限:
chown root:eda /etc/ansible-automation-platform/eda/server.cert /etc/ansible-automation-platform/eda/server.key
chmod 0600 /etc/ansible-automation-platform/eda/server.cert /etc/ansible-automation-platform/eda/server.key
测试 NGINX 配置:
nginx -t
重新载入 NGINX:
systemctl reload nginx.service
验证是否安装了新的 SSL 证书和密钥:
true | openssl s_client -showcerts -connect ${CONTROLLER_FQDN}:443
8.2.3.4. 在自动化中心中手动更改 SSL 证书和密钥
以下流程描述了如何在自动化中心中手动更改 SSL 证书和密钥。
流程
备份当前的 SSL 证书:
cp /etc/pulp/certs/pulp_webserver.crt /etc/pulp/certs/pulp_webserver.crt-$(date +%F)
备份当前密钥文件:
cp /etc/pulp/certs/pulp_webserver.key /etc/pulp/certs/pulp_webserver.key-$(date +%F)
-
将新 SSL 证书复制到
/etc/pulp/certs/pulp_webserver.crt
。 -
将新密钥复制到
/etc/pulp/certs/pulp_webserver.key
。 恢复 SELinux 上下文:
restorecon -v /etc/pulp/certs/pulp_webserver.crt /etc/pulp/certs/pulp_webserver.key
为证书和密钥文件设置适当的权限:
chown root:pulp /etc/pulp/certs/pulp_webserver.crt /etc/pulp/certs/pulp_webserver.key
chmod 0600 /etc/pulp/certs/pulp_webserver.crt /etc/pulp/certs/pulp_webserver.key
测试 NGINX 配置:
nginx -t
重新载入 NGINX:
systemctl reload nginx.service
验证是否安装了新的 SSL 证书和密钥:
true | openssl s_client -showcerts -connect ${CONTROLLER_FQDN}:443