第 21 章 如果 web 服务器和 LDAP 服务器证书已在整个 IdM 部署中过期,请替换它们


身份管理(IdM)使用以下服务证书:

  • LDAP(或 Directory)服务器证书
  • web(或 httpd)服务器证书
  • PKINIT 证书

在没有集成证书颁发机构(CA)的 IdM 部署中,certmonger 服务默认不会跟踪 IdM 服务证书或提供过期警告。如果 IdM 系统管理员没有手动配置证书跟踪或设置通知,证书可能会在没有通知的情况下过期。

按照以下步骤,手动将 server.idm.example.com IdM 服务器上运行的 httpd 和 LDAP 服务过期的证书替换为有效的证书链。

注意

httpd 和 LDAP 服务证书在不同的 IdM 服务器上有不同的密钥对和主题名称。因此,您必须单独更新每个 IdM 服务器上的证书。

先决条件

  • httpd 和 LDAP 证书已在 拓扑中的所有 IdM 副本上过期。如果没有过期,请参阅 如果还没有在 IdM 副本 上过期,替换 web 服务器和 LDAP 服务器证书
  • 您有访问 IdM 服务器和副本的 root 权限。
  • 您知道 目录管理器 密码。
  • 您已创建了以下目录和文件的备份:

    • /etc/dirsrv/slapd-IDM-EXAMPLE-COM/
    • /etc/httpd/alias
    • /var/lib/certmonger
    • /var/lib/ipa/certs/
  • 如果新的 httpd/LDAP 证书将由与旧 CA 不同的外部 CA 签名,或者如果已安装的 CA 证书不再有效,则您可以访问存储外部 CA 证书链的文件。

