Show Table of Contents
6.11. 在 Overcloud 中启用 SSL/TLS
默认情况下,Overcloud 使用未加密的端点(endpoints)提供相关的服务。因此,Overcloud 的配置需要一个额外的环境文件来为它的 Public API 端点启用 SSL/TLS。
注意
这个过程只为 Public API 端点启用 SSL/TLS。Internal API 和 Admin API 仍然没有加密。
这个过程需要网络分离来为 Public API 定义端点。如需了解与网络分类相关的信息,请参阅 第 6.2 节 “分离网络”。
请确认已有一个私人密钥以及创建了证书授权(CA)。如需了解更多与创建 SSL/TLS 密钥和证书授权文件的信息,请参阅 附录 A, SSL/TLS 证书配置。
启用 SSL/TLS
从 Heat 模板集合中复制
enable-tls.yaml 环境文件:
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/enable-tls.yaml ~/templates/.
编辑这个文件,对以下参数进行修改:
parameter_defaults:
- SSLCertificate:
- 把证书文件的内容复制到
SSLCertificate参数中。例如:parameter_defaults: SSLCertificate: | -----BEGIN CERTIFICATE----- MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV ... sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp -----END CERTIFICATE-----重要
证书授权内容中的所有新行都需要有相同的行缩进。 - SSLKey:
- 把私人密钥的内容复制到
SSLKey参数。例如>parameter_defaults: ... SSLKey: | -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAqVw8lnQ9RbeI1EdLN5PJP0lVO9hkJZnGP6qb6wtYUoy1bVP7 ... ctlKn3rAAdyumi4JDjESAXHIKFjJNOLrBmpQyES4XpZUC7yhqPaU -----END RSA PRIVATE KEY-----重要
私人密钥的内容中的所有新行都需要有相同的行缩进。 - EndpointMap:
EndpointMap包括了使用 HTTPS 和 HTTP 的服务的映射信息。如果 SSL 使用 DNS,不要修改这个部分的默认设置。但是,如果使用一个 IP 地址作为 SSL 证书的常规名(请参阅 附录 A, SSL/TLS 证书配置),使用IP_ADDRESS替换所有CLOUDNAME实例。运行以下命令:$ sed -i 's/CLOUDNAME/IP_ADDRESS/' ~/templates/enable-tls.yaml
重要
不要使用实际的值替换IP_ADDRESS和CLOUDNAME,Heat 会在 Overcloud 创建的过程中替换这些变量。
resource_registry:
- OS::TripleO::NodeTLSData:
- 把
OS::TripleO::NodeTLSData:的资源 URL 改为一个绝对的 URL:resource_registry: OS::TripleO::NodeTLSData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/tls-cert-inject.yaml
注入一个 Root 证书
如果使用一个自签发的证书,或证书的签发者不在 Overcloud 镜像中的默认的 trust store 中,则需要把证书“注入”到 Overcloud 镜像中。从 heat 模板集合中复制
inject-trust-anchor.yaml 环境文件:
$ cp -r /usr/share/openstack-tripleo-heat-templates/environments/inject-trust-anchor.yaml ~/templates/.
编辑这个文件,对以下参数进行修改:
parameter_defaults:
- SSLRootCertificate:
- 把 root 证书授权文件的内容复制到
SSLRootCertificate参数。例如:parameter_defaults: SSLRootCertificate: | -----BEGIN CERTIFICATE----- MIIDgzCCAmugAwIBAgIJAKk46qw6ncJaMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV ... sFW3S2roS4X0Af/kSSD8mlBBTFTCMBAj6rtLBKLaQbIxEpIzrgvp -----END CERTIFICATE-----重要
证书授权内容中的所有新行都需要有相同的行缩进。
resource_registry:
- OS::TripleO::NodeTLSCAData:
- 把
OS::TripleO::NodeTLSCAData:的资源 URL 改为一个绝对的 URL:resource_registry: OS::TripleO::NodeTLSCAData: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/tls/ca-inject.yaml
配置 DNS 端点
如果使用 DNS 主机名通过 SSL/TLS 来访问 Overcloud,创建一个新环境文件(
~/templates/cloudname.yaml)来定义 Overcloud 端点的主机名。使用以下参数:
parameter_defaults:
- CloudName:
- Overcloud 端点的 DNS 主机名。
- DnsServers:
- 使用的 DNS 服务器列表。配置的 DNS 服务器需要包括一个配置的
CloudName的项,它需要和 Public API 的 IP 地址相匹配。
以下是这个文件的一个示例:
parameter_defaults: CloudName: overcloud.example.com DnsServers: ["10.0.0.1"]
在 Overcloud 创建期间添加环境文件
- 启用 SSL/TLS 的环境文件(
enable-tls.yaml) - 设置 DNS 主机名的环境文件(
cloudname.yaml) - 注入 root 证书授权的环境文件(
inject-trust-anchor.yaml)
例如:
$ openstack overcloud deploy --templates [...] -e /home/stack/templates/enable-tls.yaml -e ~/templates/cloudname.yaml -e ~/templates/inject-trust-anchor.yaml

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.