7.7. 创建并配置 OCSP 实例(SubCA)
本节论述了针对 SubCA 安装和配置 OCSP 实例。
OCSP 系统证书将由 SubCA 发布,OCSP 将加入 SubCA 安全域。
在本例中,subCA 的 OCSP 安装在 rhcs10.example.com 上,其内部目录服务器位于 rhds11.example.com 上。
确保文件 /opt/pki_rsa/ca-chain.pem
包含完整的 CA 证书链(SubCA 和 RootCA 证书):
ls -l /opt/pki_rsa/ca-chain.pem cat /opt/pki_rsa/ca-chain.pem
# ls -l /opt/pki_rsa/ca-chain.pem
# cat /opt/pki_rsa/ca-chain.pem
7.7.1. 替换临时 DS 证书(OCSP-subca) 复制链接链接已复制到粘贴板!
在为 SubCA 安装 OCSP 之前,我们为 OCSP 的目录服务器发出官方 SSL 服务器证书来替换临时 bootstrap。为此,我们首先要为目录服务器证书创建一个证书签名请求(CSR),然后将此请求提交到 CA。
确保您使用 DS 服务器的 FQDN,如 cn=rhds11.example.com
/ host=rhds11.example.com
。
为真实 DS 证书生成 CSR
在 rhds11.example.com 上,为真实 DS 证书生成 PKCS10 证书签名请求:
停止 DS :
dsctl slapd-CC-RSA-OCSP-subca-LDAP stop
# dsctl slapd-CC-RSA-OCSP-subca-LDAP stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您不了解 DS 实例的名称,请使用:
dsctl -l
列出所有实例使用
certutil
工具生成 CSR:certutil -R -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP -s "CN=rhds11.example.com" -g 2048 -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -a -o /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr -z /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/noise.txt
# certutil -R -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP -s "CN=rhds11.example.com" -g 2048 -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -a -o /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr -z /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/noise.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要编辑上面获取的
Server-Cert-ocsp-subca.csr
输出文件,以在"Begin Certificate Request"之前删除几行。例如:
vi /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr
# vi /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CSR 文件必须以"-----BEGIN CERTIFICATE REQUEST-----"行开头,并以"-----END CERTIFICATE REQUEST-----"行结尾。
远程将
Server-Cert-ocsp-subca.csr
文件复制到 CA 所在的系统中。例如:scp /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr root@rhcs10.example.com:/root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-subca.csr
# scp /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.csr root@rhcs10.example.com:/root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-subca.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-ocsp-subca_pkcs10.cfg
# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/cmc.dirsrv-ocsp-subca_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-ocsp-subca.cfg
# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_dirsrv-ocsp-subca.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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-ocsp-subca.pem
# vi /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-subca.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
Server-Cert-ocsp-subca.pem
是 Directory Server 实例的新的Server-Cert
证书,充当 SubCA 的 OCSP 的 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-ocsp-subca.pem root@rhds11.example.com:/etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/
# scp /root/.dogtag/pki_rsa_bootstrap/certs_db/Server-Cert-ocsp-subca.pem root@rhds11.example.com:/etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
替换临时 DS 证书
在 rhds11.example.com 上,将临时 DS 证书替换为实际的 DS 证书:
将
dirsrv
目录的内容保存到备份目录中:cp -r /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ /etc/dirsrv/save-rsa/slapd-CC-RSA-OCSP-subca-LDAP/
# cp -r /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ /etc/dirsrv/save-rsa/slapd-CC-RSA-OCSP-subca-LDAP/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除旧的 DS 证书:
certutil -D -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -n "Server-Cert"
# certutil -D -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -n "Server-Cert"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -D -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -n "Self-Signed-CA"
# certutil -D -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -n "Self-Signed-CA"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 逐个导入新创建的 DS 证书和 CA 证书。例如:
certutil -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-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-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-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-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -A -t "CT,C,C" -n "CA Signing Cert - rhcs10-RSA-SubCA" -i /opt/pki_rsa/subCA.pem
# certutil -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -A -t "CT,C,C" -n "CA Signing Cert - rhcs10-RSA-SubCA" -i /opt/pki_rsa/subCA.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -A -t "u,u,u" -n "Server-Cert" -i /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.pem
# certutil -d /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/ -f /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/pwdfile.txt -A -t "u,u,u" -n "Server-Cert" -i /etc/dirsrv/slapd-CC-RSA-OCSP-subca-LDAP/Server-Cert-ocsp-subca.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 DS :
dsctl slapd-CC-RSA-OCSP-subca-LDAP start
# dsctl slapd-CC-RSA-OCSP-subca-LDAP start
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 测试以确认 LDAP 服务器已启动并在运行(如果是单独的系统,则在 CA 主机上进行测试):
ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:11636 -b "dc=example,dc=com" -w SECret.123
# ldapsearch -x -D "cn=Directory Manager" -H ldaps://rhds11.example.com:11636 -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:11636 -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:11636 -b "dc=example,dc=com" -w SECret.123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.2. 为 SubCA 安装 OCSP 实例 复制链接链接已复制到粘贴板!
要为 SubCA 安装 OCSP 实例,请使用单步方法或两步方法。以下流程描述了单步方法。如果要使用两步方法安装,请参阅 第 7.2.2 节 “安装方法(单步或两步)” 和 第 7.3.2 节 “安装 RootCA 实例(两步方法)”。
先决条件
- 以 root 用户身份登录 rhcs10.example.com。
- 在我们的示例中,有 CC-RSA-OCSP-subca-LDAP 是 SubCA OCSP 的内部数据库。
流程
在所选位置(如
/root/pki_rsa
)创建一个 OCSP 安装文件来生成证书请求:cd /root/pki_rsa
# cd /root/pki_rsa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi ocsp_subca_inst.cfg
# vi ocsp_subca_inst.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意除非明确指定,否则系统证书别名将自动命名为
pki_instance_name
的值。为了避免共享 HSM 上的证书别名冲突,请为每个实例创建使用不同的实例名称。
以下安装文件中指定的值是示例。除了更改 HSM 密码外,还要相应地编辑值,如 ports, directory, nicknames, domains…
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
pkispawn
工具来安装 OCSP 子系统:pkispawn -s OCSP -f ocsp_subca_inst.cfg --debug
# pkispawn -s OCSP -f ocsp_subca_inst.cfg --debug
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将在
/var/lib/pki/rhcs10-RSA-OCSP-subca
中创建 OCSP 实例。
为便于参考,如果您想要使用两步方法安装此 OCSP:
首先使用
--skip-configuration
选项运行pkispawn
工具来安装 SubCA 的 OCSP 实例:pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-configuration --debug
# pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-configuration --debug
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在两个安装步骤间自定义配置文件
运行
pkispawn
工具来配置 OCSP:pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-installation --debug
# pkispawn -s OCSP -f ocsp_subca_inst.cfg --skip-installation --debug
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示安装的 OCSP 实例的状态:
pki-server status rhcs10-RSA-OCSP-subca
# pki-server status rhcs10-RSA-OCSP-subca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.3. 增加 SubCA 的 OCSP pkiconsole 超时 复制链接链接已复制到粘贴板!
- 以 root 用户身份登录 rhcs10.example.com。
停止 SubCA 的 OCSP 服务:
pki-server stop rhcs10-RSA-OCSP-subca
pki-server stop rhcs10-RSA-OCSP-subca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/var/lib/pki/rhcs10-RSA-OCSP-subca/conf/server.xml
以增加超时时间:<Connector name="Secure" port="32443" … connectionTimeout="3000000"
<Connector name="Secure" port="32443" … connectionTimeout="3000000"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 SubCA 的 OCSP 服务:
pki-server start rhcs10-RSA-OCSP-subca
# pki-server start rhcs10-RSA-OCSP-subca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.4. 设置默认 AIA 扩展以指向此 OCSP 复制链接链接已复制到粘贴板!
默认情况下,除非明确指定,CA 使用 AIA (Authority Information Access)扩展来发布证书,指向 CA 自己的内部 OCSP。现在,您已设置了 OCSP 实例,您可以将 SubCA 配置为开始使用指向 OCSP 实例的 AIA 扩展来发布证书。
以 root 用户身份在 rhcs10.example.com 上:
停止 SubCA:
pki-server stop rhcs10-RSA-SubCA
# pki-server stop rhcs10-RSA-SubCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑 SubCA 的
CS.cfg
,并将ca.defaultOcspUri
变量设置为指向 OCSP。例如:ca.defaultOcspUri=http://rhcs10.example.com:32080/ocsp/ee/ocsp
ca.defaultOcspUri=http://rhcs10.example.com:32080/ocsp/ee/ocsp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 SubCA:
pki-server start rhcs10-RSA-SubCA
# pki-server start rhcs10-RSA-SubCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
默认情况下,每个子系统的 OCSP URL (如 KRA)会在其 server.xml
文件中设置。启用后,这会在查找证书状态时指示 RHCS 实例使用静态 URL,而不是嵌入在对等证书中的 AIA 扩展。要使用 AIA 扩展,安装子系统时将定向到遵循 第 7.13.10.2 节 “为 CA / KRA / TKS / TPS 启用 OCSP”。
7.7.5. 创建 OCSP 角色用户 复制链接链接已复制到粘贴板!
按照 第 7.12 节 “创建 PKI 角色用户” 中的步骤创建单角色 admin、代理、审计用户(在 OCSP 中)。为此,您需要导入 SubCA 的 OCSP bootstrap 管理员证书,即
ocsp_admin_cert.p12
。例如:pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import --pkcs12 /opt/pki_rsa/rhcs10-RSA-OCSP-subca/ocsp_admin_cert.p12 --pkcs12-password SECret.123
# pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import --pkcs12 /opt/pki_rsa/rhcs10-RSA-OCSP-subca/ocsp_admin_cert.p12 --pkcs12-password SECret.123 ---------------------------------------- Imported certificates from PKCS #12 file ----------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.6. 使用客户端身份验证登录到 OCSP pkiconsole 复制链接链接已复制到粘贴板!
-
使用
authType=sslclientauth
配置 OCSP,并按照使用客户端身份验证的 Configure pkiconsole 登录导入角色用户证书。 使用角色用户的客户端身份验证证书登录到
pkiconsole
:pkiconsole -d <home .redhat-idm-console dir> -n <client cert> https://rhcs10.example.com:32443/ocsp
# pkiconsole -d <home .redhat-idm-console dir> -n <client cert> https://rhcs10.example.com:32443/ocsp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后从列表中选择角色用户证书别名,如 OCSP adminV。登录到控制台应该可以成功。
7.7.7. 配置 CRL 发布 复制链接链接已复制到粘贴板!
Red Hat Certificate System 提供两种 CRL 发布方法,供 CA 外部的 OCSP 实例使用:
- 直接 CA→OCSP CRL 发布
- 使用 CA→LDAP 间接发布,然后 OCSP5-4LDAP
默认情况下,当您设置 OCSP 实例后,会自动设置第一个 CRL 发布方法,这将允许直接 CA→OCSP CRL 发布。
本节详细介绍了第二种方法,即使 CA 将 CRL 发布到 LDAP 服务器,然后 OCSP 可以从 LDAP 服务器拉取 CRL。
7.7.7.1. 为 CRL 发布设置 LDAP 服务器 复制链接链接已复制到粘贴板!
以 root 用户身份在 rhds11.example.com 上:
安装 Directory 服务器实例,CA 将使用它来发布 CRL。红帽目录服务器分别侦听 LDAP/LDAPS 端口、5389 和 5636。
使用
dscreate create-template
命令在所选位置创建一个模板.cfg
文件(例如/root/pki_rsa
):dscreate create-template /root/pki_rsa/subca-crl-publish-ldap.cfg
# dscreate create-template /root/pki_rsa/subca-crl-publish-ldap.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑上一步中创建的
.cfg
文件。取消注释以下参数并把它设置为自定义安装:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装 Directory 服务器实例:
dscreate from-file /root/pki_rsa/subca-crl-publish-ldap.cfg
# dscreate from-file /root/pki_rsa/subca-crl-publish-ldap.cfg Starting installation... Completed installation for CC-RSA-SubCA-CRL-PUBLISH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
添加 ACI (Access Control 指令)规则以允许匿名绑定访问。默认情况下禁用它。
在所选位置(如
/root/pki_rsa/dirsrv/
)创建ldapaci.ldif
文件,其内容如下:dn: dc=example,dc=com changetype: modify add: aci aci: (targetattr!="userPassword || aci")(version 3.0; acl "Enable anonymous access"; allow (read, search, compare) userdn="ldap:///anyone";)
dn: dc=example,dc=com changetype: modify add: aci aci: (targetattr!="userPassword || aci")(version 3.0; acl "Enable anonymous access"; allow (read, search, compare) userdn="ldap:///anyone";)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
ldapmodify
命令来添加 ACI:ldapmodify -x -h rhds11.example.com -p 5389 -D 'cn=Directory Manager' -W -f /root/pki_rsa/dirsrv/ldapaci.ldif
# ldapmodify -x -h rhds11.example.com -p 5389 -D 'cn=Directory Manager' -W -f /root/pki_rsa/dirsrv/ldapaci.ldif
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
准备 CRL 发布子树:
在
/root/pki_rsa/dirsrv
目录中创建两个文件,其内容如下:对于
subca_pki_subtree.ldif
文件:dn: dc=pki,dc=example,dc=com objectClass: domain dc: pki
dn: dc=pki,dc=example,dc=com objectClass: domain dc: pki
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
subca_crl_subtree.ldif
文件:dn: dc=crl,dc=pki,dc=example,dc=com objectClass: domain dc: crl
dn: dc=crl,dc=pki,dc=example,dc=com objectClass: domain dc: crl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 CRL 实例中添加这两个条目:
ldapadd -x -H ldap://rhds11.example.com:5389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/subca_pki_subtree.ldif
# ldapadd -x -H ldap://rhds11.example.com:5389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/subca_pki_subtree.ldif
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapadd -x -H ldap://rhds11.example.com:5389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/subca_crl_subtree.ldif
# ldapadd -x -H ldap://rhds11.example.com:5389 -D "cn=Directory Manager" -W -f /root/pki_rsa/dirsrv/subca_crl_subtree.ldif
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.7.2. 在 SubCA 上配置 CRL 发布 复制链接链接已复制到粘贴板!
配置 CRL 发布:
添加
ca.publish.
属性:停止 SubCA 实例:
pki-server stop rhcs10-RSA-SubCA
# pki-server stop rhcs10-RSA-SubCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 SubCA 的
CS.cfg
配置文件中配置以下属性(例如/var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg
):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意或者,您可以使用
ca-config-set
命令更新属性。例如:pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.host rhds11.example.com; pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.port 5389; pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCaCertMap.dnPattern "cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com"; pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCrlMap.dnPattern cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com
# pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.host rhds11.example.com; pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.port 5389; pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCaCertMap.dnPattern "cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com"; pki-server ca-config-set -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCrlMap.dnPattern cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以此类推。
您可以使用
ca-config-show
命令检查参数是否已成功更新。例如:pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.host rhds11.example.com; pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.port 5389; pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCaCertMap.dnPattern "cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com"; pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCrlMap.dnPattern cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com
# pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.host rhds11.example.com; pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.ldappublish.ldap.ldapconn.port 5389; pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCaCertMap.dnPattern "cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com"; pki-server ca-config-show -i rhcs10-RSA-SubCA ca.publish.mapper.instance.LdapCrlMap.dnPattern cn=\$subj.cn,dc=crl,dc=pki,dc=example,dc=com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 SubCA 实例:
pki-server start rhcs10-RSA-SubCA
pki-server start rhcs10-RSA-SubCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
通过
curl
将 CRL 和 CA 证书推送到 LDAP 目录。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用直接 CA→OCSP CRL 发布方法:
停止 SubCA:
pki-server stop rhcs10-RSA-SubCA
# pki-server stop rhcs10-RSA-SubCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑 CA 的
CS.cfg
配置文件(例如/var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg
),并将其设置为false
:ca.publish.rule.instance.ocsprule-<host/port info>.enable=false
ca.publish.rule.instance.ocsprule-<host/port info>.enable=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
ca.publish.rule.instance.ocsprule-rhcs10-example-com-32443.enable=false
ca.publish.rule.instance.ocsprule-rhcs10-example-com-32443.enable=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 CA 以使更改生效:
pki-server start rhcs10-RSA-SubCA
# pki-server start rhcs10-RSA-SubCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用
curl
更新目录服务器。例如:curl \ -d "updateCRL=yes&updateCA=yes&xml=true" \ --cert-type P12 --cert /opt/pki_rsa/rhcs10-RSA-SubCA/ca_admin_cert.p12:SECret.123 \ -k https://rhcs10.example.com:31443/ca/agent/ca/updateDir | xmllint --format -
# curl \ -d "updateCRL=yes&updateCA=yes&xml=true" \ --cert-type P12 --cert /opt/pki_rsa/rhcs10-RSA-SubCA/ca_admin_cert.p12:SECret.123 \ -k https://rhcs10.example.com:31443/ca/agent/ca/updateDir | xmllint --format -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
curl
显示 CRL:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
ldapsearch
来验证 CRL 和 CA 证书是否已推送到 LDAP 目录:ldapsearch -x -D "cn=Directory Manager" -h "rhds11.example.com" -p 5389 -b "dc=example,dc=com" -w SECret.123
# ldapsearch -x -D "cn=Directory Manager" -h "rhds11.example.com" -p 5389 -b "dc=example,dc=com" -w SECret.123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 禁用 SubCA 的证书发布(可选):
以下流程是防止 debug 日志中出现 WARNING 信息,如下所示:
2024-01-29 00:04:10 [Thread-18] INFO: CAPublisherProcessor: No rules enabled 2024-01-29 00:04:10 [Thread-18] SEVERE: PublishProcessor::publishCert : Failed to publish using rule: No rules enabled 2024-01-29 00:04:10 [Thread-18] WARNING: Could not publish certificate serial number 0x9c2762c. Error Failed to publish using rule: No rules enabled Failed to publish using rule: No rules enabled
2024-01-29 00:04:10 [Thread-18] INFO: CAPublisherProcessor: No rules enabled
2024-01-29 00:04:10 [Thread-18] SEVERE: PublishProcessor::publishCert : Failed to publish using rule: No rules enabled
2024-01-29 00:04:10 [Thread-18] WARNING: Could not publish certificate serial number 0x9c2762c. Error Failed to publish using rule: No rules enabled
Failed to publish using rule: No rules enabled
停止 SubCA:
pki-server stop rhcs10-RSA-SubCA
# pki-server stop rhcs10-RSA-SubCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/var/lib/pki/rhcs10-RSA-SubCA/ca/conf/CS.cfg
并设置以下内容:ca.publish.cert.enable=false
ca.publish.cert.enable=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 SubCA 以使配置更改生效:
pki-server start rhcs10-RSA-SubCA
# pki-server start rhcs10-RSA-SubCA
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.7.3. 配置 OCSP 以从 LDAP 服务器拉取 CRL 复制链接链接已复制到粘贴板!
当您选择替代的 CRL 发布方法时,您需要设置 OCSP,以便它知道从哪里拉取 CRL。为此,您需要配置 OCSP Revocation Info 存储信息,使其事先指向 CRL 发布 LDAP 实例(已在本章前面设置)。
配置 OCSP 撤销信息存储:
停止 OCSP:
pki-server stop rhcs10-RSA-OCSP-subca
# pki-server stop rhcs10-RSA-OCSP-subca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 OCSP 的
CS.cfg
配置文件中设置ldapStore
属性(例如/var/lib/pki/rhcs10-RSA-OCSP-subca/ocsp/conf/CS.cfg
)。确保将ocsp.storeId
参数从defStore
改为ldapStore
并添加以下参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意refreshInSec0
的默认值为 86400,我们将其配置为 120 用于测试,因此每 2 分钟进行 CRL 更新。另外,为了更好地观察,您可以在 OCSP 的
CS.cfg
配置文件中将 debug 级别设置为 0,以确保 LDAPStore 更新在 debug 日志中显示。否则,它仅在没有更新时才会显示状态。debug.level=0
debug.level=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 但是,请注意,这样做会快速增加调试日志的大小,特别是 OCSP 系统。因此,只在短的测试时间内推荐使用。
启动 OCSP 以使
ldapStore
配置生效:pki-server start rhcs10-RSA-OCSP-subca
# pki-server start rhcs10-RSA-OCSP-subca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7.7.4. 测试 CRL 发布 复制链接链接已复制到粘贴板!
在本节中,我们将通过创建两个用户证书来测试 CRL 发布,其中之一将被撤销。然后,我们将针对 OCSP 实例检查有效证书和撤销的证书,以验证响应是否如预期。
创建 CMC 证书
为 user1
和 user2
创建代理签名的 CMC 证书,CMC 请求由 bootstrap admin 证书签名。例如,对于 user1
:
列出数据库中的证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
PKCS10Client
工具生成 PKCS10 证书请求:PKCS10Client -d /root/.dogtag/pki_rsa_bootstrap/certs_db -p SECret.123 -n "cn=test user1, uid=user1" -o /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req
# PKCS10Client -d /root/.dogtag/pki_rsa_bootstrap/certs_db -p SECret.123 -n "cn=test user1, uid=user1" -o /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req PKCS10Client: Certificate request written into /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req PKCS10Client: PKCS#10 request key id written into /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req.keyId
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在
keyId
文件上使用cat
,以便下一步可用:cat /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req.keyId; echo
# cat /root/.dogtag/pki_rsa_bootstrap/certs_db/user1.req.keyId; echo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 CMC 请求:
使用您在上一步中获取的 PKCS#10 请求和私钥 ID 创建
CMCRequest
配置文件。例如:vi cmcRequest_p10_user1.cfg
# vi cmcRequest_p10_user1.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_cmc_p10_user1.cfg
# vim /root/.dogtag/pki_rsa_bootstrap/certs_db/HttpClient_cmc_p10_user1.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
HttpClient
命令提交请求:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用
CMCResponse
命令处理响应:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
同样,使用适当的值重复上述步骤,为
user2
创建一个证书。
设置撤销
现在,设置撤销以撤销 user2
证书:
将 CRL 和 CA 证书推送到 LDAP 目录:
- 在浏览器中打开 SubCA 的 Agent UI。
- 选择 Update Revocation List,再点 Update。
点 Update Directory Server 并选择:
- 将证书撤销列表更新至目录
- 将证书管理器证书更新至目录
- 单击 Update Directory。
-
等待 OCSP 的
ldapStore
刷新发生(观察/var/lib/pki/rhcs10-RSA-OCSP-subca/ocsp/logs/debug
中的 debug 文件)。
使用
OCSPClient
工具检查证书状态。例如,使用证书序列号user1
(十进制):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 撤销
user2
的证书:创建
CMCRequest
配置文件。例如:vi cmc-agent-signed-revoke.cfg
# vi cmc-agent-signed-revoke.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 创建
HttpClient
配置文件。例如:vi HttpClient.revoke.agentSigned.cfg
# vi HttpClient.revoke.agentSigned.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
HttpClient
命令提交请求:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 处理 CMC 响应:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
-
在 CA 签名的审计日志中验证,例如
/var/log/pki/rhcs10-RSA-SubCA/ca/signedAudit/ca_audit
,代表user2
证书被撤销。 等待下一个 CRL autoupdate (以分钟为单位)由 SubCA 的
CS.cfg
文件的ca.crl.MasterCRL.autoUpdateInterval
配置。默认情况下,这设置为 240 分钟。)注意或者,如果要立即手动更新 CRL,请在浏览器中打开 SubCA 的 Agent UI,并:
- 选择 Update Revocation List,再点 Update。
点 Update Directory Server 并选择:
- 将证书撤销列表更新至目录
-
将证书管理器证书更新至目录
- 单击 Update Directory。
ldapStore
刷新完成后,观察/var/lib/pki/rhcs10-RSA-OCSP-subca/ocsp/logs/debug
中的 debug 文件。使用
OCSPCLient
工具验证user2
的证书已撤销,使用十进制十进制表示的序列号(使用 指向签名 CA 别名的 nickname):Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将 ocsp.store.ldapStore.refreshInSec0
设置为所需的值
在以前的版本中,我们设置 ocsp.store.ldapStore.refreshInSec0=120
以便更快地进行 CRL 刷新(2 分钟)用于测试。
-
请将 OCSP 的
CS.cfg
中的值更改为您所需的值(以秒为单位),将 debug 级别更新为 10 并重启 OCSP。