7.3. 创建并配置 RootCA (第 I 部分)


要安装和配置 RootCA 实例,请使用两个 pkispawn 方法之一:

7.3.1. 安装 RootCA 实例(单步方法)

使用单步方法配置 RootCA 实例需要创建配置文件并运行 pkispawn 工具。
在本例中,根CA 安装在 rhcs10.example.com (以及其他实例)上,其内部目录服务器位于 rhds11.example.com 上。

先决条件

流程

  1. 在要托管 RHCS 实例的机器上的所选位置(如 /root/pki_rsa)创建一个 CA 安装文件,该文件将托管 RHCS 实例(rhcs10.example.com)。

    # cd /root/pki_rsa
    Copy to Clipboard Toggle word wrap
    # vi rootca_inst.cfg
    Copy to Clipboard Toggle word wrap
    注意

    除非明确指定,否则系统证书别名将自动命名为 pki_instance_name 的值。为了避免共享 HSM 上的证书别名冲突,请为每个实例创建使用不同的实例名称。

    以下安装文件中指定的值是示例。除了更改 HSM 密码外,还要相应地编辑值,如 ports, directory, nicknames, domains…​

    [DEFAULT]
    pki_instance_name=rhcs10-RSA-RootCA
    pki_https_port=8443
    pki_http_port=8080
    
    ### 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
    
    ### 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
    ### by default, if pki_client_dir, pki_client_database_dir,
    ### and pki_client_admin_cert_p12 are not specified, items will be placed
    ### under some default directories in /root/.dogtag
    pki_client_admin_cert_p12=/opt/pki_rsa/rhcs10-RSA-RootCA/ca_admin_cert.p12
    pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-RootCA/certs_db
    pki_client_database_password=SECret.123
    pki_client_dir=/opt/pki_rsa/rhcs10-RSA-RootCA
    pki_client_pkcs12_password=SECret.123
    
    ### Internal LDAP
    pki_ds_bind_dn=cn=Directory Manager
    pki_ds_ldap_port=389
    pki_ds_ldaps_port=636
    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-rootca-cert.pem
    pki_ds_secure_connection_ca_nickname=DS temp CA certificate
    
    ### Security Domain
    pki_security_domain_hostname=rhcs10.example.com
    pki_security_domain_name=Example-rhcs10-RSA-RootCA
    pki_security_domain_password=SECret.123
    
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    
    [CA]
    pki_import_admin_cert=False
    pki_admin_nickname=PKI Bootstrap Administrator for RSA-RootCA
    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-RootCA
    pki_ds_database=CC-RSA-RootCA-LDAP
    pki_share_db=False
    
    ### Enable random serial numbers
    pki_random_serial_numbers_enable=True
    Copy to Clipboard Toggle word wrap
  2. 运行 pkispawn 工具来安装 RHCS CA 实例:

    # pkispawn -s CA -f rootca_inst.cfg --debug
    Copy to Clipboard Toggle word wrap

验证步骤

  1. 显示已安装 CA 的状态:

    # pki-server status rhcs10-RSA-RootCA
    Copy to Clipboard Toggle word wrap

    请注意 Unsecure EE、Secure EE、Agent、Admin 和 pkiconsole URL。

  2. 运行以下命令,验证 CA 的健全性。它应该显示证书:

    # pki -p 8443 -h rhcs10.example.com ca-cert-find
    Copy to Clipboard Toggle word wrap
注意

当第一次使用 pki 命令连接到 RootCA 时,将显示 CA 签名证书的不受信任的签发者警告,如下所示:

WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA'
Trust this certificate (y/N)?
Copy to Clipboard Toggle word wrap

如果主题 DN 与主机名匹配,请选择 y 以信任 CA 签名证书。警告不会再次显示。

注意

使用本节(单步方法)完成后,直接跳过 第 7.3.3 节 “禁用非CMC 和非安装配置集” 以继续 RootCA 安装。

7.3.2. 安装 RootCA 实例(两步方法)

使用两步方法配置 RootCA 实例需要创建配置文件并运行 pkispawn 工具两次。
在本例中,根CA 安装在 rhcs10.example.com 上。

先决条件

