附录 A. SSL/TLS 证书配置
作为 第 4.6 节 “配置 director” 或 第 6.11 节 “在 Overcloud 中启用 SSL/TLS” 所介绍的操作的一个可选部分,您可以设置在 Undercloud 或 Overcloud 上使用 SSL/TLS 进行通讯。但是,如果使用一个自签发的证书,则需要一些特定的配置来使用这个证书。
复制默认的 OpenSSL 配置文件用来进行定制。
[stack@host1 ~]$ cp /etc/pki/tls/openssl.cnf .
编辑自定义的
openssl.cnf
文件,把 SSL 参数设置为被 director 使用。一个包括相关参数的示例如下:
[req] distinguished_name = req_distinguished_name req_extensions = v3_req [req_distinguished_name] countryName = Country Name (2 letter code) countryName_default = AU stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Queensland localityName = Locality Name (eg, city) localityName_default = Brisbane organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = Red Hat commonName = Common Name commonName_default = 192.168.0.1 commonName_max = 64 [ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] IP.1 = 192.168.0.1 DNS.1 = instack.localdomain DNS.2 = vip.localdomain
重要
把
commonName_default
设置为 Public API 的 IP 地址,或 FQDN:
- 对于 Undercloud,使用
undercloud.conf
中的undercloud_public_vip
参数。如果这个 IP 地址使用了一个 FQDN,则使用这个 FQDN。
- 对于 Overcloud,使用 Public API 的 IP 地址(您的网络分离环境文件中的
ExternalAllocationPools
参数的第一个地址)。如果这个 IP 地址使用了一个 FQDN,则使用这个 FQDN。
在
alt_names
部分包括相同的 Public API IP 地址作为 IP 项。如果还使用 DNS,在相同的部分包括服务器的主机名作为 DNS 项。如需了解更多与 openssl.cnf
相关的信息,请运行 man openssl.cnf
。
运行以下命令产生密钥对:
$ openssl genrsa -out server-key.pem 2048 $ openssl req -new -x509 -key server-key.pem -out server-cert.pem -days 3650 -config ~/openssl.cnf
使用这个密钥为 Undercloud 或 Overcloud 创建一个 SSL/TLS 证书。
对于 Undercloud:
运行以下命令创建证书:
$ cat server-cert.pem server-key.pem > undercloud.pem
重要
openssl req
命令会要求输入证书的一些详细信息,包括 Common Name。把 Common Name 设置为 Public API 的 IP 地址。openssl.cnf
文件会使用这个 IP 地址作为默认值。
这会创建一个
undercloud.pem
文件来和 undercloud_service_certificate
选项一起使用。另外,这个文件还需要一个特殊的 SELinux context,从而使 HAProxy 工具可以读取它。请参照以下示例:
$ sudo mkdir /etc/pki/instack-certs $ sudo cp ~/undercloud.pem /etc/pki/instack-certs/. $ sudo semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" $ sudo restorecon -R /etc/pki/instack-certs
把这个证书添加到 Undercloud 的信任证书授权(CA)列表中:
$ sudo cp server-cert.pem /etc/pki/ca-trust/source/anchors/ $ sudo update-ca-trust extract
对于 Overcloud:
和 第 6.11 节 “在 Overcloud 中启用 SSL/TLS” 中的
enable-tls.yaml
文件一起使用证书。