Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

17.4. 配置端点以使用 TLS

本节介绍如何为现有部署启用 TLS 端点加密,然后如何检查端点是否已正确配置。

在随处启用 TLS 时,有不同的升级路径,具体取决于您的域是如何构成的。这些示例使用示例域名来描述升级路径:

  • 重复利用现有的公共端点证书,并在 overcloud 域(lab.local) 的内部 和管理端点(lab.local)上都启用 TLS。
  • 允许 IdM 发布新的公共端点证书,并在 overcloud 域( lab.local )与 IdM 域(lab.local) 的内部admin 端点上都启用 TLS。
  • 重复使用现有的公共端点证书,并在其中 overcloud 域(site1.lab.local)的 内部和外部 端点上启用 TLS (lab.local )是 IdM 域的子域(lab.local)。
  • 允许 IdM 发布新的公共端点证书,并在其中 overcloud 域(site1.lab.local)是 IdM 域的子域(lab.local)的 内部和外部 端点上启用 TLS。

本节中的步骤解释了如何使用上述各种组合配置此集成。

17.4.1. 使用与 IdM 相同的域为部署配置 undercloud 集成

此流程描述了如何为使用与 IdM 相同的域的部署配置 undercloud 集成。

Red Hat OpenStack Platform 使用 novajoin 与 Red Hat Identity Management (IdM)集成,然后问题和管理加密证书。在此过程中,您将使用 IdM 注册 undercloud,生成令牌,在 undercloud 配置中启用令牌,然后重新运行 undercloud 和 overcloud 部署脚本。例如:

  1. 安装 python-novajoin 以便与 IdM 集成:

    [stack@undercloud-0 ~]$ sudo yum install python-novajoin
  2. 运行 novajoin 配置脚本,并提供您的 IdM 部署的配置详情。例如:

    [stack@undercloud-0 ~]$ sudo novajoin-ipa-setup --principal admin --password ComplexRedactedPassword \
      --server ipa.lab.local --realm lab.local --domain lab.local \
      --hostname undercloud-0.lab.local --precreate
    ...
    0Uvua6NyIWVkfCSTOmwbdAobsqGH2GONRJrW24MoQ4wg

    此输出包括 IdM 的一次性密码(OTP),这是您的部署的不同值。

  3. 将 undercloud 配置为使用 novajoin,添加一次性密码(OTP),对 DNS 使用 IdM IP 地址,并描述 overcloud 域。您的部署需要调整此示例:

    [stack@undercloud ~]$ vi undercloud.conf
    ...
    enable_novajoin = true
    ipa_otp = 0Uvua6NyIWVkfCSTOmwbdAobsqGH2GONRJrW24MoQ4wg
    undercloud_hostname = undercloud-0.lab.local
    undercloud_nameservers = X.X.X.X
    overcloud_domain_name = lab.local
    ...
  4. 在 undercloud 中安装 novajoin 服务:

    [stack@undercloud ~]$ openstack undercloud install
  5. 将 overcloud IP 地址添加到 DNS。您需要修改此示例以适合您的部署:

    注意:检查 overcloud 的 network-environment.yaml,然后在各个网络范围内选择一个 VIP。

    [root@ipa ~]$ ipa dnsrecord-add lab.local overcloud --a-rec=10.0.0.101
    [root@ipa ~]# ipa dnszone-add ctlplane.lab.local
    [root@ipa ~]# ipa dnsrecord-add ctlplane.lab.local overcloud --a-rec 192.168.24.101
    [root@ipa ~]# ipa dnszone-add internalapi.lab.local
    [root@ipa ~]# ipa dnsrecord-add internalapi.lab.local overcloud --a-rec 172.17.1.101
    [root@ipa ~]# ipa dnszone-add storage.lab.local
    [root@ipa ~]# ipa dnsrecord-add storage.lab.local overcloud --a-rec 172.17.3.101
    [root@ipa ~]# ipa dnszone-add storagemgmt.lab.local
    [root@ipa ~]# ipa dnsrecord-add storagemgmt.lab.local overcloud --a-rec 172.17.4.101
  6. 为所有端点创建一个 public_vip.yaml 映射:

    Parameter_defaults:
        PublicVirtualFixedIPs: [{'ip_address':'10.0.0.101'}]
        ControlFixedIPs: [{'ip_address':'192.168.24.101'}]
        InternalApiVirtualFixedIPs: [{'ip_address':'172.17.1.101'}]
        StorageVirtualFixedIPs: [{'ip_address':'172.17.3.101'}]
        StorageMgmtVirtualFixedIPs: [{'ip_address':'172.17.4.101'}]
        RedisVirtualFixedIPs: [{'ip_address':'172.17.1.102'}]