RootCA 安装的第一步

  1. 在要托管 RHCS 实例的机器上的所选位置(如 /root/pki_rsa)创建一个 CA 安装文件,该文件将托管 RHCS 实例(rhcs10.example.com)。

    # cd /root/pki_rsa
    
    # vi rootca_inst.cfg
    Copy to Clipboard Toggle word wrap
    [DEFAULT]
    pki_instance_name=rhcs10-RSA-RootCA
    pki_https_port=8443
    pki_http_port=8080
    
    ### 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
    
    ### 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
    ### by default, if pki_client_dir, pki_client_database_dir,
    ### and pki_client_admin_cert_p12 are not specified, items will be placed
    ### under some default directories in /root/.dogtag
    pki_client_dir=/opt/pki_rsa/rhcs10-RSA-RootCA
    pki_client_admin_cert_p12=/opt/pki_rsa/rhcs10-RSA-RootCA/ca_admin_cert.p12
    pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-RootCA/certs_db
    pki_client_database_password=SECret.123
    pki_client_pkcs12_password=SECret.123
    
    ### Internal LDAP
    pki_ds_bind_dn=cn=Directory Manager
    pki_ds_ldap_port=389
    pki_ds_ldaps_port=636
    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-rootca-cert.pem
    pki_ds_secure_connection_ca_nickname=DS temp CA certificate
    
    ### Security Domain
    pki_security_domain_hostname=rhcs10.example.com
    pki_security_domain_name=Example-rhcs10-RSA-RootCA
    pki_security_domain_password=SECret.123
    
    
    [Tomcat]
    pki_ajp_port=8009
    pki_tomcat_server_port=8005
    
    
    [CA]
    pki_import_admin_cert=False
    pki_admin_nickname=PKI Bootstrap Administrator for RSA-RootCA
    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-RootCA
    pki_ds_database=CC-RSA-RootCA-LDAP
    pki_share_db=False
    
    ### Enable random serial numbers
    pki_random_serial_numbers_enable=True
    Copy to Clipboard Toggle word wrap
    注意

    除非明确指定,否则系统证书别名将自动命名为 pki_instance_name 的值。为了避免共享 HSM 上的证书别名冲突,请为每个实例创建使用不同的实例名称。但是,在两步安装中,两个文件的 pki_instance_name 值应该匹配。以下值只是示例。

  2. 运行 pkispawn 工具来安装 RHCS CA 实例:

    # pkispawn -s CA -f rootca_inst.cfg --skip-configuration --debug
    Copy to Clipboard Toggle word wrap

步骤配置

步骤自定义之间的 所述,您可以自定义某些内容,如系统证书的证书配置文件。

  • 为 CA 签名证书设置 Subject Key Identifier 扩展消息摘要算法:

    1. 打开此 CA 的签名证书的注册配置集:

      # vi /var/lib/pki/rhcs10-RSA-RootCA/ca/conf/caCert.profile
      Copy to Clipboard Toggle word wrap
    2. 添加以下参数:

      7.default.params.messageDigest=SHA-256
      Copy to Clipboard Toggle word wrap
    3. 保存该文件。

    同样,对于此 CA 将在以后发布的 CA 签名证书执行相同的操作:

    1. 为 CA 签名证书打开注册配置集:

      # vi /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caInstallCACert.cfg
      Copy to Clipboard Toggle word wrap
      # vi /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caCMCcaCert.cfg
      Copy to Clipboard Toggle word wrap
    2. 添加以下参数:

      policyset.caCertSet.8.default.params.messageDigest=SHA-256
      Copy to Clipboard Toggle word wrap
    3. 保存该文件。
  • 此处也可以进行其他在步骤间的配置更改。例如,如果要扩展此子系统审计签名证书的有效性周期:

    1. 打开对应的配置文件:

      # vi /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caInternalAuthAuditSigningCert.cfg
      Copy to Clipboard Toggle word wrap
    2. 将以下范围参数改为所需的值:

      policyset.auditSigningCertSet.2.constraint.params.range=720
      policyset.auditSigningCertSet.2.default.params.range=720
      Copy to Clipboard Toggle word wrap
    3. 保存该文件。在下一部分中完成 pkispawn 的第二步骤后,您应该预期此子系统的审计签名证书的有效性,以匹配您更改的值。

RootCA 安装的第二步

pkispawn 的第二步涉及以不同方式针对同一文件运行工具,从而配置 RHCS CA 实例。

  • 运行 pkispawn 工具来配置 CA:

    # pkispawn -s CA -f rootca_inst.cfg --skip-installation --debug
    Copy to Clipboard Toggle word wrap

