第 74 章 如果 web 服务器和 LDAP 服务器证书在整个 IdM 部署中已过期
身份管理(IdM)使用以下服务证书:
-
LDAP (或
目录
)服务器证书 -
Web (或
httpd
)服务器证书 - PKINIT 证书
在没有 CA 的 IdM 部署中,certmong
er 默认不跟踪 IdM 服务证书或通知其过期。如果 IdM 系统管理员没有手动设置这些证书的通知,或者将 certmonger
配置为跟踪它们,则证书将在不通知的情况下过期。
按照以下流程,为运行在 server.idm.example.com IdM 服务器上的 httpd
和 LDAP 服务手动替换过期的证书。
HTTP 和 LDAP 服务证书在不同 IdM 服务器上具有不同的密钥对和主题名称。因此,您必须单独更新每个 IdM 服务器中的证书。
先决条件
- 在拓扑中的 所有 IdM 副本中,HTTP 和 LDAP 证书已过期。如果没有,请参阅 替换 web 服务器和 LDAP 服务器证书(如果它们还没有在 IdM 副本中过期 )。
-
有到 IdM 服务器和副本的
root
访问权限。 -
您知道
目录管理器
密码。 您已创建以下目录和文件的备份:
-
/etc/dirsrv/slapd-IDM-EXAMPLE-COM/
-
/etc/httpd/alias
-
/var/lib/certmonger
-
/var/lib/ipa/certs/
-
流程
-
(可选)执行
/var/lib/ipa/private
和/var/lib/ipa/passwds
的备份。 如果您没有使用同一 CA 对新证书进行签名,或者已安装的 CA 证书不再有效,请使用包含外部 CA 的有效 CA 的文件更新本地数据库中外部 CA 的信息。文件在 PEM 和 DER 证书、P PKCS#7 证书链、PKCS#8 和原始私钥和 PKCS#12 格式接受。
将 ca_certificate_chain_file.crt 中提供的证书作为额外的 CA 证书安装到 IdM 中:
# ipa-cacert-manage install ca_certificate_chain_file.crt
使用来自 ca_certicate_chain_file.crt 的证书更新本地 IdM 证书数据库:
# ipa-certupdate
为
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 -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
实用程序为 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'
-
将 CSR、/tmp/http.csr 和 tmp/ldap.csr 提交到外部 CA,并获取
httpd
的证书和 LDAP 的证书。这个过程根据要用作外部 CA 的服务的不同而有所不同。
为
httpd
安装证书:# cp /path/to/httpd.crt /var/lib/ipa/certs/
将 LDAP 证书安装到 NSS 数据库中:
[可选] 列出可用证书:
# certutil -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI Server-Cert u,u,u
默认证书 nickname 是 Server-Cert,但可能应用了不同的名称。
使用上一步中的证书 nickname 从 NSS 数据库(
NSSDB
)中删除旧的无效证书:# certutil -D -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -n 'Server-Cert' -f /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
创建 PKCS12 文件以简化导入过程到
NSSDB
中:# openssl pkcs12 -export -in ldap.crt -inkey ldap.key -out ldap.p12 -name Server-Cert
将创建的 PKCS#12 文件安装到
NSSDB
中:# pk12util -i ldap.p12 -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -k /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
检查新证书是否已成功导入:
# certutil -L -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/
重启
httpd
服务:# systemctl restart httpd.service
重启
Directory
服务:# systemctl restart dirsrv@IDM-EXAMPLE-COM.service
-
在所有 IdM 副本中执行所有前面的步骤。这是在副本之间建立
TLS
连接的先决条件。 将新证书注册到 LDAP 存储:
将 Apache Web 服务器的旧私钥和证书替换为新密钥和新签名证书:
# ipa-server-certinstall -w --pin=password /var/lib/ipa/private/httpd.key /var/lib/ipa/certs/httpd.crt
在以上命令中:
-
-w
选项指定您要将证书安装到 Web 服务器中。 -
pin
选项指定保护私钥的密码。
-
-
出现提示时,输入
目录管理器
密码。 将 LDAP 服务器的旧私钥和证书替换为新密钥和新签名的证书:
# ipa-server-certinstall -d --pin=password /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ldap.key /path/to/ldap.crt
在以上命令中:
-
-d
选项指定您要将证书安装到 LDAP 服务器中。 -
pin
选项指定保护私钥的密码。
-
-
出现提示时,输入
目录管理器
密码。 重启
httpd
服务:# systemctl restart httpd.service
重启
Directory
服务:# systemctl restart dirsrv@IDM-EXAMPLE-COM.service
- 在所有其他受影响的副本上执行上一步中的命令。
其它资源
将证书格式转换可与 IdM 一起工作 * man ipa-server-certinstall (1)
*,如何在过期后,手动在 RHEL 8 上续订身份管理(IPA)证书?(CA-less IPA)