14.2. CS.cfg Files
证书系统子系统的运行时属性由一组配置参数进行管理。这些参数存储在服务器在启动期间读取的文件
CS.cfg
。
在首次安装子系统时,创建
CS.cfg
是一个 ASCII 文件,并使用适当的配置参数填充。修改实例功能的方式是通过子系统控制台进行更改的,这是推荐的方法。管理控制台中所做的更改反映在 配置文件中。
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
文件:
- 停止子系统实例。
# pki-server stop instance_name
或(如果使用nuxwdog watchdog
)# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
当实例启动时,配置文件存储在缓存中。通过控制台对实例所做的任何更改都会在文件的缓存版本中改变。当服务器停止或重启时,缓存中存储的配置文件将写入磁盘。在编辑配置文件或更改更改之前,服务器停止服务器将会被缓存的版本覆盖。 - 打开
/var/lib/pki/instance_name/subsystem_type/conf
目录。 - 在文本编辑器中打开
CS.cfg
文件。 - 编辑文件中的参数,并保存更改。
- 启动子系统实例。
# 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 (#)字符进行注释。服务器会忽略注释、空行、未知参数或拼写错误的参数。
注意
配置实例相同区域的参数往往分组到同一块中。
某些功能区域通过插件(如自我测试、作业和授权)来实现,以访问子系统。对于这些参数,插件实例具有唯一标识符(因为对于子系统调用的相同插件的多个实例)、实施插件名称和 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.cfg
和 server.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
文件启用发布队列,管理员可以设置其他选项以进行发布,如用于发布操作的线程数量和队列页大小。
- 停止 CA 服务器,以便您可以编辑配置文件。
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
- 打开 CA 的
CS.cfg
文件。# vim /var/lib/pki/instance_name/ca/conf/CS.cfg
- 将
ca.publish.queue.enable
设置为 true。如果参数不存在,则使用 参数添加一行。ca.publish.queue.enable=true
- 设置其他相关的发布队列参数:
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 可禁用发布队列,并将单独的线程用于发布的证书。 - 重启 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” 列出默认支持的属性。属性集合可扩展。
属性 | 值类型 | 对象标识符 |
---|---|---|
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 |
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 |
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. 添加新或自定义属性
- 停止证书管理器。
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
- 打开
/var/lib/pki/cs_instance/conf/
目录。 - 打开配置文件
CS.cfg
。 - 将新属性添加到配置文件中。例如,要添加三个专有属性,即 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
- 保存更改并关闭该文件。
- 重启证书管理器。
# systemctl start pki-tomcatd-nuxwdog@instance_name.service
- 重新加载注册页面并验证更改;新属性应当以表单中显示。
- 要验证新属性是否生效,请使用手动注册表请求证书。输入新属性的值,以便它可以验证它们出现在证书主题名称中。例如,为新属性输入以下值,并在主题名称中查找它们:
MYATTR1: a_value MYATTR2: a.Value MYATTR3: aValue cn: John Doe o: Example Corporation
- 打开代理服务页面,并批准请求。
- 发布证书后,检查主题名称。证书应该显示主题名称中的新属性值。
14.2.3.9.2. 更改 DER-Encoding 顺序
更改 DirectoryString 的 DER-encoding 顺序的语法如下:
X500Name.directoryStringEncodingOrder=encoding_list_separated_by_commas
可能的编码值如下:
- PrintableString
- IA5String
- UniversalString
- BMPString
- UTF8String
例如,DER-encoding 排序可以列出,如下所示:
X500Name.directoryStringEncodingOrder=PrintableString,BMPString
要更改 DirectoryString 编码,请执行以下操作:
- 停止证书管理器。
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
- 打开
/var/lib/pki/cs_instance/conf/
目录。 - 打开
CS.cfg
配置文件。 - 将编码顺序添加到配置文件。例如,要指定两个编码值: PrintableString 和 UniversalString,并且编码顺序是 PrintableString,然后是 UniversalString,请在配置文件末尾添加以下行:
X500Name.directoryStringEncodingOrder=PrintableString,UniversalString
- 保存更改并关闭该文件。
- 启动 证书管理器。
# systemctl start pki-tomcatd-nuxwdog@instance_name.service
- 要验证编码订单是否生效,请使用手动注册表注册证书。对 cn 使用 John_Doe。
- 打开代理服务页面,并批准请求。
- 发布证书后,使用 dumpasn1 工具检查证书的编码。主题名称的 cn 组件应编码为 UniversalString。
- 使用 John Smith 为 cn 创建并提交新请求。主题名称的 cn 组件应编码为 可打印字符串。
14.2.3.10. 将 CA 设置为使用不同的证书来签名 CRL
证书管理器使用与其 OCSP 签名证书对应的密钥对来签名证书和证书撤销列表(CRL)。要使用不同的密钥对为 Certificate Manager 生成的 CRL 签名,可以创建 CRL 签名证书。证书管理器的 CRL 签名证书必须自行签名或发布。
要启用证书管理器使用不同的密钥对为 CRL 签名,请执行以下操作:
- 为证书管理器请求 CRL 签名证书。或者,使用能够生成密钥对的工具,如 certutil 工具生成密钥对,为密钥对请求证书,并在证书管理器的证书数据库中安装证书。有关 certutil 工具的详情请参考 http://www.mozilla.org/projects/security/pki/nss/tools/。
- 创建证书请求后,通过证书管理器终端页面提交它,选择正确的配置文件,如"Manual OCSP Manager Signing Certificate Enrollment"配置文件。该页面具有以下格式的 URL:
https://hostname:port/ca/ee/ca
- 提交请求后,登录代理服务页面。
- 检查请求所需的扩展。CRL 签名证书必须包含设置 crlSigning 位的 Key Usage 扩展。
- 批准请求。
- 生成 CRL 签名证书后,通过控制台中的 System Keys 和 Certificates 在证书管理器的数据库中安装证书。
- 停止证书管理器。
# pki-server stop instance_name
- 更新证书管理器的配置,以识别新密钥对和证书。
- 进入 Certificate Manager 实例配置目录。
# cd
/var/lib/pki/instance-name/ca/conf/
- 打开
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 可以是 SHA256withEC,SHA384withEC,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
- 保存更改并关闭该文件。
- 重启证书管理器。
# pki-server restart instance_name
现在,证书管理器可以使用 CRL 签名证书为它生成的 CRL 签名证书进行签名。
14.2.3.11. 从 CS.cfg 中的缓存配置 CRL Generation
CRL 缓存是一种简单的机制,它允许从内存中维护的撤销信息集合中获取证书撤销信息。为了获得最佳性能,建议启用此功能,它已代表默认行为。以下配置信息(默认)显示为信息目的,或者需要更改。
- 停止 CA 服务器。
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
- 打开 CA 配置目录。
# cd /var/lib/instance_name/conf/
- 编辑
CS.cfg
文件,将enableCRLCache
和enableCacheRecovery
参数设置为 true :ca.crl.MasterCRL.enableCRLCache=true ca.crl.MasterCRL.enableCacheRecovery=true
- 启动 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 配置设置涉及编辑参数。
参数 | 描述 | 接受的值 |
---|---|---|
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 更新间隔
- 停止 CA 服务器。
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
- 进入 CA 配置目录。
# cd /var/lib/instance_name/conf/
- 编辑
CS.cfg
文件,并添加以下行来设置更新间隔:ca.crl.MasterCRL.updateSchema=3
默认间隔为 1,这意味着每次生成 CRL 时都会生成完整的 CRL。updateSchema
间隔可以设置为任何整数。 - 通过指定一个循环间隔或设置更新发生时间来设置更新频率:
- 通过启用
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
- 根据您的环境设置以下参数:
- 如果您运行没有 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 参数”。 - 重启 CA 服务器。
# systemctl start pki-tomcatd-nuxwdog@instance_name.service
注意
当按间隔更新 CRL 时,可能会发生调度偏移。通常,偏移会因为手动更新和 CA 重启而发生。
要防止调度偏移,将
enableDailyUpdates
和 enableUpdateInterval
参数设置为 true,并将所需的值设置为 autoUpdateInterval
和 dailyUpdates
:
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