验证步骤

  1. 显示已安装 CA 的状态:

    # pki-server status rhcs10-RSA-RootCA
    Copy to Clipboard Toggle word wrap

    请注意 Unsecure EE、Secure EE、Agent、Admin 和 pkiconsole URL。

  2. 运行以下命令,验证 CA 的健全性。它应该显示证书:

    # pki -p 8443 -h rhcs10.example.com ca-cert-find
    Copy to Clipboard Toggle word wrap
注意

当第一次使用 pki 命令连接到 RootCA 时,将显示 CA 签名证书的不受信任的签发者警告,如下所示:

WARNING: UNTRUSTED ISSUER encountered on 'CN=rhcs10.example.com,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA' indicates a non-trusted CA cert 'CN=CA Signing Certificate,OU=rhcs10-RSA-RootCA,O=Example-rhcs10-RSA-RootCA'
Trust this certificate (y/N)?
Copy to Clipboard Toggle word wrap

如果主题 DN 与主机名匹配,请选择 y 以信任 CA 签名证书。警告不会再次显示。

7.3.3. 禁用非CMC 和非安装配置集

该配置文件存储在 /var/lib/pki_rsa/rhcs10-RSA-RootCA/ca/profiles/ca/ 中。CMC 配置文件在其配置集 ID 中包含 "CMC"。本节提供了禁用非CMC 和非安装配置集的步骤。

流程

  1. 生成要编辑的非CMC 配置集列表:

    # ls /var/lib/pki/rhcs10-RSA-RootCA/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/ca-profile-deletelist.txt
    Copy to Clipboard Toggle word wrap
  2. 停止 RootCA 实例:

    pki-server stop rhcs10-RSA-RootCA
    Copy to Clipboard Toggle word wrap
  3. 对于列表中的每个配置集,将 visibleenable 参数从 true 改为 false。例如,使用以下命令设置 visible=falseenable=false

    # cat /root/pki_rsa/ca-profile-deletelist.txt | while read line; do sed -i 's/^visible=true/visible=false/g' /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/$line; sed -i 's/^enable=true/enable=false/g' /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/$line; done
    Copy to Clipboard Toggle word wrap
  4. 另外,还要将 caCMCUserCert 配置集的 visible 参数改为 false

    # sed -i 's/^visible=true/visible=false/' /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caCMCUserCert.cfg
    Copy to Clipboard Toggle word wrap
  5. 启动 RootCA 实例:

    pki-server start rhcs10-RSA-RootCA
    Copy to Clipboard Toggle word wrap

7.3.4. 创建 CA 链文件

在后续步骤中,您将需要 CA 证书和 CA 链。务必要使证书链文件保持最新状态。我们会将 CA 链文件 ca-chain.pem 以及单独的 CA .pem 文件放在 rhcs10.example.com (托管 CS 实例的机器)和 rhds11.example.com (托管 DS 实例的机器)下。

  1. 创建 CA 链文件供以后使用:

    # certutil -L -d /var/lib/pki/rhcs10-RSA-RootCA/alias -n "CA Signing Cert - rhcs10-RSA-RootCA" -a > /opt/pki_rsa/rootCA.pem
    Copy to Clipboard Toggle word wrap
    # cp /opt/pki_rsa/rootCA.pem /opt/pki_rsa/ca-chain.pem
    Copy to Clipboard Toggle word wrap
  2. 将文件复制到 rhds11.example.com (托管 DS 实例的机器):

    # scp /opt/pki_rsa/rootCA.pem root@rhds11.example.com:/opt/pki_rsa
    Copy to Clipboard Toggle word wrap
    # scp /opt/pki_rsa/ca-chain.pem root@rhds11.example.com:/opt/pki_rsa
    Copy to Clipboard Toggle word wrap
  3. rhds11.example.com 上,编辑 /etc/openldap/ldap.conf 文件,使 TLS_CACERT 指向我们刚才创建的 CA 链文件:

    # echo "TLS_CACERT /opt/pki_rsa/ca-chain.pem" >> /etc/openldap/ldap.conf
    Copy to Clipboard Toggle word wrap
  4. 重启 RootCA 的 DS 实例:

    # dsctl slapd-CC-RSA-RootCA-LDAP restart
    Copy to Clipboard Toggle word wrap

7.3.5. 准备 RootCA 以签署其他 CMC 证书请求