17.4.2. 为使用与 IdM 相同的域的部署配置 overcloud 集成,并保留现有的公共端点证书

  1. 确保 openstack overcloud deploy 命令(具有有效设置)中存在以下参数,然后重新运行部署命令:

    • ' --NTP-server' - 如果还没有设置,请指定 NTP 服务器以适应您的环境。IdM 服务器应该正在运行 ntp。
    • cloud-names.yaml - 包含初始部署命令的 FQDN (而非 IP)。
    • enable-tls.yaml - 包含新的 overcloud 证书。例如,请参阅 https://github.com/openstack/tripleo-heat-templates/blob/master/environments/ssl/enable-tls.yaml
    • public_vip.yaml - 将端点映射到特定的 ip,以便 dns 可以匹配。
    • enable-internal-tls.yaml - 为内部端点启用 TLS。
    • tls-everywhere-endpoints-dns.yaml - Configures TLS endpoints using DNS names.您可以查看此文件的内容来检查配置范围。
    • HAProxy-internal-tls-certmonger.yaml - certmonger 将管理 haproxy 中的内部证书。
    • inject-trust-anchor.yaml - 添加 root 证书颁发机构。只有证书依赖默认尚未被默认使用的通用集合的 CA 链时才需要 ; 例如,当使用自签名时。

      例如:

      [ stack@undercloud ~]$ openstack overcloud deploy \
      ...
        --ntp-server 10.13.57.78 \
        -e /home/stack/cloud-names.yaml \
        -e /home/stack/enable-tls.yaml \
        -e /home/stack/public_vip.yaml \
        -e <tripleo-heat-templates>/environments/ssl/enable-internal-tls.yaml \
        -e <tripleo-heat-templates>/environments/ssl/tls-everywhere-endpoints-dns.yaml \
        -e <tripleo-heat-templates>/environments/services/haproxy-internal-tls-certmonger.yaml \
        -e /home/stack/inject-trust-anchor.yaml
      ...
      注意

17.4.3. 为使用与 IdM 相同的域的部署配置 overcloud 集成,并使用 IdM 生成的证书替换现有的公共端点证书

  1. 确保 openstack overcloud deploy 命令(具有有效设置)中存在以下参数,然后重新运行部署命令:

    • ' --NTP-server' - 如果还没有设置,请指定 NTP 服务器以适应您的环境。IdM 服务器应该正在运行 ntp。
    • cloud-names.yaml - 包含初始部署命令的 FQDN (而非 IP)。
    • enable-tls.yaml - 包含新的 overcloud 证书。例如,请参阅 https://github.com/openstack/tripleo-heat-templates/blob/master/environments/ssl/enable-tls.yaml
    • public_vip.yaml - 将端点映射到特定的 ip,以便 dns 可以匹配。
    • enable-internal-tls.yaml - 为内部端点启用 TLS。
    • tls-everywhere-endpoints-dns.yaml - Configures TLS endpoints using DNS names.您可以查看此文件的内容来检查配置范围。
    • HAProxy-public-tls-certmonger.yaml - certmonger 将管理 haproxy 中的内部和公共证书。
    • inject-trust-anchor.yaml - 添加 root 证书颁发机构。只有证书依赖默认尚未被默认使用的通用集合的 CA 链时才需要 ; 例如,当使用自签名时。

      例如:

      [ stack@undercloud ~]$ openstack overcloud deploy \
      ...
        --ntp-server 10.13.57.78 \
        -e /home/stack/cloud-names.yaml \
        -e /home/stack/enable-tls.yaml \
        -e /home/stack/public_vip.yaml \
        -e <tripleo-heat-templates>/environments/ssl/enable-internal-tls.yaml \
        -e <tripleo-heat-templates>/environments/ssl/tls-everywhere-endpoints-dns.yaml \
        -e <tripleo-heat-templates>/environments/services/haproxy-public-tls-certmonger.yaml \
        -e /home/stack/inject-trust-anchor.yaml
      ...
      注意
注意

模板 enable-internal-tls.j2.yaml 在 overcloud deploy 命令中被引用为 enable-internal-tls.yaml

另外,enable-tls.yaml 中的旧公共端点证书将被 certmonger 替换为 haproxy-public-tls-certmonger.yaml,但该文件仍必须在升级过程中被引用。

17.4.4. 为使用 IdM 子域的部署配置 undercloud 集成

此流程解释了如何为使用 IdM 子域的部署配置 undercloud 集成。

