1.8. 将目录服务器使用的 CA 证书添加到 Red Hat Enterprise Linux 的信任存储中

当您在 Directory 服务器中启用 TLS 加密时,您可以将实例配置为使用 CA 发布的证书。如果一个客户端现在使用 LDAPS 协议或使用 STARTTLS 命令通过 LDAP 建立到服务器的连接,则 Directory 服务器会使用这个证书来加密连接。客户端实用程序使用 CA 证书来验证服务器证书是否有效。默认情况下,如果这些工具不信任服务器证书,则这些实用程序会取消连接。

例 1.1. 如果客户端实用程序不使用 CA 证书,则可能的连接错误

  • dsconf

    # dsconf -D "cn=Directory Manager" ldaps://server.example.com:636 config get
    Error: {'desc': "Can't contact LDAP server", 'info': 'error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed (self signed certificate in certificate chain)'}
  • ldapsearch

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x
    Enter LDAP Password:
    ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

要在 Red Hat Enterprise Linux 上启用客户端实用程序来验证证书目录服务器使用,请将 CA 证书添加到操作系统的信任存储中。

前提条件

  • 您知道网络安全服务(NSS)数据库的密码。

    如果您仍然使用在 Directory Server 实例安装过程中生成的密码,您可以在 /etc/dirsrv/slapd-instance_name/pwdfile.txt 文件中找到此密码。

流程

  1. 如果您没有 Directory 服务器使用的 CA 证书的本地副本:

    1. 列出服务器网络安全服务(NSS)数据库中的证书:

      # certutil -d /etc/dirsrv/slapd-instance_name/ -L
      
      Certificate Nickname                       Trust Attributes
                                                 SSL,S/MIME,JAR/XPI
      
      Example CA                                 C,,
      Server-Cert                                u,u,u
    2. 使用 NSS 数据库中 CA 证书的别名导出 CA 证书:

      # certutil -d /etc/dirsrv/slapd-instance_name/ -L -n "Example CA" -a > /tmp/ds-ca.crt
  2. 将 CA 证书复制到 /etc/pki/ca-trust/source/anchors/ 目录中:

    # cp /tmp/ds-ca.crt /etc/pki/ca-trust/source/anchors/
  3. 重建 CA 信任数据库:

    # update-ca-trust

验证

  • 使用 LDAPS 协议建立与目录服务器的连接。例如,运行查询:

    # ldapsearch -H ldaps://server.example.com:636 -D "cn=Directory Manager" -W -b "dc=example,dc=com" -x -s base

其他资源

  • update-ca-trust (8) man page