本节中的流程旨在创建一个包含 RootCA 的 bootstrap admin 证书/密钥的 nssdb,以便 pki 管理员在后续步骤中为角色用户证书签署 CMC 完整请求。

注意

在以前的版本中,在 pkispawn 配置文件中,我们指定了以下参数:

pki_client_dir=/opt/pki_rsa/rhcs10-RSA-RootCA
pki_client_admin_cert_p12=/opt/pki_rsa/rhcs10-RSA-RootCA/ca_admin_cert.p12
pki_client_database_dir=/opt/pki_rsa/rhcs10-RSA-RootCA/certs_db
Copy to Clipboard Toggle word wrap

这些参数告诉 pkispawn 在哪里放置 bootstrap 管理证书和密钥,因此您不需要按照本节中的步骤进行操作。但是,由于我们希望向读者展示一个工作示例,为了便于执行和描述,因此我们设计了 /root/.dogtag/pki_rsa_bootstrap/certs_db 作为 nssdb 的位置,该示例中包含所有 bootstrap admin 用户证书和密钥。

前提条件

  • 以 root 用户身份登录 rhcs10.example.com

流程

  1. 创建客户端 nssdb:

    # pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-init
    Copy to Clipboard Toggle word wrap
    注意

    指定 at -d 的目录应尚不存在。如果存在,另一个 RHCS 实例可能会使用它。在这种情况下,建议将其移出,或者指定不同的路径。您可以使用以下内容检查是否有证书:

    # certutil -L -d /root/.dogtag/pki_rsa_bootstrap/certs_db
    Copy to Clipboard Toggle word wrap

    如果不存在,您可以选择 Yes 来覆盖。

  2. 将 CA 签名证书导入到 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
    Copy to Clipboard Toggle word wrap
  3. 将 RootCA bootstrap admin 证书/密钥导入到 nssdb 中:

    # pki -d /root/.dogtag/pki_rsa_bootstrap/certs_db -c SECret.123 client-cert-import --pkcs12 /opt/pki_rsa/rhcs10-RSA-RootCA/ca_admin_cert.p12 --pkcs12-password SECret.123
    
    ----------------------------------------
    Imported certificates from PKCS #12 file
    ----------------------------------------
    Copy to Clipboard Toggle word wrap

验证:

  1. 列出证书:

    # certutil -d /root/.dogtag/pki_rsa_bootstrap/certs_db -L
    
    Certificate Nickname                            Trust Attributes
                                                    SSL,S/MIME,JAR/XPI
    
    PKI Bootstrap Administrator for RSA-RootCA      u,u,u
    CA Signing Cert - rhcs10-RSA-RootCA             CT,C,C
    Copy to Clipboard Toggle word wrap
  2. 以 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
    Copy to Clipboard Toggle word wrap
    -----------------
    3 entries matched
    -----------------
      User ID:  CA-rhcs10.example.com-8443
      Full name:  CA-rhcs10.example.com-8443
    
      User ID: caadmin
      Full name: caadmin
    
      User ID: pkidbuser
      Full name: pkidbuser
    ----------------------------
    Number of entries returned 3
    Copy to Clipboard Toggle word wrap

7.3.6. 检查随机序列号

  • 列出证书,以确保所有子系统证书都有随机序列号。

    # pki -p 8443 ca-cert-find | grep -i serial
    Copy to Clipboard Toggle word wrap

7.3.7. 验证 RootCA 签名证书没有 AIA

务必要注意,因为这是一个自签名(root) CA 签名证书,因此不应包含 AIA (授权信息访问)扩展。

  • 验证 RootCA 签名证书是否已正确发布:

    # certutil -L -d /var/lib/pki/rhcs10-RSA-RootCA/alias/ -n "CA Signing Cert - rhcs10-RSA-RootCA"
    Copy to Clipboard Toggle word wrap

    您应该观察没有 AIA 扩展。

注意

要允许 RootCA 角色用户证书包含指向 OCSP 实例的 AIA 扩展(在以下部分中创建),相关部分放置在 第 7.5 节 “创建并配置 RootCA (第二部分)” 中,AFTER OCSP 实例创建。

7.3.8. 配置对 CRL 分发点的支持

注意

有关 CRL 分发点的更多信息,为什么需要它们,以及它们最适合的位置,请参阅 第 9.4.1.2 节 “在 CA 上启用自动撤销检查”