Red Hat OpenStack Platform 使用 novajoin 与 Red Hat Identity Management (IdM)集成,然后问题和管理加密证书。在此过程中,您将使用 IdM 注册 undercloud,生成令牌,在 undercloud 配置中启用令牌,然后重新运行 undercloud 和 overcloud 部署脚本。例如:

  1. 安装 python-novajoin 以便与 IdM 集成:

    [stack@undercloud-0 ~]$
  2. 运行 novajoin 配置脚本,并提供您的 IdM 部署的配置详情。例如:

    [stack@undercloud-0 ~]$ sudo novajoin-ipa-setup --principal admin --password ComplexRedactedPassword \
      --server ipa.lab.local --realm lab.local --domain lab.local \
      --hostname undercloud-0.site1.lab.local --precreate
    ...
    0Uvua6NyIWVkfCSTOmwbdAobsqGH2GONRJrW24MoQ4wg

    此输出包括 IdM 的一次性密码(OTP),这是您的部署的不同值。

  3. 将 undercloud 配置为使用 novajoin,并为 DNS 和 NTP 添加 OTP、IdM IP 和 overcloud 域:

    [stack@undercloud ~]$ vi undercloud.conf
    …
    [DEFAULT]
    undercloud_ntp_servers=X.X.X.X
    hieradata_override = /home/stack/hiera_override.yaml
    enable_novajoin = true
    ipa_otp = 0Uvua6NyIWVkfCSTOmwbdAobsqGH2GONRJrW24MoQ4wg
    undercloud_hostname = undercloud-0.site1.lab.local
    undercloud_nameservers = X.X.X.X
    overcloud_domain_name = site1.lab.local
    ...
  4. 将 undercloud 配置为使用 novajoin,并为 DNS 添加 OTP、IdM IP 和 overcloud 域:

    [stack@undercloud-0 ~]$ vi hiera_override.yaml
    nova::metadata::novajoin::api::ipa_domain: site1.lab.local
    ...
  5. 在 undercloud 中安装 novajoin 服务:

    [stack@undercloud ~]$ openstack undercloud install
  6. 将 overcloud IP 地址添加到 DNS。您需要修改此示例以适合您的部署:

    注意:检查 overcloud 的 network-environment.yaml,然后在各个网络范围内选择一个 VIP。

    [root@ipa ~]$ ipa dnsrecord-add site1.lab.local overcloud --a-rec=10.0.0.101
    [root@ipa ~]# ipa dnszone-add site1.ctlplane.lab.local
    [root@ipa ~]# ipa dnsrecord-add site1.ctlplane.lab.local overcloud --a-rec 192.168.24.101
    [root@ipa ~]# ipa dnszone-add site1.internalapi.lab.local
    [root@ipa ~]# ipa dnsrecord-add site1.internalapi.lab.local overcloud --a-rec 172.17.1.101
    [root@ipa ~]# ipa dnszone-add site1.storage.lab.local
    [root@ipa ~]# ipa dnsrecord-add site1.storage.lab.local overcloud --a-rec 172.17.3.101
    [root@ipa ~]# ipa dnszone-add site1.storagemgmt.lab.local
    [root@ipa ~]# ipa dnsrecord-add site1.storagemgmt.lab.local overcloud --a-rec 172.17.4.101
  7. 为每个端点创建一个 public_vip.yaml 映射。例如:

    Parameter_defaults:
        PublicVirtualFixedIPs: [{'ip_address':'10.0.0.101'}]
        ControlFixedIPs: [{'ip_address':'192.168.24.101'}]
        InternalApiVirtualFixedIPs: [{'ip_address':'172.17.1.101'}]
        StorageVirtualFixedIPs: [{'ip_address':'172.17.3.101'}]
        StorageMgmtVirtualFixedIPs: [{'ip_address':'172.17.4.101'}]
        RedisVirtualFixedIPs: [{'ip_address':'172.17.1.102'}]
  8. 为每个端点创建 extras.yaml 映射。例如:

    parameter_defaults:
      MakeHomeDir: True
      IdMNoNtpSetup: false
      IdMDomain: redhat.local
      DnsSearchDomains: ["site1.redhat.local","redhat.local"]

17.4.5. 为使用 IdM 子域的部署配置 undercloud 集成,并保留现有的公共端点证书