流程

  1. 可选:执行 /var/lib/ipa/private/var/lib/ipa/passwds 的备份。
  2. 如果您没有使用相同的证书颁发机构(CA)为新证书签名,或者如果已安装的 CA 证书不再有效,请使用包含外部 CA 证书链的文件更新本地数据库中有关外部 CA 的信息。这些文件接受 PEM 和 DER 证书、PKCS#7 证书链、PKCS""8 和原始私钥,以及 PKCSedServiceSet 格式。

    1. 安装 CA 证书:

      # ipa-cacert-manage install /path/to/ca.crt
      Copy to Clipboard Toggle word wrap
      重要

      如果新的外部 CA 证书的主题与旧 CA 证书相同,但有所不同,因为它使用不同的密钥,则只能在满足以下条件时使用它:

      • 这两个证书具有相同的信任标记。
      • CA 共享相同的 nickname。
      • 证书中列出的 X509 扩展包括授权密钥 标识符 (AKI)扩展。
    2. 将其余证书链作为额外的 CA 证书安装到 IdM 中。因为 ipa-cacert-manage install 命令只读取文件中的第一个证书,所以您必须一次安装一个证书的完整 CA 链。例如,如果链包含两个证书,请将每个证书保存在单独的文件中,并为每个文件单独运行 ipa-cacert-manage install

      # ipa-cacert-manage install /path/to/intermediate-ca.crt
      Copy to Clipboard Toggle word wrap
      # ipa-cacert-manage install /path/to/root-ca.crt
      Copy to Clipboard Toggle word wrap
    3. 使用证书链中的证书更新本地 IdM 证书数据库:

      # ipa-certupdate
      Copy to Clipboard Toggle word wrap
  3. 请求 httpd 和 LDAP 的证书:

    1. 使用 OpenSSL 工具,为在 IdM 实例上运行的 Apache Web 服务器创建到第三方 CA 的证书签名请求(CSR)。

      • 创建新私钥是可选的。如果您仍然有原始私钥,您可以将 -in 选项与 openssl req 命令一起使用,以指定要从中读取请求的输入文件名:

        $ openssl req -new -nodes -in /var/lib/ipa/private/httpd.key -out /tmp/http.csr -addext 'subjectAltName = DNS:_server.idm.example.com_, otherName:1.3.6.1.4.1.311.20.2.3;UTF8:HTTP/server.idm.example.com@IDM.EXAMPLE.COM' -subj '/O=IDM.EXAMPLE.COM/CN=server.idm.example.com'
        Copy to Clipboard Toggle word wrap
      • 如果要创建一个新密钥:

        $ openssl req -new -newkey rsa:2048 -nodes -keyout /var/lib/ipa/private/httpd.key -out /tmp/http.csr -addext 'subjectAltName = DNS:server.idm.example.com, otherName:1.3.6.1.4.1.311.20.2.3;UTF8:HTTP/server.idm.example.com@IDM.EXAMPLE.COM' -subj '/O=IDM.EXAMPLE.COM/CN=server.idm.example.com'
        Copy to Clipboard Toggle word wrap
    2. 使用 OpenSSL 工具,为在 IdM 实例上运行的 LDAP 服务器创建一个到第三方证书的签名请求(CSR):

      $ openssl req -new -newkey rsa:2048 -nodes -keyout ~/ldap.key -out /tmp/ldap.csr -addext 'subjectAltName = DNS:server.idm.example.com, otherName:1.3.6.1.4.1.311.20.2.3;UTF8:ldap/server.idm.example.com@IDM.EXAMPLE.COM' -subj '/O=IDM.EXAMPLE.COM/CN=server.idm.example.com'
      Copy to Clipboard Toggle word wrap
    3. 将 CSR、/tmp/http.csrtmp/ldap.csr 提交给外部 CA,并获取 httpd 的证书和 LDAP 的证书。这个过程根据要用作外部 CA 的服务的不同而有所不同。
  4. 安装 httpd 的证书:

    # cp /path/to/httpd.crt /var/lib/ipa/certs/
    Copy to Clipboard Toggle word wrap
  5. 将 LDAP 证书安装到 NSS 数据库中:

    1. 可选:列出可用的证书:

      # certutil -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -L
      Certificate Nickname                                         Trust Attributes
                                                                   SSL,S/MIME,JAR/XPI
      
      Server-Cert                                                  u,u,u
      Copy to Clipboard Toggle word wrap

      默认证书别名是 Server-Cert,但可能应用了不同的名称。

    2. 使用上一步中的证书别名,从 NSS 数据库(NSSDB)中删除旧的无效的证书:

      # certutil -D -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -n 'Server-Cert' -f /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
      Copy to Clipboard Toggle word wrap
    3. 创建一个 PKCS12 文件,以简化导入到 NSSDB 的过程:

      # openssl pkcs12 -export -in ldap.crt -inkey ldap.key -out ldap.p12 -name Server-Cert
      Copy to Clipboard Toggle word wrap
    4. 将创建的 PKCS#12 文件安装到 NSSDB 中:

      # pk12util -i ldap.p12 -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -k /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
      Copy to Clipboard Toggle word wrap
    5. 检查新证书是否已成功导入:

      # certutil -L -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/
      Copy to Clipboard Toggle word wrap
  6. 重启 httpd 服务:

    # systemctl restart httpd.service
    Copy to Clipboard Toggle word wrap
  7. 重启 Directory 服务:

    # systemctl restart dirsrv@IDM-EXAMPLE-COM.service
    Copy to Clipboard Toggle word wrap
  8. 在所有 IdM 副本上执行之前所有的步骤。这是在副本之间建立 TLS 连接的先决条件。
  9. 将新证书注册到 LDAP 存储:

    1. 将 Apache Web 服务器的旧私钥和证书替换为新密钥和新签名的证书:

      # ipa-server-certinstall -w --pin=password /var/lib/ipa/private/httpd.key /var/lib/ipa/certs/httpd.crt
      Copy to Clipboard Toggle word wrap

      在以上命令中:

      • -w 选项指定您要将证书安装到 Web 服务器中。
      • pin 选项指定保护私钥的密码。
    2. 出现提示时,输入 目录管理器 密码。
    3. 将 LDAP 服务器的旧私钥和证书替换为新密钥和新签名的证书:

      # ipa-server-certinstall -d --pin=password /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ldap.key /path/to/ldap.crt
      Copy to Clipboard Toggle word wrap

      在以上命令中:

      • -d 选项指定您要将证书安装到 LDAP 服务器中。
      • pin 选项指定保护私钥的密码。
    4. 出现提示时,输入 目录管理器 密码。
    5. 重启 httpd 服务:

      # systemctl restart httpd.service
      Copy to Clipboard Toggle word wrap
    6. 重启 Directory 服务:

      # systemctl restart dirsrv@IDM-EXAMPLE-COM.service
      Copy to Clipboard Toggle word wrap
  10. 在所有其他受影响的副本上执行上一步中的命令。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat