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 部署脚本。例如:
安装
python-novajoin
以便与 IdM 集成:[stack@undercloud-0 ~]$ sudo yum install python-novajoin
运行
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),这是您的部署的不同值。
将 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 ...
在 undercloud 中安装
novajoin
服务:[stack@undercloud ~]$ openstack undercloud install
将 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
为所有端点创建一个
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 集成,并保留现有的公共端点证书
确保
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 生成的证书替换现有的公共端点证书
确保
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 部署脚本。例如:
安装
python-novajoin
以便与 IdM 集成:[stack@undercloud-0 ~]$
运行
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),这是您的部署的不同值。
将 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 ...
将 undercloud 配置为使用
novajoin
,并为 DNS 添加 OTP、IdM IP 和 overcloud 域:[stack@undercloud-0 ~]$ vi hiera_override.yaml nova::metadata::novajoin::api::ipa_domain: site1.lab.local ...
在 undercloud 中安装
novajoin
服务:[stack@undercloud ~]$ openstack undercloud install
将 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
为每个端点创建一个
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'}]
为每个端点创建
extras.yaml
映射。例如:parameter_defaults: MakeHomeDir: True IdMNoNtpSetup: false IdMDomain: redhat.local DnsSearchDomains: ["site1.redhat.local","redhat.local"]
17.4.5. 为使用 IdM 子域的部署配置 undercloud 集成,并保留现有的公共端点证书
此流程解释了如何为使用 IdM 子域的部署配置 undercloud 集成,并仍然保留现有的公共端点证书。
确保
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 生成的证书替换现有的公共端点证书。
确保
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.yaml
在 overcloud deploy
命令中被引用为 enable-internal-tls.yaml
。另外,enable-tls.yaml
中的旧公共端点证书会使用 haproxy-public-tls-certmonger.yaml
替换 certmonger,但该文件仍必须在升级过程中被引用。