14.2. CS.cfg Files


证书系统子系统的运行时属性由一组配置参数进行管理。这些参数存储在服务器在启动期间读取的文件 CS.cfg
在首次安装子系统时,创建 CS.cfg 是一个 ASCII 文件,并使用适当的配置参数填充。修改实例功能的方式是通过子系统控制台进行更改的,这是推荐的方法。管理控制台中所做的更改反映在 配置文件中。
也可以直接编辑 CS.cfg 配置文件,在某些情况下,这是管理子系统的最简单方法。

14.2.1. 查找 CS.cfg 文件

证书系统子系统的每个实例都有自己的配置文件 CS.cfg。每个子系统实例的文件内容根据子系统配置的方式、其他设置和配置(如添加新配置文件或启用自测试)以及子系统类型的不同而有所不同。
CS.cfg 文件位于实例的配置目录中。
/var/lib/pki/instance_name/subsystem_type/conf
例如:
/var/lib/pki/instance_name/ca/conf

14.2.2. 编辑配置文件

WARNING
不要在不熟悉配置参数的情况下直接编辑配置文件,或者确保更改对服务器可以接受。如果配置文件被错误修改,证书系统将无法启动。不正确的配置也可以导致数据丢失。
修改 CS.cfg 文件:
  1. 停止子系统实例。
    # pki-server stop instance_name
    或(如果使用 nuxwdog watchdog
    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
    当实例启动时,配置文件存储在缓存中。通过控制台对实例所做的任何更改都会在文件的缓存版本中改变。当服务器停止或重启时,缓存中存储的配置文件将写入磁盘。在编辑配置文件或更改更改之前,服务器停止服务器将会被缓存的版本覆盖。
  2. 打开 /var/lib/pki/instance_name/subsystem_type/conf 目录。
  3. 在文本编辑器中打开 CS.cfg 文件。
  4. 编辑文件中的参数,并保存更改。
  5. 启动子系统实例。
    # pki-server start instance_name
    或(如果使用 nuxwdog watchdog
    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

14.2.3. CS.cfg 配置文件概述

每个子系统实例都有自己的主配置文件 CS.cfg,其中包含实例的所有设置,如插件和用于配置的 Java 类。参数和特定设置根据子系统类型的不同,但通常情况下,CS.cfg 文件定义了子系统实例的这些部分:
  • 基本子系统实例信息,如其名称、端口分配、实例目录和主机名
  • 日志记录
  • 插件和方法,对实例的用户目录(授权)进行身份验证
  • 实例所属的安全域
  • 子系统证书
  • 子系统实例使用的其他子系统
  • 子系统使用的数据库类型和实例
  • PKI 相关任务的设置,如 TKS 中的密钥配置文件、CA 中的证书配置文件以及 KRA 中密钥恢复所需的代理
许多配置参数(来自 PKI 任务除外)在 CA、OCSP、KRA 和 TKS 之间非常相似,因为它们都使用基于 Java 的控制台,因此可以在控制台中管理的配置设置具有类似的参数。
CS.cfg 文件是一个基本的 parameter=value 格式。
#comment
parameter=value
CS.cfg 文件中,许多参数块都有描述性注释,使用 pound (#)字符进行注释。服务器会忽略注释、空行、未知参数或拼写错误的参数。
注意
TPS 中的一个错误可防止它忽略在 CS.cfg 文件中注释掉的行。无需在 TPS CS.cfg 文件中注释掉行,只需删除这些行即可。
配置实例相同区域的参数往往分组到同一块中。
某些功能区域通过插件(如自我测试、作业和授权)来实现,以访问子系统。对于这些参数,插件实例具有唯一标识符(因为对于子系统调用的相同插件的多个实例)、实施插件名称和 Java 类。

例 14.1. 子系统授权设置

authz.impl._000=##
authz.impl._001=## authorization manager implementations
authz.impl._002=##
authz.impl.BasicAclAuthz.class=com.netscape.cms.authorization.BasicAclAuthz
authz.instance.BasicAclAuthz.pluginName=BasicAclAuthz
注意
配置参数的值必须正确格式化,因此它们必须遵循两个规则:
  • 需要本地化的值必须在 UTF8 字符中。
  • CS.cfg 文件支持参数值中的正斜杠(/)。如果在值中需要反斜杠(\),则必须用反斜杠转义,即必须使用一行中的两个反斜杠。
以下部分是 CS.cfg 文件设置和参数的快照。这些不是 CS.cfg 文件参数的详细参考或示例。此外,每个子系统配置文件中可用的参数也非常不同,尽管有相似性。

14.2.3.1. 基本子系统设置

基本设置特定于实例本身,而不与子系统的功能或行为直接相关。这包括实例名称、根目录、进程的用户 ID 和端口号的设置。首次安装或配置实例时分配的许多设置都以 pkispawn 开头。

例 14.2. CA 的基本实例参数: pkispawn 文件 ca.cfg

[DEFAULT]
pki_admin_password=Secret.123
pki_client_pkcs12_password=Secret.123
pki_ds_password=Secret.123
# Optionally keep client databases
pki_client_database_purge=False
# Separated CA instance name and ports
pki_instance_name=pki-ca
 pki_http_port=18080
pki_https_port=18443
# This Separated CA instance will be its own security domain
pki_security_domain_https_port=18443

[Tomcat]
# Separated CA Tomcat ports
pki_ajp_port=18009
pki_tomcat_server_port=18005
重要
虽然类似端口设置的信息 包含在 CS.cfg 文件中,但它没有在 CS.cfg 中设置。服务器配置在 server.xml 文件中设置。
CS.cfgserver.xml 中的端口 必须与 正常工作的 RHCS 实例匹配。

14.2.3.2. 日志记录设置

根据子系统类型,可以配置几种不同类型的日志。每种日志在 CS.cfg 文件中都有自己的配置条目。
有关日志记录设置的更多信息,请参阅 第 18.1 节 “证书系统日志设置”

14.2.3.3. 认证和授权设置

CS.cfg 文件设置如何识别用户访问子系统实例(身份验证)以及每个经过身份验证的用户批准(授权)的操作。
CS 子系统使用身份验证插件来定义登录子系统的方法。
以下示例显示了一个名为 SharedToken 的身份验证实例,它实例化名为 SharedSecret 的 JAVA 插件。
auths.impl.SharedToken.class=com.netscape.cms.authentication.SharedSecret
auths.instance.SharedToken.pluginName=SharedToken
auths.instance.SharedToken.dnpattern=
auths.instance.SharedToken.ldap.basedn=ou=People,dc=example,dc=org
auths.instance.SharedToken.ldap.ldapauth.authtype=BasicAuth
auths.instance.SharedToken.ldap.ldapauth.bindDN=cn=Directory Manager
auths.instance.SharedToken.ldap.ldapauth.bindPWPrompt=Rule SharedToken
auths.instance.SharedToken.ldap.ldapauth.clientCertNickname=
auths.instance.SharedToken.ldap.ldapconn.host=server.example.com
auths.instance.SharedToken.ldap.ldapconn.port=636
auths.instance.SharedToken.ldap.ldapconn.secureConn=true
auths.instance.SharedToken.ldap.ldapconn.version=3
auths.instance.SharedToken.ldap.maxConns=
auths.instance.SharedToken.ldap.minConns=
auths.instance.SharedToken.ldapByteAttributes=
auths.instance.SharedToken.ldapStringAttributes=
auths.instance.SharedToken.shrTokAttr=shrTok
对于某些授权设置,可以选择使用 LDAP 数据库存储用户条目的授权方法,在这种情况下,数据库设置与插件一起配置,如下所示。
authz.impl.DirAclAuthz.class=com.netscape.cms.authorization.DirAclAuthz
authz.instance.DirAclAuthz.ldap=internaldb
authz.instance.DirAclAuthz.pluginName=DirAclAuthz
authz.instance.DirAclAuthz.ldap._000=##
authz.instance.DirAclAuthz.ldap._001=## Internal Database
authz.instance.DirAclAuthz.ldap._002=##
authz.instance.DirAclAuthz.ldap.basedn=dc=server.example.com-pki-ca
authz.instance.DirAclAuthz.ldap.database=server.example.com-pki-ca
authz.instance.DirAclAuthz.ldap.maxConns=15
authz.instance.DirAclAuthz.ldap.minConns=3
authz.instance.DirAclAuthz.ldap.ldapauth.authtype=SslClientAuth
authz.instance.DirAclAuthz.ldap.ldapauth.bindDN=cn=Directory Manager
authz.instance.DirAclAuthz.ldap.ldapauth.bindPWPrompt=Internal LDAP Database
authz.instance.DirAclAuthz.ldap.ldapauth.clientCertNickname=
authz.instance.DirAclAuthz.ldap.ldapconn.host=localhost
authz.instance.DirAclAuthz.ldap.ldapconn.port=11636
authz.instance.DirAclAuthz.ldap.ldapconn.secureConn=true
authz.instance.DirAclAuthz.ldap.multipleSuffix.enable=false
有关安全配置 LDAP 和参数说明的更多信息,请参阅 第 7.10.3 节 “启用 TLS 客户端身份验证”。参数路径与显示的内容不同,但两个位置都允许使用相同的名称和值。
CA 还必须有批准用户请求的机制。与配置授权一样,这可以通过识别适当的身份验证插件并为它配置实例来实现:
auths.impl.AgentCertAuth.class=com.netscape.cms.authentication.AgentCertAuthentication
auths.instance.AgentCertAuth.agentGroup=Certificate Manager Agents
auths.instance.AgentCertAuth.pluginName=AgentCertAuth

14.2.3.4. 子系统证书设置

一些子系统在配置文件中,每个子系统证书都有条目。
ca.sslserver.cert=MIIDmDCCAoCgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBAMR4wHAYDVQQKExVSZWR...
ca.sslserver.certreq=MIICizCCAXMCAQAwRjEeMBwGA1UEChMVUmVkYnVkY29tcHV0ZXIgRG9tYWluMSQwIgYDV...
ca.sslserver.nickname=Server-Cert cert-pki-ca
ca.sslserver.tokenname=Internal Key Storage Token

14.2.3.5. 所需子系统的设置

至少,每个子系统依赖于一个 CA,这意味着必须在子系统的设置中配置 CA (以及任何其他必要的子系统)。与另一个子系统的任何连接都以 conn 开头,然后是子系统类型和编号。
conn.ca1.clientNickname=subsystemCert cert-pki-tps
conn.ca1.hostadminport=server.example.com:8443
conn.ca1.hostagentport=server.example.com:8443
conn.ca1.hostport=server.example.com:9443
conn.ca1.keepAlive=true
conn.ca1.retryConnect=3
conn.ca1.servlet.enrollment=/ca/ee/ca/profileSubmitSSLClient
conn.ca1.servlet.renewal=/ca/ee/ca/profileSubmitSSLClient
conn.ca1.servlet.revoke=/ca/subsystem/ca/doRevoke
conn.ca1.servlet.unrevoke=/ca/subsystem/ca/doUnrevoke
conn.ca1.timeout=100

14.2.3.6. 数据库设置

所有子系统都使用 LDAP 目录来存储其信息。此内部数据库在 internaldb 参数中配置,但使用许多其他配置设置在 tokendb 参数中配置 TPS 除外。
internaldb._000=##
internaldb._000=##
internaldb._001=## Internal Database
internaldb._002=##
internaldb.basedn=o=pki-tomcat-ca-SD
internaldb.database=pki-tomcat-ca
internaldb.maxConns=15
internaldb.minConns=3
internaldb.ldapauth.authtype=SslClientAuth
internaldb.ldapauth.clientCertNickname=HSM-A:subsystemCert pki-tomcat-ca
internaldb.ldapconn.host=example.com
internaldb.ldapconn.port=11636
internaldb.ldapconn.secureConn=true
internaldb.multipleSuffix.enable=false
有关安全配置 LDAP 和参数说明的详情,请参考 第 7.10.3 节 “启用 TLS 客户端身份验证”。除了作为 第 7.10.3 节 “启用 TLS 客户端身份验证” 的一部分外,不需要额外的配置。

14.2.3.7. 启用和配置发布队列

注册流程的一部分包括将发布的证书发布到任何目录或文件。这基本上会关闭初始证书请求。但是,向外部网络发布证书可能会显著减慢颁发进程 - 这会使请求保持打开。
为避免这种情况,管理员可以启用 发布队列。发布队列将发布操作(可能涉及外部 LDAP 目录)与使用单独的请求队列的请求和注册操作分隔开。请求队列会立即更新,以显示注册过程已完成,而发布队列则以网络流量的速度发送信息。
发布队列设置定义的、有限数量的线程,用于发布生成的证书,而不是为每个批准的证书打开新线程。
默认情况下,发布队列被禁用。它可以在 CA 控制台中启用,以及启用发布。
注意
在默认情况下,如果 控制台中 启用了 LDAP 发布,则自动启用发布队列。否则,可以手动启用队列。

图 14.1. 启用发布队列

启用发布队列
14.2.3.7.1. 通过编辑 CS.cfg 文件启用和配置发布队列
通过编辑 CS.cfg 文件启用发布队列,管理员可以设置其他选项以进行发布,如用于发布操作的线程数量和队列页大小。
  1. 停止 CA 服务器,以便您可以编辑配置文件。
    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. 打开 CA 的 CS.cfg 文件。
    # vim /var/lib/pki/instance_name/ca/conf/CS.cfg
  3. ca.publish.queue.enable 设置为 true。如果参数不存在,则使用 参数添加一行。
    ca.publish.queue.enable=true
  4. 设置其他相关的发布队列参数:
    • ca.publish.queue.maxNumberOfThreads 设置可为发布操作打开的最大线程数。默认值为 3。
    • ca.publish.queue.priorityLevel 设置发布操作的优先级。优先级值范围从 - 2 (最低优先级)到 2 (最高优先级)。零(0)是普通优先级,也是默认值。
    • ca.publish.queue.pageSize 设置可在发布队列页面中存储的最大请求数。默认值为 40。
    • ca.publish.queue.saveStatus 设置间隔,以保存其每个指定数量的发布操作的状态。这允许在 CA 重启或崩溃时恢复发布队列。默认值为 200,但任何非零数将在 CA 重启时恢复队列。将此参数设置为 0 可禁用队列恢复。
    ca.publish.queue.maxNumberOfThreads=1
    ca.publish.queue.priorityLevel=0
    ca.publish.queue.pageSize=100
    ca.publish.queue.saveStatus=200
    
    TIP
    ca.publish.queue.enable 设置为 false,将 ca.publish.queue.maxNumberOfThreads 设置为 0 可禁用发布队列,并将单独的线程用于发布的证书。
  5. 重启 CA 服务器。
    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

14.2.3.8. PKI 任务的设置

CS.cfg 文件用于为每个子系统配置 PKI 任务。每个子系统的参数都有所不同,没有任何重叠。
例如,KRA 具有恢复密钥所需的代理数量的设置。
kra.noOfRequiredRecoveryAgents=1
查看每个子系统的 CS.cfg 文件以熟悉其 PKI 任务设置;文件中的注释是学习不同参数的指导。
  • CA 配置文件列出所有证书配置集和策略设置,以及生成 CRL 的规则。
  • TPS 配置不同的令牌操作。
  • TKS 列出从不同密钥类型派生密钥的配置集。
  • OCSP 为不同的密钥集设置密钥信息。

14.2.3.9. 更改 CA-Isued 证书中的 DN 属性

在证书系统发布的证书中,DN 识别拥有证书的实体。在所有情况下,如果证书系统与目录服务器连接,则证书中的 DN 格式应与目录中的 DN 格式匹配。名称不完全匹配;证书映射允许证书中的主题 DN 与目录中的对象 DN 不同。
在证书系统中,DN 基于 X.509 标准中定义的组件或属性。表 14.8 “值类型允许的 Characters” 列出默认支持的属性。属性集合可扩展。
表 14.8. 值类型允许的 Characters
属性 值类型 对象标识符
cn DirectoryString 2.5.4.3
ou DirectoryString 2.5.4.11
o DirectoryString 2.5.4.10
c 可打印字符串,双字符 2.5.4.6
l DirectoryString 2.5.4.7
st DirectoryString 2.5.4.8
street DirectoryString 2.5.4.9
title DirectoryString 2.5.4.12
uid DirectoryString 0.9.2342.19200300.100.1.1
mail IA5String 1.2.840.113549.1.9.1
dc IA5String 0.9.2342.19200300.100.1.2.25
serialNumber PrintableString 2.5.4.5
unstructuredname IA5String 1.2.840.113549.1.9.2
unstructuredaddress PrintableString 1.2.840.113549.1.9.8
默认情况下,证书系统支持 表 14.8 “值类型允许的 Characters” 中标识的属性。此支持的属性列表可通过创建或添加新属性来扩展。添加额外的 X.500Name 属性或组件的语法如下:
X500Name.NEW_ATTRNAME.oid=n.n.n.n
X500Name.NEW_ATTRNAME.class=string_to_DER_value_converter_class
值转换器类将字符串转换为 ASN.1 值;此类必须实施 netscape.security.x509.AVAValueConverter 接口。string-to-value 转换类可以是以下之一:
  • Netscape.security.x509.PrintableConverter字符串转换为可打印字符串值。字符串必须只有可打印的字符。
  • Netscape.security.x509.IA5StringConverter 将字符串转换为 IA5String 值。字符串必须具有 IA5String 字符。
  • Netscape.security.x509.DirStrConverter 将字符串转换为 DirectoryString。根据 RFC 2253,字符串预期为 DirectoryString 格式。
  • Netscape.security.x509.GenericValueConverter 按以下顺序将字符串字符转换为最大字符集:
    • PrintableString
    • IA5String
    • BMPString
    • 通用字符串
属性条目类似如下:
X500Name.MY_ATTR.oid=1.2.3.4.5.6
X500Name.MY_ATTR.class=netscape.security.x509.DirStrConverter
14.2.3.9.1. 添加新或自定义属性
要在证书系统模式中添加新的或专有属性,请执行以下操作:
  1. 停止证书管理器。
    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. 打开 /var/lib/pki/cs_instance/conf/ 目录。
  3. 打开配置文件 CS.cfg
  4. 将新属性添加到配置文件中。
    例如,要添加三个专有属性,即 MYATTR1,它是 DirectoryString,MYATTR2 是一个 IA5String,而 MYATTR3可打印字符串,请在配置文件末尾添加以下行:
    X500Name.attr.MYATTR1.oid=1.2.3.4.5.6
    X500Name.attr.MYATTR1.class=netscape.security.x509.DirStrConverter
    X500Name.attr.MYATTR2.oid=11.22.33.44.55.66
    X500Name.attr.MYATTR2.class=netscape.security.x509.IA5StringConverter
    X500Name.attr.MYATTR3.oid=111.222.333.444.555.666
    X500Name.attr.MYATTR3.class=netscape.security.x509.PrintableConverter
  5. 保存更改并关闭该文件。
  6. 重启证书管理器。
    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
  7. 重新加载注册页面并验证更改;新属性应当以表单中显示。
  8. 要验证新属性是否生效,请使用手动注册表请求证书。
    输入新属性的值,以便它可以验证它们出现在证书主题名称中。例如,为新属性输入以下值,并在主题名称中查找它们:
    MYATTR1: a_value
    MYATTR2: a.Value
    MYATTR3: aValue
    cn: John Doe
    o: Example Corporation
  9. 打开代理服务页面,并批准请求。
  10. 发布证书后,检查主题名称。证书应该显示主题名称中的新属性值。
14.2.3.9.2. 更改 DER-Encoding 顺序
可以更改 DirectoryString 的 DER-encoding 顺序,以便配置字符串,因为不同的客户端支持不同的编码。
更改 DirectoryString 的 DER-encoding 顺序的语法如下:
X500Name.directoryStringEncodingOrder=encoding_list_separated_by_commas
可能的编码值如下:
  • PrintableString
  • IA5String
  • UniversalString
  • BMPString
  • UTF8String
例如,DER-encoding 排序可以列出,如下所示:
X500Name.directoryStringEncodingOrder=PrintableString,BMPString
要更改 DirectoryString 编码,请执行以下操作:
  1. 停止证书管理器。
    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. 打开 /var/lib/pki/cs_instance/conf/ 目录。
  3. 打开 CS.cfg 配置文件。
  4. 将编码顺序添加到配置文件。
    例如,要指定两个编码值: PrintableStringUniversalString,并且编码顺序是 PrintableString,然后是 UniversalString,请在配置文件末尾添加以下行:
    X500Name.directoryStringEncodingOrder=PrintableString,UniversalString
  5. 保存更改并关闭该文件。
  6. 启动 证书管理器。
    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
  7. 要验证编码订单是否生效,请使用手动注册表注册证书。对 cn 使用 John_Doe
  8. 打开代理服务页面,并批准请求。
  9. 发布证书后,使用 dumpasn1 工具检查证书的编码。
    主题名称的 cn 组件应编码为 UniversalString
  10. 使用 John Smithcn 创建并提交新请求。
    主题名称的 cn 组件应编码为 可打印字符串

14.2.3.10. 将 CA 设置为使用不同的证书来签名 CRL

证书管理器使用与其 OCSP 签名证书对应的密钥对来签名证书和证书撤销列表(CRL)。要使用不同的密钥对为 Certificate Manager 生成的 CRL 签名,可以创建 CRL 签名证书。证书管理器的 CRL 签名证书必须自行签名或发布。
要启用证书管理器使用不同的密钥对为 CRL 签名,请执行以下操作:
  1. 为证书管理器请求 CRL 签名证书。
    或者,使用能够生成密钥对的工具,如 certutil 工具生成密钥对,为密钥对请求证书,并在证书管理器的证书数据库中安装证书。有关 certutil 工具的详情请参考 http://www.mozilla.org/projects/security/pki/nss/tools/
  2. 创建证书请求后,通过证书管理器终端页面提交它,选择正确的配置文件,如"Manual OCSP Manager Signing Certificate Enrollment"配置文件。该页面具有以下格式的 URL:
    		https://hostname:port/ca/ee/ca
    
  3. 提交请求后,登录代理服务页面。
  4. 检查请求所需的扩展。CRL 签名证书必须包含设置 crlSigning 位的 Key Usage 扩展。
  5. 批准请求。
  6. 生成 CRL 签名证书后,通过控制台中的 System Keys 和 Certificates 在证书管理器的数据库中安装证书。
  7. 停止证书管理器。
    # pki-server stop instance_name
  8. 更新证书管理器的配置,以识别新密钥对和证书。
    1. 进入 Certificate Manager 实例配置目录。
      # cd /var/lib/pki/instance-name/ca/conf/
    2. 打开 CS.cfg 文件并添加以下行:
      ca.crl_signing.cacertnickname=nickname cert-instance_ID
      ca.crl_signing.defaultSigningAlgorithm=signing_algorithm
      ca.crl_signing.tokenname=token_name
      nickname 是分配给 CRL 签名证书的名称。
      instance_ id 是证书管理器实例的名称。
      如果安装的 CA 是基于 RSA 的 CA,则 signing_algorithm 可以是 SHA256withRSA,SHA384withRSA, 或 SHA512withRSA。如果安装的 CA 是基于 EC 的 CA,则 signing_algorithm 可以是 SHA256withECSHA384withEC,SHA512withEC.
      token_name 是用于生成密钥对和证书的令牌名称。如果使用内部/软件令牌,请使用 Internal Key Storage Token 作为值。
      例如,条目可能类似如下:
      ca.crl_signing.cacertnickname=crlSigningCert cert-pki-ca
      ca.crl_signing.defaultSigningAlgorithm=SHAMD512withRSA
      ca.crl_signing.tokenname=Internal Key Storage Token
      
    3. 保存更改并关闭该文件。
  9. 重启证书管理器。
    # pki-server restart instance_name
    现在,证书管理器可以使用 CRL 签名证书为它生成的 CRL 签名证书进行签名。

14.2.3.11. 从 CS.cfg 中的缓存配置 CRL Generation

CRL 缓存是一种简单的机制,它允许从内存中维护的撤销信息集合中获取证书撤销信息。为了获得最佳性能,建议启用此功能,它已代表默认行为。以下配置信息(默认)显示为信息目的,或者需要更改。
  1. 停止 CA 服务器。
    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. 打开 CA 配置目录。
    # cd /var/lib/instance_name/conf/
  3. 编辑 CS.cfg 文件,将 enableCRLCacheenableCacheRecovery 参数设置为 true :
    ca.crl.MasterCRL.enableCRLCache=true
    ca.crl.MasterCRL.enableCacheRecovery=true
    
  4. 启动 CA 服务器。
    # systemctl start pki-tomcatd-nuxwdog@instance_name.service

14.2.3.12. 在 CS.cfg 中为 CRL 配置 Update Intervals

下面介绍如何灵活地配置 CRL 系统,以反映所需的行为。目标是根据两种类型的一些调度配置 CRL 更新。一个类型允许列表显式时间,另一个类型由更新间隔长度组成。还有一个混合场景,两者都被启用以考虑偏移。下面的 Note 条目实际上代表开箱即用的情况。
默认场景如下:
ca.crl.MasterCRL.updateSchema=3
ca.crl.MasterCRL.enableDailyUpdates=true
ca.crl.MasterCRL.enableUpdateInterval=true
ca.crl.MasterCRL.autoUpdateInterval=240
ca.crl.MasterCRL.dailyUpdates=1:00
ca.crl.MasterCRL.nextUpdateGracePeriod=0
只有在需要更详细且需要特定的更新计划时,才会从此分离。部分的其余部分将讨论如何完成该操作。
CS.cfg 文件中为 full 和 delta CRL 配置设置涉及编辑参数。
表 14.9. CRL Extended Interval 参数
参数 描述 接受的值
updateSchema 设置每个完整 CRL 生成的 delta CRL 的比率 整数值
enableDailyUpdates 根据设置时间启用和禁用设置 CRL 更新 true 或 false
enableUpdateInterval 根据设置间隔启用和禁用设置 CRL 更新 true 或 false
dailyUpdates 设置 CRL 应该更新的时间 以逗号分隔的时间列表
autoUpdateInterval 设置更新 CRL 的时间间隔(以分钟为单位) 整数值
autoUpdateInterval.effectiveAtStart 允许系统尝试立即使用自动更新的新值,而不是等待当前调度的 nextUpdate 时间 true 或 false
nextUpdateGracePeriod 将时间(分钟)添加到 CRL 的有效性周期,以确保 CRL 在发布或复制期间保持有效 整数值
refreshInSec 在克隆 OCSP 中设置线程的定期性(以秒为单位)以检查 LDAP 是否更新 CRL 整数值
重要
autoUpdateInterval.effectiveAtStart 参数需要一个系统重启才能应用新值。此参数的默认值为 false,只能由确保其正在做什么的用户更改。

过程 14.1. 如何在 CS.cfg 中配置 CRL 更新间隔

  1. 停止 CA 服务器。
    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. 进入 CA 配置目录。
    # cd /var/lib/instance_name/conf/
  3. 编辑 CS.cfg 文件,并添加以下行来设置更新间隔:
    ca.crl.MasterCRL.updateSchema=3
    默认间隔为 1,这意味着每次生成 CRL 时都会生成完整的 CRL。updateSchema 间隔可以设置为任何整数。
  4. 通过指定一个循环间隔或设置更新发生时间来设置更新频率:
    • 通过启用 enableDailyUpdates 参数来指定设置时间,并将所需时间添加到 dailyUpdates 参数中:
      ca.crl.MasterCRL.enableDailyUpdates=true
      ca.crl.MasterCRL.enableUpdateInterval=false
      ca.crl.MasterCRL.dailyUpdates=0:50,04:55,06:55
      
      此字段设置在 CRL 应该更新时的每日时间。要多次指定,请输入以逗号分隔的时间列表,如 01:50,04:55,06:55。要输入多个天数的调度,请输入以逗号分隔的列表,以在同一天内设置时间,然后使用分号分隔列表来标识不同天数的时间。例如,将 01:50,04:55,06:55;02:00,05:00,17:00 设置为在周期的 1:50am、4:55am 和 6:55am 以及第 2 天(5am 和 5pm)中配置撤销。
      通过启用 enableUpdateInterval 参数来指定间隔,并将所需的间隔(以分钟为单位)添加到 autoUpdateInterval 参数:
      ca.crl.MasterCRL.enableDailyUpdates=false
      ca.crl.MasterCRL.enableUpdateInterval=true
      ca.crl.MasterCRL.autoUpdateInterval=240
      
  5. 根据您的环境设置以下参数:
    • 如果您运行没有 OCSP 子系统的 CA,请设置:
      ca.crl.MasterCRL.nextUpdateGracePeriod=0
    • 如果您使用 OCSP 子系统运行 CA,请设置:
      ca.crl.MasterCRL.nextUpdateGracePeriod=time_in_minutes
      ca.crl.MasterCRL.nextUpdateGracePeriod 参数定义时间(以分钟为单位),值必须足够大,以便 CA 将新的 CRL 传播到 OCSP。您必须将参数设置为非零值。
      如果您还在您的环境中有 OCSP 克隆,还要设置:
      ocsp.store.defStore.refreshInSec=time_in_seconds
      ocsp.store.defStore.refreshInSec 参数设置克隆 OCSP 实例通过来自 master OCSP 实例的 LDAP 复制更新更新的频率(以秒为单位)。
    有关参数的详情,请查看 表 14.9 “CRL Extended Interval 参数”
  6. 重启 CA 服务器。
    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
注意
当按间隔更新 CRL 时,可能会发生调度偏移。通常,偏移会因为手动更新和 CA 重启而发生。
要防止调度偏移,将 enableDailyUpdatesenableUpdateInterval 参数设置为 true,并将所需的值设置为 autoUpdateIntervaldailyUpdates
ca.crl.MasterCRL.enableDailyUpdates=true
ca.crl.MasterCRL.enableUpdateInterval=true
ca.crl.MasterCRL.autoUpdateInterval=240
ca.crl.MasterCRL.dailyUpdates=1:00
当按间隔更新 CRL 时,只会接受一个 dailyUpdates 值。
间隔更新将每 24 小时重新同步 dailyUpdates 值,防止调度偏移。

14.2.3.13. 更改子系统的访问控制设置

默认情况下,通过首先评估拒绝规则,然后通过评估 allow 规则来应用访问控制规则。要更改顺序,请在 CS.cfg 中更改 authz.evaluateOrder 参数。
authz.evaluateOrder=deny,allow
此外,还可以从本地 web.xml 文件(basic ACL)或更复杂的 ACL 评估访问控制规则,方法是检查 LDAP 数据库来访问。authz.sourceType 参数标识要使用的授权类型。
authz.sourceType=web.xml
注意
在编辑 CS.cfg 文件以加载更新的设置后,始终重启子系统。

14.2.3.14. 为请求和序列号配置范围

如果没有使用随机序列号,如果克隆的系统,管理员可以指定范围证书系统用于 /etc/pki/instance_name/子系统/CS.cfg 文件中的请求和序列号:
dbs.beginRequestNumber=1001001007001
			dbs.endRequestNumber=11001001007000
			dbs.requestIncrement=10000000000000
			dbs.requestLowWaterMark=2000000000000
			dbs.requestCloneTransferNumber=10000
			dbs.requestDN=ou=ca, ou=requests
			dbs.requestRangeDN=ou=requests, ou=ranges
			dbs.beginSerialNumber=1001001007001
			dbs.endSerialNumber=11001001007000
			dbs.serialIncrement=10000000000000
			dbs.serialLowWaterMark=2000000000000
			dbs.serialCloneTransferNumber=10000
			dbs.serialDN=ou=certificateRepository, ou=ca
			dbs.serialRangeDN=ou=certificateRepository, ou=ranges
			dbs.beginReplicaNumber=1
			dbs.endReplicaNumber=100
			dbs.replicaIncrement=100
			dbs.replicaLowWaterMark=20
			dbs.replicaCloneTransferNumber=5
			dbs.replicaDN=ou=replica
			dbs.replicaRangeDN=ou=replica, ou=ranges
			dbs.ldap=internaldb
			dbs.newSchemaEntryAdded=true
注意
证书系统支持范围的 BigInteger 值。

14.2.3.15. 为 pkiconsole 设置要求以使用 TLS 客户端证书验证

注意
pkiconsole 已被弃用。
编辑每个子系统的 CS.cfg 文件,搜索 authType 参数并将其设置为如下:
authType=sslclientauth
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.