8.3. 为 Identity 服务配置安全 LDAP 通信
使用以下方法之一为 Identity 服务(keystone)配置 LDAP。
方法 1
如果使用 PEM 文件在 LDAP 级别配置 CA 信任,则使用此方法。手动指定 CA 证书文件的位置。以下流程保护 LDAP 通信不仅针对 Identity 服务,还用于所有使用 OpenLDAP 库的应用程序。
-
将包含 PEM 格式的 CA 证书链的文件复制到
/etc/openldap/certs目录。 编辑
/etc/openldap/ldap.conf并添加以下指令,将 [CA_FILE] 替换为 CA 证书文件的位置和名称:TLS_CACERT /etc/openldap/certs/[CA_FILE]
TLS_CACERT /etc/openldap/certs/[CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 horizon 容器:
systemctl restart tripleo_horizon
# systemctl restart tripleo_horizonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 2
如果使用网络安全服务(NSS)数据库在 LDAP 库级别配置了 CA 信任,则使用此方法。使用 certutil 命令将 CA 证书导入并信任到 OpenLDAP 库使用的 NSS 证书数据库中。以下流程保护 LDAP 通信不仅针对 Identity 服务,还用于所有使用 OpenLDAP 库的应用程序。
导入并信任证书,将 [CA_FILE] 替换为 CA 证书文件的位置和名称:
certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE] certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE]
# certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE] # certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认正确导入了 CA 证书:
certutil -d /etc/openldap/certs -L
# certutil -d /etc/openldap/certs -LCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您的 CA 证书被列出,信任属性被设置为 CT、。
重启 horizon 容器:
systemctl restart tripleo_horizon
# systemctl restart tripleo_horizonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
方法 3
如果使用 PEM 文件在 Keystone 级别配置了 CA 信任,则使用此方法。保护 Identity 服务和 LDAP 服务器之间的通信的最终方法是为 Identity 服务配置 TLS。
但是,与上述两种方法不同,此方法只保护 Identity 服务的 LDAP 通信,对使用 OpenLDAP 库的其他应用程序不会保护 LDAP 通信。以下流程使用 openstack-config 命令编辑 /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf 文件中的值。
启用 TLS:
openstack-config --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf ldap use_tls True
# openstack-config --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf ldap use_tls TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定证书的位置,将 [CA_FILE] 替换为 CA 证书的名称:
openstack-config --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf ldap tls_cacertfile [CA_FILE]
# openstack-config --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf ldap tls_cacertfile [CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定在 LDAP 服务器传入的 TLS 会话上执行的客户端证书检查,将 [CERT_BEHAVIOR] 替换为以下列出的行为之一:
- 需求
- 将始终从 LDAP 服务器请求证书。如果未提供证书,则会话将被终止,或者无法针对现有的证书颁发机构文件验证提供的证书。
- allow
- 将始终从 LDAP 服务器请求证书。即使未提供证书,会话也会正常进行。如果提供了证书,但无法针对现有的证书颁发机构文件进行验证,则证书将被忽略,会话将正常进行。
- never
- 永远不会请求证书。
openstack-config --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf ldap tls_req_cert [CERT_BEHAVIOR]
# openstack-config --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf ldap tls_req_cert [CERT_BEHAVIOR]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启 keystone 和 horizon 容器:
systemctl restart tripleo_keystone systemctl restart tripleo_horizon
# systemctl restart tripleo_keystone # systemctl restart tripleo_horizonCopy to Clipboard Copied! Toggle word wrap Toggle overflow