4.2. 配置 SSSD 以使用 LDAP 并需要 TLS 身份验证

完成这个步骤,将 Red Hat Enterprise Linux (RHEL) 系统配置为 OpenLDAP 客户端。

使用以下客户端配置:

  • RHEL 系统验证存储在 OpenLDAP 用户帐户数据库中的用户。
  • RHEL 系统使用系统安全服务守护进程 (SSSD) 服务检索用户数据。
  • RHEL 系统通过 TLS 加密的连接与 OpenLDAP 服务器通信。
注意

您还可以使用此流程将 RHEL 系统配置为 Red Hat Directory Server 的客户端。

先决条件

  • OpenLDAP 服务器安装并配置了用户信息。
  • 您在要配置为 LDAP 客户端的主机上具有 root 权限。
  • 在您要配置为 LDAP 客户端的主机上,已创建并配置了 /etc/sssd/sssd.conf 文件,以将 ldap 指定为 autofs_providerid_provider
  • 您有来自发布 OpenLDAP 服务器的证书颁发机构的 root CA 签名证书链的 PEM 格式副本,存储在名为 core-dirsrv.ca.pem 的本地文件中。

步骤

  1. 安装必要的软件包:

    # dnf -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir
  2. 将身份验证供应商切换到 sssd

    # authselect select sssd with-mkhomedir
  3. 将包含 root CA 签名证书链的 core-dirsrv.ca.pem 文件从颁发 OpenLDAP 服务器的 SSL/TLS 证书的证书颁发机构链复制到 /etc/openldap/certs 文件夹。

    # cp core-dirsrv.ca.pem /etc/openldap/certs
  4. 将 LDAP 服务器的 URL 和后缀添加到 /etc/openldap/ldap.conf 文件中:

    URI ldap://ldap-server.example.com/
    BASE dc=example,dc=com
  5. /etc/openldap/ldap.conf 文件中,向 /etc/openldap/certs/core-dirsrv.ca.pem 添加指向 TLS_CACERT 参数的行:

    # When no CA certificates are specified the Shared System Certificates
    # are in use. In order to have these available along with the ones specified
    # by TLS_CACERTDIR one has to include them explicitly:
    TLS_CACERT /etc/openldap/certs/core-dirsrv.ca.pem
  6. /etc/sssd/sssd.conf 文件中,将您的环境值添加到 ldap_urildap_search_base 参数中,并将 ldap_id_use_start_tls 设为 True

    [domain/default]
    id_provider = ldap
    autofs_provider = ldap
    auth_provider = ldap
    chpass_provider = ldap
    ldap_uri = ldap://ldap-server.example.com/
    ldap_search_base = dc=example,dc=com
    ldap_id_use_start_tls = True
    cache_credentials = True
    ldap_tls_cacertdir = /etc/openldap/certs
    ldap_tls_reqcert = allow
    
    [sssd]
    services = nss, pam, autofs
    domains = default
    
    [nss]
    homedir_substring = /home
    …
  7. /etc/sssd/sssd.conf 中,修改 [domain] 部分中的 ldap_tls_cacertldap_tls_reqcert 值来指定 TLS 身份验证要求:

    …
    cache_credentials = True
    ldap_tls_cacert = /etc/openldap/certs/core-dirsrv.ca.pem
    ldap_tls_reqcert = hard
  8. 更改 /etc/sssd/sssd.conf 文件的权限:

    # chmod 600 /etc/sssd/sssd.conf
  9. 重启并启用 SSSD 服务和 oddjobd 守护进程:

    # systemctl restart sssd oddjobd
    # systemctl enable sssd oddjobd
  10. (可选)如果您的 LDAP 服务器使用已弃用的 TLS 1.0 或 TLS 1.1 协议,请将客户端系统上的系统范围加密策略切换到 LEGACY 级别,以允许 RHEL 使用这些协议进行通信:

    # update-crypto-policies --set LEGACY

    如需更多信息,请参阅红帽客户门户网站中的 RHEL 8 中的 强加密默认值和弱加密算法 知识库中的文章以及 update-crypto-policies(8)手册页。

验证步骤

  • 验证您可以使用 id 命令和指定 LDAP 用户从 LDAP 服务器检索用户数据:

    # id ldap_user
    uid=17388(ldap_user) gid=45367(sysadmins) groups=45367(sysadmins),25395(engineers),10(wheel),1202200000(admins)

系统管理员现在可以使用 id 命令从 LDAP 查询用户。该命令返回一个正确的用户 ID 和组群成员。