7.6. 创建并配置 SubCA (第 I 部分)
要安装和配置 SubCA 实例,请使用两个 pkispawn 方法之一:
在这个安装示例中,由于我们打算创建 OCSP 实例,因此我们希望创建 SubCA 非引导角色用户证书,以及 SubCA 的 TLS 服务器证书,这与指向 OCSP 的 URL 的 AIA 扩展类似。要做到这一点,我们将划分 SubCA 创建和配置,以便按以下顺序进行设置:
- 安装 SubCA (本节)
- 安装 OCSP 并设置使用预期的 AIA 发布证书的配置
- 完成非引导用户创建并替换 SubCA 的临时 TLS 服务器证书
7.6.1. 安装 SubCA 实例(单步方法) 复制链接链接已复制到粘贴板!
使用单步方法配置 SubCA 实例需要创建配置文件并运行 pkispawn 工具。在本例中,subCA 安装在 rhcs10.example.com (以及其他实例)上,其内部目录服务器位于 rhds11.example.com 上。SubCA 签名证书由 RootCA 发布,subCA 会创建自己的安全域。
先决条件
- 以 root 用户身份登录 rhcs10.example.com。
- 在我们的示例中,您有 第 7.1.2.3 节 “为 SubCA 安装 DS 实例”,CC-RSA-SubCA-LDAP 是 SubCA 的内部数据库。
流程
在所选位置(如
/root/pki_rsa)创建一个 SubCA 安装文件:# cd /root/pki_rsa# vi subca_inst.cfg注意除非明确指定,否则系统证书别名将自动命名为
pki_instance_name的值。为了避免共享 HSM 上的证书别名冲突,请为每个实例创建使用不同的实例名称。
以下安装文件中指定的值是示例。除了更改 HSM 密码外,还要相应地编辑值,如 ports, directory, nicknames, domains…
[DEFAULT] pki_instance_name=rhcs10-RSA-SubCA pki_https_port=31443 pki_http_port=31080 ### Crypto Token pki_hsm_enable=True pki_hsm_libfile=/opt/nfast/toolkits/pkcs11/libcknfast.so pki_hsm_modulename=nfast pki_token_name=NHSM-CONN-XC pki_token_password=<YourHSMpassword> pki_audit_signing_token=NHSM-CONN-XC pki_audit_signing_key_algorithm=SHA256withRSA pki_audit_signing_key_size=2048 pki_audit_signing_key_type=rsa pki_audit_signing_signing_algorithm=SHA256withRSA pki_subsystem_token=NHSM-CONN-XC pki_subsystem_key_algorithm=SHA256withRSA pki_subsystem_signing_algorithm=SHA256withRSA pki_subsystem_key_size=2048 pki_subsystem_key_type=rsa pki_sslserver_token=NHSM-CONN-XC pki_sslserver_key_algorithm=SHA256withRSA pki_sslserver_signing_algorithm=SHA256withRSA pki_sslserver_key_size=2048 pki_sslserver_key_type=rsa ### CA cert chain concatenated in PEM format pki_cert_chain_path=/opt/pki_rsa/ca-chain.pem ### Bootstrap Admin pki_admin_password=SECret.123 pki_admin_key_type=rsa pki_admin_key_size=2048 pki_admin_key_algorithm=SHA256withRSA ### Bootstrap Admin client dir pki_client_admin_cert_p12=/opt/pki_rsa/rhcs10-RSA-SubCA/ca_admin_cert.p12 pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-SubCA/certs_db pki_client_database_password=SECret.123 pki_client_dir=/opt/pki_rsa/rhcs10-RSA-SubCA pki_client_pkcs12_password=SECret.123 ### Internal LDAP pki_ds_bind_dn=cn=Directory Manager pki_ds_ldap_port=7389 pki_ds_ldaps_port=7636 pki_ds_password=SECret.123 pki_ds_remove_data=True pki_ds_secure_connection=True pki_ds_secure_connection_ca_pem_file=/opt/pki_rsa/temp-dirsrv-subca-cert.pem pki_ds_secure_connection_ca_nickname=DS temp CA certificate [Tomcat] pki_ajp_port=31009 pki_tomcat_server_port=31005 [CA] pki_subordinate=True pki_issuing_ca_https_port=8443 pki_issuing_ca_hostname=rhcs10.example.com pki_issuing_ca=https://rhcs10.example.com:8443 ### New Security Domain pki_security_domain_hostname=rhcs10.example.com pki_security_domain_https_port=8443 pki_security_domain_password=SECret.123 pki_subordinate_create_new_security_domain=True pki_subordinate_security_domain_name=Example-rhcs10-RSA-SubCA pki_import_admin_cert=False pki_admin_nickname=PKI Bootstrap Administrator for RSA-SubCA pki_admin_name=caadmin pki_admin_uid=caadmin pki_admin_email=caadmin@example.com pki_ca_signing_token=NHSM-CONN-XC pki_ca_signing_key_algorithm=SHA256withRSA pki_ca_signing_key_size=3072 pki_ca_signing_key_type=rsa pki_ca_signing_nickname=CA Signing Cert - %(pki_instance_name)s pki_ca_signing_signing_algorithm=SHA256withRSA pki_ocsp_signing_token=NHSM-CONN-XC pki_ocsp_signing_key_algorithm=SHA256withRSA pki_ocsp_signing_key_size=3072 pki_ocsp_signing_key_type=rsa pki_ocsp_signing_signing_algorithm=SHA256withRSA pki_ds_hostname=rhds11.example.com pki_ds_base_dn=dc=RSA-SubCA pki_ds_database=CC-RSA-SubCA-LDAP pki_share_db=False ### Enable random serial numbers pki_random_serial_numbers_enable=True运行
pkispawn工具来安装 RHCS SubCA 实例:# pkispawn -s CA -f subca_inst.cfg --debug这将在
/var/lib/pki/rhcs10-RSA-SubCA中创建 SubCA 实例。
验证步骤
显示已安装 CA 的状态:
# pki-server status rhcs10-RSA-SubCA请注意 Unsecure EE、Secure EE、Agent、Admin 和 pkiconsole URL。
运行以下命令,验证 CA 的健全性。它应该显示证书:
# pki -p 31443 -h rhcs10.example.com ca-cert-find
当第一次使用 pki 命令连接到 SubCA 时,会显示 CA 签名证书的不受信任的签发者警告,如下所示:
WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA'
Trust this certificate (y/N)?
如果 Subject DN 按预期匹配主机名,请选择"y"来信任 CA 签名证书。警告不会再次显示。
使用本节(单步方法)完成后,直接跳过 第 7.6.3 节 “更新 CA 证书链” 以继续 SubCA 安装。
7.6.2. 安装 SubCA 实例(两步方法) 复制链接链接已复制到粘贴板!
使用两步方法配置 SubCA 实例需要创建配置文件并运行 pkispawn 工具两次。
在本例中,subCA 安装在 rhcs10.example.com 上。
先决条件
- 以 root 用户身份登录 rhcs10.example.com。
- 您有 第 7.1.2.3 节 “为 SubCA 安装 DS 实例”。在我们的示例中,CC-RSA-SubCA-LDAP 是 SubCA 的内部数据库。
SubCA 安装的第一步
在要托管 RHCS 实例的机器上的所选位置(如
/root/pki_rsa)创建一个 CA 安装文件,该文件将托管 RHCS 实例(rhcs10.example.com)。# cd /root/pki_rsa # vi subca_inst.cfg[DEFAULT] pki_instance_name=rhcs10-RSA-SubCA pki_https_port=31443 pki_http_port=31080 ### Crypto Token pki_hsm_enable=True pki_hsm_libfile=/opt/nfast/toolkits/pkcs11/libcknfast.so pki_hsm_modulename=nfast pki_token_name=NHSM-CONN-XC pki_token_password=<YourHSMpassword> pki_audit_signing_token=NHSM-CONN-XC pki_audit_signing_key_algorithm=SHA256withRSA pki_audit_signing_key_size=2048 pki_audit_signing_key_type=rsa pki_audit_signing_signing_algorithm=SHA256withRSA pki_subsystem_token=NHSM-CONN-XC pki_subsystem_key_algorithm=SHA256withRSA pki_subsystem_signing_algorithm=SHA256withRSA pki_subsystem_key_size=2048 pki_subsystem_key_type=rsa pki_sslserver_token=NHSM-CONN-XC pki_sslserver_key_algorithm=SHA256withRSA pki_sslserver_signing_algorithm=SHA256withRSA pki_sslserver_key_size=2048 pki_sslserver_key_type=rsa ### CA cert chain concatenated in PEM format pki_cert_chain_path=/opt/pki_rsa/ca-chain.pem ### Bootstrap Admin pki_admin_password=SECret.123 pki_admin_key_type=rsa pki_admin_key_size=2048 pki_admin_key_algorithm=SHA256withRSA ### Bootstrap Admin client dir pki_client_admin_cert_p12=/opt/pki_rsa/rhcs10-RSA-SubCA/ca_admin_cert.p12 pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-SubCA/certs_db pki_client_database_password=SECret.123 pki_client_dir=/opt/pki_rsa/rhcs10-RSA-SubCA pki_client_pkcs12_password=SECret.123 ### Internal LDAP pki_ds_bind_dn=cn=Directory Manager pki_ds_ldap_port=7389 pki_ds_ldaps_port=7636 pki_ds_password=SECret.123 pki_ds_remove_data=True pki_ds_secure_connection=True pki_ds_secure_connection_ca_pem_file=/opt/pki_rsa/temp-dirsrv-subca-cert.pem pki_ds_secure_connection_ca_nickname=DS temp CA certificate [Tomcat] pki_ajp_port=31009 pki_tomcat_server_port=31005 [CA] pki_subordinate=True pki_issuing_ca_https_port=8443 pki_issuing_ca_hostname=rhcs10.example.com pki_issuing_ca=https://rhcs10.example.com:8443 ### New Security Domain pki_security_domain_hostname=rhcs10.example.com pki_security_domain_https_port=8443 pki_security_domain_password=SECret.123 pki_subordinate_create_new_security_domain=True pki_subordinate_security_domain_name=Example-rhcs10-RSA-SubCA pki_import_admin_cert=False pki_admin_nickname=PKI Bootstrap Administrator for RSA-SubCA pki_admin_name=caadmin pki_admin_uid=caadmin pki_admin_email=caadmin@example.com pki_ca_signing_token=NHSM-CONN-XC pki_ca_signing_key_algorithm=SHA256withRSA pki_ca_signing_key_size=3072 pki_ca_signing_key_type=rsa pki_ca_signing_nickname=CA Signing Cert - %(pki_instance_name)s pki_ca_signing_signing_algorithm=SHA256withRSA pki_ocsp_signing_token=NHSM-CONN-XC pki_ocsp_signing_key_algorithm=SHA256withRSA pki_ocsp_signing_key_size=3072 pki_ocsp_signing_key_type=rsa pki_ocsp_signing_signing_algorithm=SHA256withRSA pki_ds_hostname=rhds11.example.com pki_ds_base_dn=dc=RSA-SubCA pki_ds_database=CC-RSA-SubCA-LDAP pki_share_db=False ### Enable random serial numbers pki_random_serial_numbers_enable=True注意除非明确指定,否则系统证书别名将自动命名为
pki_instance_name的值。为了避免共享 HSM 上的证书别名冲突,请为每个实例创建使用不同的实例名称。但是,在两步安装中,两个文件的pki_instance_name值应该匹配。以下值只是示例。运行
pkispawn工具来安装 RHCS CA 实例:# pkispawn -s CA -f subca_inst.cfg --skip-configuration --debug
步骤配置
如 步骤自定义之间的 所述,您可以自定义某些内容,如系统证书的证书配置文件。
为 CA 签名证书设置 Subject Key Identifier 扩展消息摘要算法:
打开此 CA 的签名证书的注册配置集:
# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/conf/caCert.profile添加以下参数:
7.default.params.messageDigest=SHA-256- 保存该文件。
同样,对于此 CA 将在以后发布的 CA 签名证书执行相同的操作:
为 CA 签名证书打开注册配置集:
# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caInstallCACert.cfg# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCcaCert.cfg添加以下参数:
policyset.caCertSet.8.default.params.messageDigest=SHA-256- 保存该文件。
此处也可以进行其他在步骤间的配置更改。例如,如果要扩展此子系统审计签名证书的有效性周期:
打开对应的配置文件:
# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caInternalAuthAuditSigningCert.cfg将以下范围参数改为所需的值:
policyset.auditSigningCertSet.2.constraint.params.range=720 policyset.auditSigningCertSet.2.default.params.range=720-
保存该文件。在下一部分中完成
pkispawn的第二步骤后,您应该预期此子系统的审计签名证书的有效性,以匹配您更改的值。
SubCA 安装的第二步
pkispawn 的第二步涉及以不同方式针对同一文件运行工具,从而配置 RHCS CA 实例。
运行
pkispawn工具来配置 CA:# pkispawn -s CA -f subca_inst.cfg --skip-installation --debug
验证步骤
显示已安装 CA 的状态:
# pki-server status rhcs10-RSA-SubCA请注意 Unsecure EE、Secure EE、Agent、Admin 和 pkiconsole URL。
运行以下命令,验证 CA 的健全性。它应该显示证书:
# pki -p 8443 -h rhcs10.example.com ca-cert-find
当第一次使用 pki 命令连接到 SubCA 时,会显示 CA 签名证书的不受信任的签发者警告,如下所示:
WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-SubCA,O=Example-rhcs10-RSA-RootCA'
Trust this certificate (y/N)?
如果主题 DN 与主机名匹配,请选择 y 以信任 CA 签名证书。警告不会再次显示。
7.6.3. 更新 CA 证书链 复制链接链接已复制到粘贴板!
在以前的版本中,我们创建包含 RootCA 证书的 /opt/pki_rsa/ca-chain.pem 文件。我们需要通过添加 SubCA 证书来更新此 CA 链。
将 SubCA 证书检索到
.pem文件中# certutil -L -d /var/lib/pki/rhcs10-RSA-SubCA/alias -n "CA Signing Cert - rhcs10-RSA-SubCA" -a > /opt/pki_rsa/subCA.pem更新 CA 证书链。例如:
# cat /opt/pki_rsa/subCA.pem /opt/pki_rsa/rootCA.pem > /opt/pki_rsa/ca-chain.pem
在本示例安装中,您需要使用以下方法订购证书链:
-
链以
.pem文件顶部的叶证书开始。 - 其直接签名的证书如下所示。
- 链以 root 证书结尾,位于底部。
将文件复制到 rhds11.example.com (托管 DS 实例的机器):
# scp /opt/pki_rsa/subCA.pem root@rhds11.example.com:/opt/pki_rsa# scp /opt/pki_rsa/ca-chain.pem root@rhds11.example.com:/opt/pki_rsa为 SubCA 重启 DS 实例:
# dsctl slapd-CC-RSA-SubCA-LDAP restart
7.6.4. 设置 SubCA bootstrap 管理证书 复制链接链接已复制到粘贴板!
这个过程包括将 SubCA bootstrap 证书/密钥导入到 nssdb 中(在我们的示例中,/root/.dogtag/pki_rsa_bootstrap/certs_db)为角色用户证书签名 CMC 完整请求。
可选 :如果您之前还没有这样做,请将 RootCA 签名证书导入到 nssdb 中:
# pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import "CA Signing Cert - rhcs10-RSA-RootCA" --ca-cert /opt/pki_rsa/rootCA.pem将 SubCA 签名证书导入到 nssdb 中:
# pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import "CA Signing Cert - rhcs10-RSA-SubCA" --ca-cert /opt/pki_rsa/subCA.pem将 SubCA bootstrap 证书导入到 nssdb 中:
# pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import --pkcs12 /opt/pki_rsa/rhcs10-RSA-SubCA/ca_admin_cert.p12 --pkcs12-password SECret.123 ---------------------------------------- Imported certificates from PKCS #12 file ----------------------------------------
验证:
列出 nssdb 的内容:
# certutil -d /root/.dogtag/pki_rsa_bootstrap/certs_db -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI CA Signing Cert - rhcs10-RSA-RootCA CT,C,C PKI Bootstrap Administrator for RSA-RootCA u,u,u CA Signing Cert - rhcs10-RSA-SubCA CT,C,C PKI Bootstrap Administrator for RSA-SubCA u,u,u
7.6.5. 禁用非CMC 和非安装配置集 复制链接链接已复制到粘贴板!
该配置文件存储在 /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/ 中。CMC 配置文件在其配置集 ID 中包含 "CMC"。本节提供了禁用非CMC 和非安装配置集的步骤。
流程
生成要编辑的非CMC 配置集列表:
# ls /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca | grep -v CMC | grep -v Install | grep -v caInternal | grep -v caECInternal | grep -v caAdminCert | grep -v caECAdminCert | tee /root/pki_rsa/subca-profile-deletelist.txt停止 SubCA 实例:
pki-server stop rhcs10-RSA-SubCA对于列表中的每个配置集,将
visible和enable参数从true改为false。例如,使用以下命令设置visible=false和enable=false:# cat /root/pki_rsa/subca-profile-deletelist.txt | while read line; do sed -i 's/^visible=true/visible=false/g' /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/$line; sed -i 's/^enable=true/enable=false/g' /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/$line; done另外,还要将
caCMCUserCert配置集的visible参数改为false:# sed -i 's/^visible=true/visible=false/' /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCUserCert.cfg /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCECUserCert.cfg启动 SubCA 实例:
pki-server start rhcs10-RSA-SubCA
要允许 SubCA 角色用户证书包含指向 OCSP 实例的 AIA 扩展(在以下部分中创建),相关部分放置在(第 7.8 节 “创建并配置 SubCA (第二部分)”)中,AFTER OCSP 实例创建。
7.6.6. 配置对 CRL 分发点的支持 复制链接链接已复制到粘贴板!
有关 CRL 分发点的更多信息,为什么需要它们,以及它们最适合的位置,请参阅 第 9.4.1.2 节 “在 CA 上启用自动撤销检查”。
要配置对 CRL 分发点的支持,我们描述了如何设置基于文件的 CRL 发布程序以及 CRL 的分区。您还将了解如何启用证书注册配置文件,以使用 CRL 分发点扩展发布证书。最后,我们描述了如何将 CA 的 LDAP 服务器的临时服务器认证替换为从 CRL 分发点配置文件发布的证书。
在继续以下更改前,停止 SubCA 实例:
# pki-server stop rhcs10-RSA-SubCA
7.6.6.1. 支持 Server Cert CRL File Publishing 的 CA 设置 复制链接链接已复制到粘贴板!
在继续操作前,在编辑前保存配置文件副本:
# cp /var/lib/pki/rhcs10-RSA-SubCA/conf/CS.cfg /var/lib/pki/rhcs10-RSA-SubCA/conf/CS.cfg.bak.<date>
7.6.6.1.1. 设置基于文件的发布者: crlFilePublisher 复制链接链接已复制到粘贴板!
本节中的配置创建基于文件的 CRL 发布程序,名为 crlFilePublisher。正确设置后,CRL 以 DER 格式保存在 /var/lib/pki/rhcs10-RSA-SubCA/crl 目录中。
创建 CRL 目录以发布基于文件的分区 CRL:
# mkdir /var/lib/pki/rhcs10-RSA-SubCA/crl # chown pkiuser.pkiuser /var/lib/pki/rhcs10-RSA-SubCA/crl在 CA 的
CS.cfg中添加以下内容:ca.publish.publisher.instance.crlFilePublisher.Filename.b64=false ca.publish.publisher.instance.crlFilePublisher.Filename.der=true ca.publish.publisher.instance.crlFilePublisher.crlLinkExt=crl ca.publish.publisher.instance.crlFilePublisher.directory=/var/lib/pki/rhcs10-RSA-SubCA/crl ca.publish.publisher.instance.crlFilePublisher.latestCrlLink=true ca.publish.publisher.instance.crlFilePublisher.maxAge=0 ca.publish.publisher.instance.crlFilePublisher.maxFullCRLs=0 ca.publish.publisher.instance.crlFilePublisher.pluginName=FileBasedPublisher ca.publish.publisher.instance.crlFilePublisher.timeStamp=LocalTime ca.publish.publisher.instance.crlFilePublisher.zipCRLs=false ca.publish.publisher.instance.crlFilePublisher.zipLevel=9
7.6.6.1.2. 设置基于文件的发布规则:FileCrlRule 复制链接链接已复制到粘贴板!
本节中的配置创建名为 FileCrlRule 的基于文件的发布规则。predicate 指定到名为 ServerCertCRL 的分区 CRL 的发布点(在 第 7.6.6.1.4 节 “为通过配置集发布的证书设置 CRL-partitioning”中定义)。
在 CA 的
CS.cfg中添加以下内容:ca.publish.rule.instance.FileCrlRule.enable=true ca.publish.rule.instance.FileCrlRule.mapper=NoMap ca.publish.rule.instance.FileCrlRule.pluginName=Rule ca.publish.rule.instance.FileCrlRule.predicate=issuingPointId==ServerCertCRL ca.publish.rule.instance.FileCrlRule.publisher=crlFilePublisher ca.publish.rule.instance.FileCrlRule.type=crl
7.6.6.1.3. 修改基于 LDAP 的发布规则:LdapCrlRule 复制链接链接已复制到粘贴板!
此配置明确将 LdapCrlRule predicate 设置为 master (full) CRL。master CRL 持续提供给 OCSP 响应程序,以进行正确的 OCSP 支持。
修改 CA 的
CS.cfg中的以下内容:ca.publish.rule.instance.LdapCrlRule.predicate=issuingPointId==MasterCRL
7.6.6.1.4. 为通过配置集发布的证书设置 CRL-partitioning 复制链接链接已复制到粘贴板!
本节中的配置演示了如何将 CRL 分区到上面定义的 FileCrlRule 中使用的一个较小的子集。CRL 由在 profileList 参数中指定的证书注册配置文件进行分区。以逗号分隔的列表可用于多个配置集(例如,caCMCserverCertWithCRLDP.cfg 和 caCMCECserverCertWithCRLDP.cfg)。
在 CA 的
CS.cfg中添加以下内容:ca.crl.ServerCertCRL.allowExtensions=true ca.crl.ServerCertCRL.alwaysUpdate=false ca.crl.ServerCertCRL.autoUpdateInterval=240 ca.crl.ServerCertCRL.caCertsOnly=false ca.crl.ServerCertCRL.cacheUpdateInterval=15 ca.crl.ServerCertCRL.class=com.netscape.ca.CRLIssuingPoint ca.crl.ServerCertCRL.dailyUpdates=1:00 ca.crl.ServerCertCRL.description=CA's Certificate Revocation List containing certificates issued via the caCMCserverCertWithCRLDP and caCMCECserverCertWithCRLDP enrollment profile ca.crl.ServerCertCRL.enable=true ca.crl.ServerCertCRL.enableCRLCache=false ca.crl.ServerCertCRL.enableCRLUpdates=true ca.crl.ServerCertCRL.enableCacheRecovery=true ca.crl.ServerCertCRL.enableCacheTesting=false ca.crl.ServerCertCRL.enableDailyUpdates=true ca.crl.ServerCertCRL.enableUpdateInterval=true ca.crl.ServerCertCRL.extendedNextUpdate=true ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.accessLocation0="" ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.accessLocationType0=URI ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.accessMethod0=caIssuers ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.class=com.netscape.cms.crl.CMSAuthInfoAccessExtension ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.critical=false ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.enable=false ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.numberOfAccessDescriptions=1 ca.crl.ServerCertCRL.extension.AuthorityInformationAccess.type=CRLExtension ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.class=com.netscape.cms.crl.CMSAuthorityKeyIdentifierExtension ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.critical=false ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.enable=false ca.crl.ServerCertCRL.extension.AuthorityKeyIdentifier.type=CRLExtension ca.crl.ServerCertCRL.extension.CRLNumber.class=com.netscape.cms.crl.CMSCRLNumberExtension ca.crl.ServerCertCRL.extension.CRLNumber.critical=false ca.crl.ServerCertCRL.extension.CRLNumber.enable=true ca.crl.ServerCertCRL.extension.CRLNumber.type=CRLExtension ca.crl.ServerCertCRL.extension.CRLReason.class=com.netscape.cms.crl.CMSCRLReasonExtension ca.crl.ServerCertCRL.extension.CRLReason.critical=false ca.crl.ServerCertCRL.extension.CRLReason.enable=true ca.crl.ServerCertCRL.extension.CRLReason.type=CRLEntryExtension ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.class=com.netscape.cms.crl.CMSDeltaCRLIndicatorExtension ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.critical=true ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.enable=false ca.crl.ServerCertCRL.extension.DeltaCRLIndicator.type=CRLExtension ca.crl.ServerCertCRL.extension.FreshestCRL.class=com.netscape.cms.crl.CMSFreshestCRLExtension ca.crl.ServerCertCRL.extension.FreshestCRL.critical=false ca.crl.ServerCertCRL.extension.FreshestCRL.enable=false ca.crl.ServerCertCRL.extension.FreshestCRL.numPoints=0 ca.crl.ServerCertCRL.extension.FreshestCRL.pointName0="" ca.crl.ServerCertCRL.extension.FreshestCRL.pointType0="" ca.crl.ServerCertCRL.extension.FreshestCRL.type=CRLExtension ca.crl.ServerCertCRL.extension.InvalidityDate.class=com.netscape.cms.crl.CMSInvalidityDateExtension ca.crl.ServerCertCRL.extension.InvalidityDate.critical=false ca.crl.ServerCertCRL.extension.InvalidityDate.enable=true ca.crl.ServerCertCRL.extension.InvalidityDate.type=CRLEntryExtension ca.crl.ServerCertCRL.extension.IssuerAlternativeName.class=com.netscape.cms.crl.CMSIssuerAlternativeNameExtension ca.crl.ServerCertCRL.extension.IssuerAlternativeName.critical=false ca.crl.ServerCertCRL.extension.IssuerAlternativeName.enable=false ca.crl.ServerCertCRL.extension.IssuerAlternativeName.name0="" ca.crl.ServerCertCRL.extension.IssuerAlternativeName.nameType0="" ca.crl.ServerCertCRL.extension.IssuerAlternativeName.numNames=0 ca.crl.ServerCertCRL.extension.IssuerAlternativeName.type=CRLExtension ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.class=com.netscape.cms.crl.CMSIssuingDistributionPointExtension ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.critical=true ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.enable=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.indirectCRL=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.onlyContainsCACerts=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.onlyContainsUserCerts=false ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.onlySomeReasons="" ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.pointName= ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.pointType= ca.crl.ServerCertCRL.extension.IssuingDistributionPoint.type=CRLExtension ca.crl.ServerCertCRL.includeExpiredCerts=false ca.crl.ServerCertCRL.includeExpiredCertsOneExtraTime=false ca.crl.ServerCertCRL.minUpdateInterval=0 ca.crl.ServerCertCRL.nextAsThisUpdateExtension=0 ca.crl.ServerCertCRL.nextUpdateGracePeriod=0 ca.crl.ServerCertCRL.profileCertsOnly=true ca.crl.ServerCertCRL.profileList=caCMCserverCertWithCRLDP,caCMCECserverCertWithCRLDP ca.crl.ServerCertCRL.publishOnStart=false ca.crl.ServerCertCRL.saveMemory=false ca.crl.ServerCertCRL.signingAlgorithm=SHA256withRSA ca.crl.ServerCertCRL.updateSchema=1
对于 ECC CA,将以下内容设置为 SHA512withEC :
ca.crl.ServerCertCRL.signingAlgorithm=SHA512withEC
7.6.6.2. 在 CA 中设置 CRL HTTP 服务 复制链接链接已复制到粘贴板!
由 CRL 分发点提供的 CRL 发布到一个文件(请参阅上面的章节)。此文件由非 SSL Tomcat 服务提供,我们添加到 CA 的 server.xml 中,如下所示:
在文件
/var/lib/pki/rhcs10-RSA-SubCA/conf/server.xml文件中的Catalina服务前 添加以下CRL服务:<Service name="CRL"> <Connector port="31085" protocol="HTTP/1.1" connectionTimeout="80000" maxParameterCount="1000" name="Unsecure" maxHttpHeaderSize="8192" acceptCount="100" maxThreads="15" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true"/> <Engine name="CRL" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_crl_access_log" suffix=".txt" pattern="common"/> </Host> </Engine> </Service>在以上 CRL 服务中,选择一个尚未使用的连接器端口号。例如,如果从属 CA 的 HTTP 端口为 31080,则选择 31085。确保为 SELinux 添加了端口,例如:
# semanage port -a -t http_port_t -p tcp 31085 # firewall-cmd --permanent --add-port=31085/tcp # firewall-cmd --reload注意如果您的所选端口已预先使用另一个 SELinux 上下文分配,您会看到类似如下的错误消息:
ValueError: Port tcp/31085 already defined您还可以使用以下命令搜索并找出 CRL HTTP 端口是否已预先分配:
# semanage port -l | grep <port>我们建议您选择另一个端口。但是,如果要使用相同的端口,您可以执行以下操作:
# semanage port -m -t http_port_t -p tcp 31085服务器重启时,如果不存在,则会在 CA 的 conf 目录下创建目录 CRL/localhost。但是,要准备添加
crl.xml文件,请执行以下操作:# mkdir -p /var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost # chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost在
/var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost下创建一个crl.xml文件,并添加以下内容:<Context docBase="/var/lib/pki/rhcs10-RSA-SubCA/crl"> <Resources allowLinking="true" cachingAllowed="false" /> </Context>为
crl.xml文件设置user:group所有权:chown pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/conf/CRL/localhost/crl.xml
注册配置集中设置的 CRL 分发点如下所示(请参阅下一部分): http://rhcs10.example.com:31085/crl/ServerCertCRL.crl
仅为较小的 CRL 发布或撤销证书,才建议基于文件的 CRL。只有在需要时才建议使用它,比如在本节中描述的 CA 启动设置的情况。
7.6.6.3. 使用 CRL 分发点的注册配置集配置 复制链接链接已复制到粘贴板!
启用所需的配置集,使其包含 CRL 分发点。这些配置集与上述部分中配置对应的配置集。
在
/var/lib/pki/<ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/ 目录中打开配置集(用于注册 RSA 密钥),如下所示:caCMCserverCertWithCRLDP.cfg# vi /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg … enable=true … policyset.serverCertSet.10.default.params.crlDistPointsPointName_0=http://rhcs10.example.com:31085/crl/ServerCertCRL.crl …打开
/var/lib/pki/<ca 实例目录/ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/ 目录中的(用于注册 ECC 密钥),如下所示:caCMCECserverCertWithCRLDP.cfg# vi /var/lib/pki/rhcs10-ECC-SubCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg … enable=true … policyset.serverCertSet.10.default.params.crlDistPointsPointName_0=http://rhcs10.example.com:21085/crl/ServerCertCRL.crl …设置 user:group 所有权:
# chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg # chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg在 CA 的
CS.cfg中注册一个新的配置集:为每个配置集添加以下行:
profile.caCMCserverCertWithCRLDP.class_id=caEnrollImpl profile.caCMCserverCertWithCRLDP.config=/var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg profile.caCMCECserverCertWithCRLDP.class_id=caEnrollImpl profile.caCMCECserverCertWithCRLDP.config=/var/lib/pki/rhcs10-RSA-SubCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg编辑
profile.list条目,以添加两个新配置文件。例如:profile.list=caCMCserverCertWithCRLDP,caCMCECserverCertWithCRLDP,acmeServerCert,caCMCserverCert,caCMCECserverCert, …
7.6.6.4. 设置以更直接的 CRL 更新 复制链接链接已复制到粘贴板!
由于服务器证书通常不会撤销,因此最好在撤销时立即更新 CRL。编辑 CA 的 CS.cfg :
ca.crl.ServerCertCRL.alwaysUpdate=true
7.6.6.5. 更新 CA 配置后启动 CA 复制链接链接已复制到粘贴板!
配置完成后,启动 CA:
# pki-server start rhcs10-RSA-SubCA
当 CA 的目录服务器 Server-Cert 被正确替换后,将指示验证 第 7.8.2 节 “替换临时 DS 证书(SubCA)” 末尾的 CRL 分发点设置。