此流程解释了如何为使用 IdM 子域的部署配置 undercloud 集成,并仍然保留现有的公共端点证书。

  1. 确保 openstack overcloud deploy 命令(具有有效设置)中存在以下参数,然后重新运行部署命令:

    • ' --NTP-server' - 如果还没有设置,请指定 NTP 服务器以适应您的环境。IdM 服务器应该正在运行 ntp。
    • cloud-names.yaml - 包含初始部署命令的 FQDN (而非 IP)。
    • enable-tls.yaml - 包含新的 overcloud 证书。例如,请参阅 https://github.com/openstack/tripleo-heat-templates/blob/master/environments/ssl/enable-tls.yaml
    • public_vip.yaml - 包含端点映射到特定的 ip,以便 dns 可以匹配。
    • 'Extras.yaml ' - Contains settings for pam to make home directorys on login, no ntp setup、base IdM 域以及 dns search for resolv.conf。
    • enable-internal-tls.yaml - 为内部端点启用 TLS。
    • tls-everywhere-endpoints-dns.yaml - Configures TLS endpoints using DNS names.您可以查看此文件的内容来检查配置范围。
    • HAProxy-internal-tls-certmonger.yaml - certmonger 将管理 haproxy 中的内部证书。
    • inject-trust-anchor.yaml - 添加 root 证书颁发机构。只有证书依赖默认尚未被默认使用的通用集合的 CA 链时才需要 ; 例如,当使用自签名时。

      例如:

      [ stack@undercloud ~]$ openstack overcloud deploy \
      ...
        --ntp-server 10.13.57.78 \
        -e /home/stack/cloud-names.yaml \
        -e /home/stack/enable-tls.yaml \
        -e /home/stack/public_vip.yaml \
        -e /home/stack/extras.yaml \
        -e <tripleo-heat-templates>/environments/ssl/enable-internal-tls.yaml \
        -e <tripleo-heat-templates>/environments/ssl/tls-everywhere-endpoints-dns.yaml \
        -e <tripleo-heat-templates>/environments/services/haproxy-internal-tls-certmonger.yaml \
        -e /home/stack/inject-trust-anchor.yaml
      ...
      注意

17.4.6. 为使用 IdM 子域的部署配置 undercloud 集成,并使用 IdM 生成的证书替换现有的公共端点证书

此流程解释了如何使用 IdM 子域为部署配置 undercloud 集成,以及如何使用 IdM 生成的证书替换现有的公共端点证书。

  1. 确保 openstack overcloud deploy 命令(具有有效设置)中存在以下参数,然后重新运行部署命令:

    • ' --NTP-server' - 如果还没有设置,请指定 NTP 服务器以适应您的环境。IdM 服务器应该正在运行 ntp。
    • cloud-names.yaml - 包含初始部署命令的 FQDN (而非 IP)。
    • enable-tls.yaml - 包含新的 overcloud 证书。例如,请参阅 https://github.com/openstack/tripleo-heat-templates/blob/master/environments/ssl/enable-tls.yaml
    • public_vip.yaml - 将端点映射到特定的 ip,以便 dns 可以匹配。
    • 'Extras.yaml ' - Contains settings for pam to make home directorys on login, no ntp setup、base IdM 域以及 dns search for resolv.conf。
    • enable-internal-tls.yaml - 为内部端点启用 TLS。
    • tls-everywhere-endpoints-dns.yaml - Configures TLS endpoints using DNS names.您可以查看此文件的内容来检查配置范围。
    • HAProxy-public-tls-certmonger.yaml - certmonger 将管理 haproxy 中的内部和公共证书。
    • inject-trust-anchor.yaml - 添加 root 证书颁发机构。只有证书依赖默认尚未被默认使用的通用集合的 CA 链时才需要 ; 例如,当使用自签名时。

      例如:

      [ stack@undercloud ~]$ openstack overcloud deploy \
      ...
        --ntp-server 10.13.57.78 \
        -e /home/stack/cloud-names.yaml \
        -e /home/stack/enable-tls.yaml \
        -e /home/stack/public_vip.yaml \
        -e /home/stack/extras.yaml \
        -e <tripleo-heat-templates>/environments/ssl/enable-internal-tls.yaml \
        -e <tripleo-heat-templates>/environments/ssl/tls-everywhere-endpoints-dns.yaml \
        -e <tripleo-heat-templates>/environments/services/haproxy-public-tls-certmonger.yaml \
        -e /home/stack/inject-trust-anchor.yaml
      ...
      注意
注意

在本例中,模板 enable-internal-tls.j2.yamlovercloud deploy 命令中被引用为 enable-internal-tls.yaml。另外,enable-tls.yaml 中的旧公共端点证书会使用 haproxy-public-tls-certmonger.yaml 替换 certmonger,但该文件仍必须在升级过程中被引用。