7.5. 创建并配置 RootCA (第二部分)
本节将继续安装 RootCA。它将引导您执行替换临时 DS TLS 服务器证书的过程。如果您安装了 OCSP 实例,则角色用户证书和 RootCA 的 TLS 服务器证书将是指向 OCSP 实例的 AIA 扩展。
7.5.1. 替换临时 DS 证书(RootCA) 复制链接链接已复制到粘贴板!
RootCA 安装完成后,它可以为 Directory 服务器发布官方 SSL 服务器证书来替换临时证书。为 Directory Server 证书创建证书签名请求(CSR),然后使用 RootCA bootstrap 用户凭证将此请求提交到 CA。
确保您使用 DS 服务器的 FQDN,如 cn=rhds11.example.com
/ host=rhds11.example.com
。
为真实 DS 证书生成 CSR
在 rhds11.example.com 上,为真实 DS 证书生成 PKCS10 证书签名请求:
验证此实例上是否存在 nssdb 密码文件:
ls /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt
# ls /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止 DS :
dsctl slapd-CC-RSA-RootCA-LDAP stop
# dsctl slapd-CC-RSA-RootCA-LDAP stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
certutil
工具生成 CSR:certutil -R -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP -s "CN=rhds11.example.com" -g 2048 -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -a -o /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/Server-Cert-rootca.csr -z /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/noise.txt
# certutil -R -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP -s "CN=rhds11.example.com" -g 2048 -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -a -o /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/Server-Cert-rootca.csr -z /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/noise.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要编辑上面获取的
Server-Cert-rootca.csr
输出文件,以删除"Begin Certificate Request"前的几行。例如:
vi /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/Server-Cert-rootca.csr
# vi /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/Server-Cert-rootca.csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CSR 文件必须以"-----BEGIN CERTIFICATE REQUEST-----"行开头,并以"-----END CERTIFICATE REQUEST-----"行结尾。
启动 DS :
dsctl slapd-CC-RSA-RootCA-LDAP start
# dsctl slapd-CC-RSA-RootCA-LDAP start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 远程将
Server-Cert-rootca.csr
文件复制到 CA 所在的系统中。例如:scp /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/Server-Cert-rootca.csr root@rhcs10.example.com:/root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-rootca.csr
# scp /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/Server-Cert-rootca.csr root@rhcs10.example.com:/root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-rootca.csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
发出真实 DS 证书
在 rhcs10.example.com 上,发布实际的 SSL 服务器证书:
生成 CMC 请求:
创建
CMCRequest
配置文件。例如:vim /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-rootca_pkcs10.cfg
# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-rootca_pkcs10.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
CMCRequest
命令生成请求:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
提交 CMC 请求:
创建
HttpClient
配置文件。例如:vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-rootca.cfg
# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-rootca.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于 EC 证书,通过设置来使用 ECC 配置集:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCECserverCertWithCRLDP
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCECserverCertWithCRLDP
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
HttpClient
命令提交请求:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
处理 CMC 响应:
使用
CMCResponse
处理响应,以 PEM 格式单独以链的形式显示所有证书:重要使用 "-v" 选项运行 CMCResponse 将链中每个证书的 PEM 返回为 Cert:0, Cert:1 等。在所有 PEM 下,输出也会以用户打印格式显示链中的每个证书。由于证书没有以固定顺序显示,因此为了确定其在链中的位置,您必须检查每个 "Certificate" 下的"Subject: "。对应的 PEM 显示在上面的同一位置。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将新
Server-Cert
DS 证书保存到 bootstrap 证书目录(例如/root/.dogtag/pki_rsa_bootstrap/certs_db/
)中的文件中。.pem
文件必须以 header-----BEGIN CERTIFICATE-----
开头,并以 footer-----END CERTIFICATE-----
结束。例如:vi /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-rootca.pem
# vi /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-rootca.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
Server-Cert-rootca.pem
是 Directory Server 实例的新Server-Cert
证书,充当 RootCA 的 internaldb。注意RootCA 的签名证书应与以下命令的输出匹配:
certutil -L -d /var/lib/pki/rhcs10-RSA-RootCA/alias/ -n "CA Signing Cert - rhcs10-RSA-RootCA" -a
# certutil -L -d /var/lib/pki/rhcs10-RSA-RootCA/alias/ -n "CA Signing Cert - rhcs10-RSA-RootCA" -a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
远程将新的
Server-Cert
证书复制到 rhds11.example.com。例如:scp /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-rootca.pem root@rhds11.example.com:/etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/
# scp /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-rootca.pem root@rhds11.example.com:/etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
替换临时 DS 证书
在 rhds11.example.com 上,将临时 DS 证书替换为实际的 DS 证书:
停止 DS :
dsctl slapd-CC-RSA-RootCA-LDAP stop
# dsctl slapd-CC-RSA-RootCA-LDAP stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
dirsrv
目录的内容保存到备份目录中:cp -r /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ /etc/dirsrv/save-rsa/slapd-CC-RSA-RootCA-LDAP/
# cp -r /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ /etc/dirsrv/save-rsa/slapd-CC-RSA-RootCA-LDAP/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除旧的 DS 证书:
certutil -D -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -n "Server-Cert"
# certutil -D -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -n "Server-Cert"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -D -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -n "Self-Signed-CA"
# certutil -D -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -n "Self-Signed-CA"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在链 1 中导入新创建的 DS 证书及其 CA 证书。例如:
certutil -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -A -t "CT,C,C" -n "CA Signing Cert - rhcs10-RSA-RootCA" -i /opt/pki_rsa/rootCA.pem
# certutil -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -A -t "CT,C,C" -n "CA Signing Cert - rhcs10-RSA-RootCA" -i /opt/pki_rsa/rootCA.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -A -t "u,u,u" -n "Server-Cert" -i /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/Server-Cert-rootca.pem
# certutil -d /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/pwdfile.txt -A -t "u,u,u" -n "Server-Cert" -i /etc/dirsrv/slapd-CC-RSA-RootCA-LDAP/Server-Cert-rootca.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 rhds11.example.com 上,启动 DS:
dsctl slapd-CC-RSA-RootCA-LDAP start
# dsctl slapd-CC-RSA-RootCA-LDAP start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 测试以确认 LDAP 服务器已启动并在运行(如果是单独的系统,则在 CA 主机上进行测试):
ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:636 -b "dc=example,dc=com" -w SECret.123
# ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:636 -b "dc=example,dc=com" -w SECret.123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果在单独的系统上测试,请在
ldapsearch
命令前面包含 CA 证书链,例如:LDAPTLS_CACERT=/opt/pki_rsa/ca-chain.pem ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:636 -b "dc=example,dc=com" -w SECret.123
# LDAPTLS_CACERT=/opt/pki_rsa/ca-chain.pem ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:636 -b "dc=example,dc=com" -w SECret.123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除 RootCA 实例的临时 DS 证书的信任
在 rhcs10.example.com 上,从 RootCA 实例数据库中删除临时 DS 证书:
停止 CA:
pki-server stop rhcs10-RSA-RootCA
# pki-server stop rhcs10-RSA-RootCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 nssdb 中删除临时证书:
certutil -D -d /var/lib/pki/rhcs10-RSA-RootCA/alias/ -n "DS temp CA certificate"
# certutil -D -d /var/lib/pki/rhcs10-RSA-RootCA/alias/ -n "DS temp CA certificate"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
启用证书撤销检查
现在,Directory 服务器证书已被替换,我们可以通过启用证书撤销检查来查看在 CA 启动过程中检测到 CRL 发布点:
要启用证书撤销检查,在相应的
/var/lib/pki/rhcs10-RSA-RootCA/conf/server.xml
文件中:将
enableOCSP
或enableRevocationCheck
设置为true
:enableOCSP=true or enableRevocationCheck=true
enableOCSP=true or enableRevocationCheck=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,删除这两个参数及其分配的值:
ocspResponderURL ocspResponderCertNickname
ocspResponderURL ocspResponderCertNickname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
通过编辑 CA 的
CS.cfg
文件并将以下内容设置为false
来禁用旧的撤销检查方法:auths.revocationChecking.enabled=false
auths.revocationChecking.enabled=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 RootCA 实例:
pki-server start rhcs10-RSA-RootCA
# pki-server start rhcs10-RSA-RootCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证 CRL 发布点
现在,我们使用配置文件 caCMCserverCertWithCRLDP
替换了 root CA 的目录服务器的 server-cert
,在启动与其内部目录服务器的连接时,这有效地触发 CA 引用的 CRL 分发点。
本节提供了一种基本方法来验证 CA 中的 CRL 分发点设置(请参阅 第 7.3.8 节 “配置对 CRL 分发点的支持”):
检查基于文件的 CRL 发布:
ls -l /var/lib/pki/rhcs10-RSA-RootCA/crl
# ls -l /var/lib/pki/rhcs10-RSA-RootCA/crl total 8 -rw-r--r--. 1 pkiuser pkiuser 574 Jun 20 18:08 ServerCertCRL-20240620-180859.der -rw-r--r--. 1 pkiuser pkiuser 613 Jun 20 18:09 ServerCertCRL-20240620-180938.der lrwxrwxrwx. 1 pkiuser pkiuser 68 Jun 20 18:09 ServerCertCRL.crl -> /var/lib/pki/rhcs10-RSA-RootCA/crl/ServerCertCRL-20240620-180938.der
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示并验证 CRL 的内容
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
不要删除 CRL 文件(soft link file ServerCertCRL.crl
,及其关联的 der 文件)。
如果您遇到缺少 CRL 文件的情况,或者意外从 /var/lib/pki/rhcs10-RSA-RootCA/crl/
中删除,防止 CA 启动,请按照以下步骤重新生成 CRL 文件:
停止 CA 服务。
pki-server stop rhcs10-RSA-RootCA
# pki-server stop rhcs10-RSA-RootCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在 CA 的
server.xml
中,将enableRevocationCheck
或enableOCSP
参数设置为false
(如果它当前设置为true
)。 -
在 CA 的
CS.cfg
中,将ca.crl.ServerCertCRL.publishOnStart=
参数设置为true
。 启动 CA 服务以重新生成缺少的 CRL 文件:
pki-server start rhcs10-RSA-RootCA
# pki-server start rhcs10-RSA-RootCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 恢复 CRL 文件后,再次停止 CA 服务。
-
在 CA 的
CS.cfg
中,将ca.crl.ServerCertCRL.publishOnStart=
参数恢复为false
。 -
在 CA 的
server.xml
中将enableRevocationCheck
或enableOCSP
参数设置为true
。 - 再次启动 CA 服务以应用更改。
按照以下步骤,您将成功恢复缺少的 CRL 文件,并确保 CA 可以正确启动。
验证 CA 是否正常工作
列出 CA 中的证书:
pki -p 8443 ca-cert-find
# pki -p 8443 ca-cert-find
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以 bootstrap admin 用户身份,列出 RootCA 中的用户:
pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db/ -c SECret.123 -p 8443 -n "PKI Bootstrap Administrator for RSA-RootCA" ca-user-find
# pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db/ -c SECret.123 -p 8443 -n "PKI Bootstrap Administrator for RSA-RootCA" ca-user-find
Copy to Clipboard Copied! Toggle word wrap Toggle overflow