第 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 证书链的文件。
流程
-
可选:执行
/var/lib/ipa/private和/var/lib/ipa/passwds的备份。 如果您没有使用相同的证书颁发机构(CA)为新证书签名,或者如果已安装的 CA 证书不再有效,请使用包含外部 CA 证书链的文件更新本地数据库中有关外部 CA 的信息。这些文件接受 PEM 和 DER 证书、PKCS#7 证书链、PKCS""8 和原始私钥,以及 PKCSedServiceSet 格式。
安装 CA 证书:
ipa-cacert-manage install /path/to/ca.crt
# ipa-cacert-manage install /path/to/ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果新的外部 CA 证书的主题与旧 CA 证书相同,但有所不同,因为它使用不同的密钥,则只能在满足以下条件时使用它:
- 这两个证书具有相同的信任标记。
- CA 共享相同的 nickname。
-
证书中列出的 X509 扩展包括授权密钥
标识符(AKI)扩展。
将其余证书链作为额外的 CA 证书安装到 IdM 中。因为
ipa-cacert-manage install命令只读取文件中的第一个证书,所以您必须一次安装一个证书的完整 CA 链。例如,如果链包含两个证书,请将每个证书保存在单独的文件中,并为每个文件单独运行ipa-cacert-manage install:ipa-cacert-manage install /path/to/intermediate-ca.crt
# ipa-cacert-manage install /path/to/intermediate-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-cacert-manage install /path/to/root-ca.crt
# ipa-cacert-manage install /path/to/root-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用证书链中的证书更新本地 IdM 证书数据库:
ipa-certupdate
# ipa-certupdateCopy to Clipboard Copied! Toggle word wrap Toggle overflow
请求
httpd和 LDAP 的证书:使用
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'
$ 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 Copied! Toggle word wrap Toggle overflow 如果要创建一个新密钥:
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'
$ 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 Copied! Toggle word wrap Toggle overflow
使用
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'
$ 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 Copied! Toggle word wrap Toggle overflow -
将 CSR、/tmp/http.csr 和 tmp/ldap.csr 提交给外部 CA,并获取
httpd的证书和 LDAP 的证书。这个过程根据要用作外部 CA 的服务的不同而有所不同。
安装
httpd的证书:cp /path/to/httpd.crt /var/lib/ipa/certs/
# cp /path/to/httpd.crt /var/lib/ipa/certs/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 LDAP 证书安装到 NSS 数据库中:
可选:列出可用的证书:
certutil -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -L
# certutil -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI Server-Cert u,u,uCopy to Clipboard Copied! Toggle word wrap Toggle overflow 默认证书别名是 Server-Cert,但可能应用了不同的名称。
使用上一步中的证书别名,从 NSS 数据库(
NSSDB)中删除旧的无效的证书:certutil -D -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -n 'Server-Cert' -f /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
# certutil -D -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -n 'Server-Cert' -f /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 PKCS12 文件,以简化导入到
NSSDB的过程:openssl pkcs12 -export -in ldap.crt -inkey ldap.key -out ldap.p12 -name Server-Cert
# openssl pkcs12 -export -in ldap.crt -inkey ldap.key -out ldap.p12 -name Server-CertCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将创建的 PKCS#12 文件安装到
NSSDB中:pk12util -i ldap.p12 -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -k /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
# pk12util -i ldap.p12 -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -k /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查新证书是否已成功导入:
certutil -L -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/
# certutil -L -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
重启
httpd服务:systemctl restart httpd.service
# systemctl restart httpd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
Directory服务:systemctl restart dirsrv@IDM-EXAMPLE-COM.service
# systemctl restart dirsrv@IDM-EXAMPLE-COM.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在所有 IdM 副本上执行之前所有的步骤。这是在副本之间建立
TLS连接的先决条件。 将新证书注册到 LDAP 存储:
将 Apache Web 服务器的旧私钥和证书替换为新密钥和新签名的证书:
ipa-server-certinstall -w --pin=password /var/lib/ipa/private/httpd.key /var/lib/ipa/certs/httpd.crt
# ipa-server-certinstall -w --pin=password /var/lib/ipa/private/httpd.key /var/lib/ipa/certs/httpd.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在以上命令中:
-
-w选项指定您要将证书安装到 Web 服务器中。 -
pin选项指定保护私钥的密码。
-
-
出现提示时,输入
目录管理器密码。 将 LDAP 服务器的旧私钥和证书替换为新密钥和新签名的证书:
ipa-server-certinstall -d --pin=password /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ldap.key /path/to/ldap.crt
# ipa-server-certinstall -d --pin=password /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ldap.key /path/to/ldap.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在以上命令中:
-
-d选项指定您要将证书安装到 LDAP 服务器中。 -
pin选项指定保护私钥的密码。
-
-
出现提示时,输入
目录管理器密码。 重启
httpd服务:systemctl restart httpd.service
# systemctl restart httpd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
Directory服务:systemctl restart dirsrv@IDM-EXAMPLE-COM.service
# systemctl restart dirsrv@IDM-EXAMPLE-COM.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 在所有其他受影响的副本上执行上一步中的命令。