附录 E. Red Hat Virtualization 和加密通信

E.1. 替换 Red Hat Virtualization Manager CA 证书

您可以配置机构的第三方 CA 证书,以通过 HTTPS 对连接到 Red Hat Virtualization Manager 的用户进行身份验证。

第三方 CA 证书不用于 Manager 和主机 或磁盘传输 URL 进行验证。这些 HTTPS 连接使用 Manager 生成的自签名证书。

重要

当您切换到自定义 HTTPS 证书时,必须使用自己的 CA 证书分发来在客户端上提供该证书。

如果您要与 Red Hat Satellite 集成,则需要手动将正确的证书导入到 Satellite 中。

如果您在 P12 文件中从 CA 收到私钥和证书,请使用以下步骤提取它们。如需其他文件格式,请联系您的 CA。提取私钥和证书后,继续 替换 Red Hat Virtualization Manager Apache CA 证书

E.1.1. 从 P12 捆绑包中提取证书和私钥

内部 CA 将内部生成的密钥和证书存储在一个 P12 文件中(/etc/pki/ovirt-engine/keys/apache.p12)。将新文件存储在同一位置。以下步骤假定新的 P12 文件位于 /tmp/apache.p12 中。

警告

不要更改 /etc/pki 目录或任何子目录的权限和所有权。/etc/pki/etc/pki/ovirt-engine 目录的权限必须保留为默认值 755

流程

  1. 备份当前 apache.p12 文件:

    # cp -p /etc/pki/ovirt-engine/keys/apache.p12 /etc/pki/ovirt-engine/keys/apache.p12.bck
  2. 将当前文件替换为新文件:

    # cp /tmp/apache.p12 /etc/pki/ovirt-engine/keys/apache.p12
  3. 将私钥和证书提取到所需位置:

    # openssl pkcs12 -in /etc/pki/ovirt-engine/keys/apache.p12 -nocerts -nodes > /tmp/apache.key
    # openssl pkcs12 -in /etc/pki/ovirt-engine/keys/apache.p12 -nokeys > /tmp/apache.cer

    如果文件受密码保护,请在命令中添加 -passin pass:password,用 所需的密码 替换 password。

重要

对于新的 Red Hat Virtualization 安装,您必须完成此流程中的所有步骤。

E.1.2. 替换 Red Hat Virtualization Manager Apache CA 证书

您可以配置您组织的第三方 CA 证书,以通过 HTTPS 对连接到管理门户和虚拟机门户的验证身份。

警告

不要更改 /etc/pki 目录或任何子目录的权限和所有权。/etc/pki/etc/pki/ovirt-engine 目录的权限必须保留为默认值 755

前提条件

  • 第三方 CA (证书授权)证书。它作为 PEM 文件提供。证书链必须完成为 root 证书。链的顺序非常重要,且必须是从最后的中间证书到 root 证书。此流程假定 /tmp/3rd-party-ca-cert.pem 中提供第三方 CA 证书。
  • 要用于 Apache httpd 的私钥。它不能有密码。此流程假定它位于 /tmp/apache.key 中。
  • CA 发布的证书。此流程假定它位于 /tmp/apache.cer 中。

流程

  1. 如果您使用自托管引擎,请将环境设置为全局维护模式。

    # hosted-engine --set-maintenance --mode=global

    如需更多信息,请参阅 维护自托管引擎

  2. 将 CA 证书添加到主机范围内的信任存储中:

    # cp /tmp/3rd-party-ca-cert.pem /etc/pki/ca-trust/source/anchors
    # update-ca-trust
  3. 管理器已配置为使用 /etc/pki/ovirt-engine/apache-ca.pem,它符号链接到 /etc/pki/ovirt-engine/ca.pem。删除符号链接:

    # rm /etc/pki/ovirt-engine/apache-ca.pem
  4. 将您的 CA 证书保存为 /etc/pki/ovirt-engine/apache-ca.pem

    # cp /tmp/3rd-party-ca-cert.pem /etc/pki/ovirt-engine/apache-ca.pem
  5. 备份现有的私钥和证书:

    # cp /etc/pki/ovirt-engine/keys/apache.key.nopass /etc/pki/ovirt-engine/keys/apache.key.nopass.bck
    # cp /etc/pki/ovirt-engine/certs/apache.cer /etc/pki/ovirt-engine/certs/apache.cer.bck
  6. 将私钥复制到所需位置:

    # cp /tmp/apache.key /etc/pki/ovirt-engine/keys/apache.key.nopass
  7. 将私钥所有者设置为 root,并将权限设置为 0640

    # chown root:ovirt  /etc/pki/ovirt-engine/keys/apache.key.nopass
    # chmod 640 /etc/pki/ovirt-engine/keys/apache.key.nopass
  8. 将证书复制到所需位置:

    # cp /tmp/apache.cer /etc/pki/ovirt-engine/certs/apache.cer
  9. 将证书所有者设置为 root,并将权限设置为 0644

    # chown root:ovirt /etc/pki/ovirt-engine/certs/apache.cer
    # chmod 644 /etc/pki/ovirt-engine/certs/apache.cer
  10. 重启 Apache 服务器:

    # systemctl restart httpd.service
  11. 使用以下参数,创建一个新的信任存储配置文件 /etc/ovirt-engine/engine.conf.d/99-custom-truststore.conf

    ENGINE_HTTPS_PKI_TRUST_STORE="/etc/pki/java/cacerts"
    ENGINE_HTTPS_PKI_TRUST_STORE_PASSWORD=""
  12. 复制 /etc/ovirt-engine/ovirt-websocket-proxy.conf.d/10-setup.conf 文件,并使用大于 10 的索引号进行重命名(如 99-setup.conf)。在新文件中添加以下参数:

    SSL_CERTIFICATE=/etc/pki/ovirt-engine/certs/apache.cer
    SSL_KEY=/etc/pki/ovirt-engine/keys/apache.key.nopass
  13. 重启 websocket-proxy 服务:

    # systemctl restart ovirt-websocket-proxy.service
  14. 如果您手动更改了 /etc/ovirt-provider-ovn/conf.d/10-setup-ovirt-provider-ovn.conf 文件,或使用较旧的安装中的配置文件,请确保管理器仍然配置为使用 /etc/pki/ovirt-engine/apache-ca.pem 作为证书源。
  15. 创建 /etc/ovirt-engine-backup/engine-backup-config.d 目录:

    # mkdir -p /etc/ovirt-engine-backup/engine-backup-config.d
  16. 使用以下内容创建 /etc/ovirt-engine-backup/engine-backup-config.d/update-system-wide-pki.sh 文件:这将启用 ovirt-engine-backup 以在恢复时自动更新系统。

    BACKUP_PATHS="${BACKUP_PATHS}
    /etc/ovirt-engine-backup"
    cp -f /etc/pki/ovirt-engine/apache-ca.pem \
      /etc/pki/ca-trust/source/anchors/3rd-party-ca-cert.pem
    update-ca-trust
  17. 重启 ovirt-provider-ovn 服务:

    # systemctl restart ovirt-provider-ovn.service
  18. 重启 ovirt-imageio 服务:

    # systemctl restart ovirt-imageio.service
  19. 重启 ovirt-engine 服务:

    # systemctl restart ovirt-engine.service
  20. 如果您使用自托管引擎,请关闭全局维护模式:

    # hosted-engine --set-maintenance --mode=none

现在,您可以在不看到证书警告的情况下连接到管理门户和虚拟机门户。