要配置对 CRL 分发点的支持,我们描述了如何设置基于文件的 CRL 发布程序以及 CRL 的分区。您还将了解如何启用证书注册配置文件,以使用 CRL 分发点扩展发布证书。最后,我们描述了如何将 CA 的 LDAP 服务器的临时服务器认证替换为从 CRL 分发点配置文件发布的证书。

在继续以下更改前,停止 RootCA 实例:

# pki-server stop rhcs10-RSA-RootCA
Copy to Clipboard Toggle word wrap
注意

在继续操作前,在编辑前保存配置文件副本:

# cp /var/lib/pki/rhcs10-RSA-RootCA/ca/conf/CS.cfg  /var/lib/pki/rhcs10-RSA-RootCA/ca/conf/CS.cfg.bak.<date>
Copy to Clipboard Toggle word wrap

本节中的配置创建基于文件的 CRL 发布程序,名为 crlFilePublisher。正确设置后,CRL 以 DER 格式保存在 /var/lib/pki/rhcs10-RSA-RootCA/crl 目录中。

  1. 创建 CRL 目录以发布基于文件的分区 CRL:

    # mkdir /var/lib/pki/rhcs10-RSA-RootCA/crl
    # chown pkiuser.pkiuser /var/lib/pki/rhcs10-RSA-RootCA/crl
    Copy to Clipboard Toggle word wrap
  2. 在 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-RootCA/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
    Copy to Clipboard Toggle word wrap
7.3.8.1.2. 设置基于文件的发布规则:FileCrlRule

本节中的配置创建名为 FileCrlRule 的基于文件的发布规则。predicate 指定到名为 ServerCertCRL 的分区 CRL 的发布点(在 第 7.3.8.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
    Copy to Clipboard Toggle word wrap
7.3.8.1.3. 修改基于 LDAP 的发布规则:LdapCrlRule

此配置明确将 LdapCrlRule predicate 设置为 master (full) CRL。master CRL 持续提供给 OCSP 响应程序,以进行正确的 OCSP 支持。

  • 修改 CA 的 CS.cfg 中的以下内容:

    ca.publish.rule.instance.LdapCrlRule.predicate=issuingPointId==MasterCRL
    Copy to Clipboard Toggle word wrap

本节中的配置演示了如何将 CRL 分区到上面定义的 FileCrlRule 中使用的一个较小的子集。CRL 由在 profileList 参数中指定的证书注册配置文件进行分区。以逗号分隔的列表可用于多个配置集(例如,caCMCserverCertWithCRLDP.cfgcaCMCECserverCertWithCRLDP.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
    Copy to Clipboard Toggle word wrap
注意

对于 ECC CA,将以下内容设置为 SHA512withEC

ca.crl.ServerCertCRL.signingAlgorithm=SHA512withEC
Copy to Clipboard Toggle word wrap

7.3.8.2. 在 CA 中设置 CRL HTTP 服务

由 CRL 分发点提供的 CRL 发布到一个文件(请参阅上面的章节)。此文件由非 SSL Tomcat 服务提供,我们添加到 CA 的 server.xml 中,如下所示:

  1. 在文件 /var/lib/pki/rhcs10-RSA-RootCA/conf/server.xml 文件中的 Catalina 服务前 添加以下 CRL 服务:

    <Service name="CRL">
      <Connector port="8085" 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>
    Copy to Clipboard Toggle word wrap
  2. 在以上 CRL 服务中,选择一个尚未使用的连接器端口号。例如,如果 root CA 的 HTTP 端口为 8080,则选择 8085。确保为 SELinux 和防火墙添加了端口,例如:

    # semanage port -a -t http_port_t -p tcp 8085
    # firewall-cmd --permanent --add-port=8085/tcp
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
    注意

    如果您的所选端口已预先使用另一个 SELinux 上下文分配,您会看到类似如下的错误消息:

    ValueError: Port tcp/8085 already defined
    Copy to Clipboard Toggle word wrap

    您还可以使用以下命令搜索并找出 CRL HTTP 端口是否已预先分配:

    # semanage port -l | grep <port>
    Copy to Clipboard Toggle word wrap

    我们建议您选择另一个端口。但是,如果要使用相同的端口,您可以执行以下操作:

    # semanage port -m -t http_port_t -p tcp 8085
    Copy to Clipboard Toggle word wrap
  3. 服务器重启时,如果不存在,则会在 CA 的 conf 目录下创建目录 CRL/localhost。但是,要准备添加 crl.xml 文件,请执行以下操作:

    # mkdir -p  /var/lib/pki/rhcs10-RSA-RootCA/conf/CRL/localhost
    # chown -R pkiuser:pkiuser /var/lib/pki/rhcs10-RSA-RootCA/conf/CRL/localhost
    Copy to Clipboard Toggle word wrap
  4. /var/lib/pki/rhcs10-RSA-RootCA/conf/CRL/localhost 下创建一个 crl.xml 文件,并添加以下内容:

    <Context docBase="/var/lib/pki/rhcs10-RSA-RootCA/crl">
     <Resources allowLinking="true" cachingAllowed="false" />
    </Context>
    Copy to Clipboard Toggle word wrap
  5. crl.xml 文件设置 user:group 所有权:

    chown pkiuser:pkiuser  /var/lib/pki/rhcs10-RSA-RootCA/conf/CRL/localhost/crl.xml
    Copy to Clipboard Toggle word wrap
注意

注册配置集中设置的 CRL 分发点如下所示(请参阅下一部分): http://rhcs10.example.com:8085/crl/ServerCertCRL.crl

重要

仅为较小的 CRL 发布或撤销证书,才建议基于文件的 CRL。只有在需要时才建议使用它,比如在本节中描述的 CA 启动设置的情况。

7.3.8.3. 使用 CRL 分发点的注册配置集配置

启用所需的配置集,使其包含 CRL 分发点。这些配置集与上述部分中配置对应的配置集。

  1. /var/lib/pki/<ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/ 目录中打开 ca CMCserverCertWithCRLDP.cfg 配置集(用于注册 RSA 密钥),如下所示:

    # vi /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg
    …
    enable=true
    …
    policyset.serverCertSet.10.default.params.crlDistPointsPointName_0=http://rhcs10.example.com:8085/crl/ServerCertCRL.crl
    …
    Copy to Clipboard Toggle word wrap
  2. 打开 /var/lib/pki/<ca 实例目录/ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/profiles/ca/ 目录中的 ca CMCECserverCertWithCRLDP.cfg (用于注册 ECC 密钥),如下所示:

    # vi /var/lib/pki/rhcs10-ECC-RootCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg
    …
    enable=true
    …
    policyset.serverCertSet.10.default.params.crlDistPointsPointName_0=http://rhcs10.example.com:20085/crl/ServerCertCRL.crl
    …
    Copy to Clipboard Toggle word wrap
  3. 设置 user:group 所有权:

    # chown -R pkiuser:pkiuser  /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg
    # chown -R pkiuser:pkiuser  /var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg
    Copy to Clipboard Toggle word wrap
  4. 在 CA 的 CS.cfg 中注册一个新的配置集:

    1. 为每个配置集添加以下行:

      profile.caCMCserverCertWithCRLDP.class_id=caEnrollImpl
      profile.caCMCserverCertWithCRLDP.config=/var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caCMCserverCertWithCRLDP.cfg
      
      profile.caCMCECserverCertWithCRLDP.class_id=caEnrollImpl
      profile.caCMCECserverCertWithCRLDP.config=/var/lib/pki/rhcs10-RSA-RootCA/ca/profiles/ca/caCMCECserverCertWithCRLDP.cfg
      Copy to Clipboard Toggle word wrap
    2. 编辑 profile.list 条目,以添加两个新配置文件。例如:

      profile.list=caCMCserverCertWithCRLDP,caCMCECserverCertWithCRLDP,acmeServerCert,caCMCserverCert,caCMCECserverCert, …
      Copy to Clipboard Toggle word wrap

7.3.8.4. 设置以更直接的 CRL 更新

由于服务器证书通常不会撤销,因此最好在撤销时立即更新 CRL。编辑 CA 的 CS.cfg

ca.crl.ServerCertCRL.alwaysUpdate=true
Copy to Clipboard Toggle word wrap

7.3.8.5. 更新 CA 配置后启动 CA

配置完成后,启动 CA:

# pki-server start rhcs10-RSA-RootCA
Copy to Clipboard Toggle word wrap
注意

当 CA 的目录服务器 Server-Cert 被正确替换后,将指示验证 第 7.5.1 节 “替换临时 DS 证书(RootCA)” 末尾的 CRL 分发点设置。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat