9.2. CS.cfg 文件
证书系统子系统的运行时属性由一组配置参数管理。这些参数存储在服务器启动期间读取的文件中,其 CS.cfg
.
在首次安装子系统时,创建 CS.cfg
(一个 ASCII 文件)并填充适当的配置参数。修改实例功能的方式是通过子系统控制台进行更改的方式,这是推荐的方法。管理控制台中所做的更改反映在配置文件中。
也可以直接编辑 CS.cfg
配置文件,在某些情况下,这是管理子系统的最简单方法。
9.2.1. 查找 CS.cfg 文件 复制链接链接已复制到粘贴板!
证书系统子系统的每个实例都有自己的配置文件 CS.cfg
。每个子系统实例的文件内容会根据子系统配置的方式不同,额外的设置和配置(如添加新配置集或启用自tests)以及子系统类型。
CS.cfg
文件位于实例的配置目录中。
/var/lib/pki/instance_name/subsystem_type/conf
/var/lib/pki/instance_name/subsystem_type/conf
例如:
/var/lib/pki/instance_name/ca/conf
/var/lib/pki/instance_name/ca/conf
9.2.2. 编辑配置文件 复制链接链接已复制到粘贴板!
在不熟悉配置参数,或者不确保服务器可以接受更改的情况下,不要直接编辑配置文件。如果配置文件被错误地修改,则证书系统无法启动。不正确的配置还可能导致数据丢失。因此,强烈建议您在进行任何更改前保存配置文件的备份。
修改 CS.cfg
文件:
停止子系统实例。
pki-server stop instance_name
# pki-server stop instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,如果使用 Nuxwdog watchdog:
systemctl stop pki-tomcatd-nuxwdog@instance_name.service
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 实例启动时,配置文件存储在缓存中。通过控制台对实例所做的任何更改都会在文件的缓存版本中更改。当服务器停止或重启时,存储在缓存中的配置文件将写入磁盘。在编辑配置文件前停止服务器,否则当服务器停止时,缓存的版本将覆盖更改。
-
打开
/var/lib/pki/instance_name/subsystem_type/conf
目录。 -
在文本编辑器中打开
CS.cfg
文件。 - 编辑文件中的参数并保存更改。
启动子系统实例。
pki-server start instance_name
# pki-server start instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,如果使用 Nuxwdog watchdog:
systemctl start pki-tomcatd-nuxwdog@instance_name.service
# systemctl start pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.3. CS.cfg 配置文件概述 复制链接链接已复制到粘贴板!
每个子系统实例都有自己的主配置文件 CS.cfg
,其中包含实例的所有设置,如插件和用于配置的 Java 类。参数和具体设置根据子系统类型的不同而有所不同,但通常而言,CS.cfg
文件定义了子系统实例的这些部分:
- 基本子系统实例信息,如名称、端口分配、实例目录和主机名
- 日志记录
- 对实例用户目录(authorization)进行身份验证的插件和方法
- 实例所属的安全域
- 子系统证书
- 子系统实例使用的其他子系统
- 子系统使用的数据库类型和实例
- 与 PKI 相关的任务设置,如 TKS 中的密钥配置文件、CA 中的证书配置文件,以及 KRA 中密钥恢复所需的代理
许多配置参数(与 PKI 任务不同)在 CA、OCSP、KRA 和 TKS 之间非常相似,因为它们都使用基于 Java 的控制台,因此在控制台中管理的配置设置都有类似的参数。
CS.cfg
文件基本参数 =值 格式。
#comment parameter=value
#comment
parameter=value
在 CS.cfg
文件中,许多参数块都有描述性注释,并用 pound (:)字符注释掉。服务器会忽略注释、空白行、未知参数或拼写错误的参数。
配置实例相同区域的参数往往被分组到同一块中。
例 9.1. CS.cfg 文件中的日志记录设置
某些功能区域通过插件来实施,如自助测试、作业和授权来访问子系统。对于这些参数,插件实例具有唯一标识符(因为存在多个为子系统调用的相同插件的实例)、实施插件名称和 Java 类。
例 9.2. 子系统授权设置
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
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
文件在参数值中支持正斜杠(/)。如果值中需要后斜杠(\),则必须使用 back 斜杠进行转义,这意味着必须使用行中的两个后端斜杠。
以下小节是 CS.cfg
文件设置和参数的快照。这些不是 CS.cfg
文件参数的详细参考或示例。此外,每个子系统配置文件中可用的参数也非常不同,尽管存在相似性。
9.2.3.1. 基本子系统设置 复制链接链接已复制到粘贴板!
基本设置特定于实例本身,而不直接与子系统的功能或行为相关。这包括实例名称、根目录、进程的用户 ID 和端口号的设置。首次安装和配置实例时分配的许多设置都以 pkispawn
开头。
例 9.3. CA 的基本实例参数:pkispawn 文件 ca.cfg
虽然与端口设置等信息 包含在 CS.cfg
文件中,但它不会在 CS.cfg
中设置。服务器配置在 server.xml
文件中设置。
CS.cfg
和 server.xml
中的端口 必须与 正常工作的 RHCS 实例匹配。
9.2.3.2. 日志记录设置 复制链接链接已复制到粘贴板!
根据子系统的类型,可以配置几种不同类型的日志。每种日志在 CS.cfg
文件中都有自己的配置条目。
例如,CA 具有此条目用于签名的审计日志,允许日志轮转、缓冲的日志记录、日志签名和日志级别,以及其他设置:
有关这些参数及其值的更多信息,请参阅 第 13.1 节 “日志设置”。只要启用了审计日志记录,这些值不会影响合规性。
9.2.3.3. 身份验证和授权设置 复制链接链接已复制到粘贴板!
CS.cfg
文件设置如何识别用户访问子系统实例(身份验证)以及每个经过身份验证的用户批准哪些操作(authorization)。
CS 子系统使用身份验证插件来定义登录子系统的方法。
以下示例显示了名为 SharedToken
的身份验证实例,它实例化一个名为 SharedSecret
的 JAVA 插件。
对于某些授权设置,可以选择使用 LDAP 数据库存储用户条目的授权方法,在这种情况下,数据库设置与插件一同配置,如下所示。
有关安全配置 LDAP 和参数说明的更多信息,请参阅 第 7.13.13 节 “启用从 CS 到 DS 的 TLS 相互身份验证”。参数路径与显示的内容不同,但在两个位置都允许相同的名称和值。
CA 还必须具有批准用户请求的机制。与配置授权一样,这通过识别适当的身份验证插件并为它配置实例来完成:
auths.impl.AgentCertAuth.class=com.netscape.cms.authentication.AgentCertAuthentication auths.instance.AgentCertAuth.agentGroup=Certificate Manager Agents auths.instance.AgentCertAuth.pluginName=AgentCertAuth
auths.impl.AgentCertAuth.class=com.netscape.cms.authentication.AgentCertAuthentication
auths.instance.AgentCertAuth.agentGroup=Certificate Manager Agents
auths.instance.AgentCertAuth.pluginName=AgentCertAuth
9.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
ca.sslserver.cert=MIIDmDCCAoCgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBAMR4wHAYDVQQKExVSZWR...
ca.sslserver.certreq=MIICizCCAXMCAQAwRjEeMBwGA1UEChMVUmVkYnVkY29tcHV0ZXIgRG9tYWluMSQwIgYDV...
ca.sslserver.nickname=Server-Cert cert-pki-ca
ca.sslserver.tokenname=Internal Key Storage Token
9.2.3.5. 所需的子系统的设置 复制链接链接已复制到粘贴板!
至少,每个子系统依赖于 CA,这意味着必须在子系统设置中配置 CA (以及任何其他必要的子系统)。与另一个子系统的任何连接都以 conn
开头,然后是子系统类型和编号。以下是 TPS 实例的 CS.cfg
中的"conn"部分示例:
9.2.3.6. 数据库设置 复制链接链接已复制到粘贴板!
所有子系统都使用 LDAP 目录来存储其信息。此内部数据库在 internaldb
参数中配置。以下是 CA CS.cfg
中的 internaldb 部分的示例:
除了 internaldb
参数外,TPS 引入了 tokendb
参数,使其包含与智能卡令牌相关的更多配置设置。有关安全配置 LDAP 和参数说明的详情,请参考 第 7.13.13 节 “启用从 CS 到 DS 的 TLS 相互身份验证”。在作为 第 7.13.13 节 “启用从 CS 到 DS 的 TLS 相互身份验证” 一部分完成的之外,不需要额外的配置。
9.2.3.7. 启用和配置发布队列 复制链接链接已复制到粘贴板!
注册过程的一部分包括将发布的证书发布到任何目录或文件。这基本上会关闭初始证书请求。但是,向外部网络发布证书可能会显著减慢颁发过程的速度 - 这导致请求开放。
为避免这种情况,管理员可以启用 发布队列。发布队列将发布操作(可能涉及外部 LDAP 目录)与请求和注册操作(使用单独的请求队列)分开。请求队列会立即更新,以显示注册过程已完成,而发布队列则以网络流量的速度发送信息。
发布队列设置一个已定义的、有限数量的线程,用于发布生成的证书,而不是为每个批准的证书打开新线程。
流程
通过编辑 CS.cfg
文件启用发布队列可让管理员设置发布其他选项,如用于发布操作的线程数量和队列页面大小。
停止 CA 服务器,以便您可以编辑配置文件。
systemctl stop pki-tomcatd-nuxwdog@instance_name.service
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 CA 的
CS.cfg
文件。vim /var/lib/pki/instance_name/ca/conf/CS.cfg
# vim /var/lib/pki/instance_name/ca/conf/CS.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
ca.publish.queue.enable
设置为 true。如果该参数不存在,请按如下所示添加一行:ca.publish.queue.enable=true
ca.publish.queue.enable=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置其他相关的发布队列参数:
-
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
ca.publish.queue.maxNumberOfThreads=1 ca.publish.queue.priorityLevel=0 ca.publish.queue.pageSize=100 ca.publish.queue.saveStatus=200
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TIP将
ca.publish.queue.enable
设置为 false,ca.publish.queue.maxNumberOfThreads
设为 0 可禁用发布队列,并使用单独的线程来发布证书。
-
重启 CA 服务器。
systemctl start pki-tomcatd-nuxwdog@instance_name.service
# systemctl start pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.3.8. PKI 任务设置 复制链接链接已复制到粘贴板!
CS.cfg
文件用于为每个子系统配置 PKI 任务。每个子系统的参数都有所不同,没有任何重叠。
例如,KRA 具有恢复密钥所需的代理设置。
kra.noOfRequiredRecoveryAgents=1
kra.noOfRequiredRecoveryAgents=1
查看每个子系统的 CS.cfg
文件以熟悉其 PKI 任务设置;文件中的注释是学习不同参数的重点指南。
- CA 配置文件列出所有证书配置文件和策略设置,以及生成 CRL 的规则。
- TPS 配置不同的令牌操作。
- TKS 列出从不同密钥类型派生密钥的配置集。
- OCSP 为不同的密钥集设置密钥信息。
9.2.3.9. 在 CA 发布的证书中更改 DN 属性 复制链接链接已复制到粘贴板!
在证书系统发布的证书中,DNS 识别拥有证书的实体。在所有情况下,如果证书系统与目录服务器连接,则证书中的 DN 格式应该与目录中 DN 的格式匹配。名称不完全匹配;证书映射允许证书中的主题 DN 与目录中的不同。
在证书系统中,DN 基于 X.509 标准中定义的组件或属性。表 9.8 “值类型允许的字符” 列出默认支持的属性。一组属性可扩展。
属性 | 值类型 | 对象标识符 |
---|---|---|
|
| 2.5.4.3 |
|
| 2.5.4.11 |
|
| 2.5.4.10 |
|
| 2.5.4.6 |
|
| 2.5.4.7 |
|
| 2.5.4.8 |
|
| 2.5.4.9 |
|
| 2.5.4.12 |
|
| 0.9.2342.19200300.100.1.1 |
|
| 1.2.840.113549.1.9.1 |
|
| 0.9.2342.19200300.100.1.2.25 |
|
| 2.5.4.5 |
|
| 1.2.840.113549.1.9.2 |
|
| 1.2.840.113549.1.9.8 |
默认情况下,证书系统支持 表 9.8 “值类型允许的字符” 中指定的属性。此支持的属性列表可以通过创建或添加新属性来扩展。添加额外的 X.500Name
属性或组件的语法如下:
X500Name.NEW_ATTRNAME.oid=n.n.n.n X500Name.NEW_ATTRNAME.class=string_to_DER_value_converter_class
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 converter 类可以是以下之一:
-
Netscape.security.x509.PrintableConverter
将字符串转换为PrintableString
值。字符串必须具有可打印的字符。 -
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
X500Name.MY_ATTR.oid=1.2.3.4.5.6
X500Name.MY_ATTR.class=netscape.security.x509.DirStrConverter
9.2.3.9.1. 添加新或自定义属性 复制链接链接已复制到粘贴板!
停止证书管理器。
systemctl stop pki-tomcatd-nuxwdog@instance_name.service
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
/var/lib/pki/cs_instance/conf/
目录。 -
打开配置文件
CS.cfg
。 在配置文件中添加新属性。
例如,要添加三个专有属性
MYATTR1
,它是DirectoryString
,MYATTR2
,它是一个IA5String
,并且MYATTR3
是PrintableString
,请在配置文件末尾添加以下行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改,并关闭该文件。
重启证书管理器。
systemctl start pki-tomcatd-nuxwdog@instance_name.service
# systemctl start pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重新加载注册页面并验证更改;新属性应当以表单显示。
要验证新属性是否有效,请使用手动注册表单请求证书。
输入新属性的值,以便可以验证它们出现在证书主题名称中。例如,为新属性输入以下值,并在主题名称中查找它们:
MYATTR1: a_value MYATTR2: a.Value MYATTR3: aValue cn: John Doe o: Example Corporation
MYATTR1: a_value MYATTR2: a.Value MYATTR3: aValue cn: John Doe o: Example Corporation
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 打开 agent services 页面,并批准请求。
- 发布证书后,检查主题名称。证书应该在主题名称中显示新属性值。
9.2.3.9.2. 更改 DER-encoding 顺序 复制链接链接已复制到粘贴板!
可以更改 DirectoryString
的 DER-encoding 顺序,以便可以配置字符串,因为不同的客户端支持不同的编码。
更改 DirectoryString
的 DER-encoding 顺序的语法如下:
X500Name.directoryStringEncodingOrder=encoding_list_separated_by_commas
X500Name.directoryStringEncodingOrder=encoding_list_separated_by_commas
可能的编码值如下:
-
PrintableString
-
IA5String
-
UniversalString
-
BMPString
-
UTF8String
例如,DER-encoding 排序可以列出如下:
X500Name.directoryStringEncodingOrder=PrintableString,BMPString
X500Name.directoryStringEncodingOrder=PrintableString,BMPString
要更改 DirectoryString
编码,请执行以下操作:
停止证书管理器。
systemctl stop pki-tomcatd-nuxwdog@instance_name.service
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
/var/lib/pki/cs_instance/conf/
目录。 -
打开
CS.cfg
配置文件。 将编码顺序添加到配置文件。
例如,要指定两个编码值,即
PrintableString
和UniversalString
,编码顺序是PrintableString
first 和UniversalString
,请在配置文件末尾添加以下行:X500Name.directoryStringEncodingOrder=PrintableString,UniversalString
X500Name.directoryStringEncodingOrder=PrintableString,UniversalString
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改,并关闭该文件。
启动证书管理器。
systemctl start pki-tomcatd-nuxwdog@instance_name.service
# systemctl start pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
要验证编码顺序是否有效,请使用手动注册表单注册证书。对
cn
使用John_Doe
。 - 打开 agent services 页面,并批准请求。
签发证书后,使用
dumpasn1
工具检查证书的编码。主题名称的
cn
组件应编码为UniversalString
。使用
cn
的John Smith
创建并提交一个新请求。主题名称的
cn
组件应编码为PrintableString
。
9.2.3.10. 将 CA 设置为使用不同的证书为 CRL 进行签名 复制链接链接已复制到粘贴板!
证书管理器使用与 OCSP 签名证书对应的密钥对来签署证书和证书撤销列表(CRL)。要使用其他密钥对为证书管理器生成的 CRL 签名,可以创建一个 CRL 签名证书。证书管理器的 CRL 签名证书必须由自己签名或发布。
要让证书管理器使用不同的密钥对为 CRL 签名,请执行以下操作:
使用 CMC 为证书管理器请求并安装 CRL 签名证书。有关请求系统证书的详情,请查看 管理指南(Common criteria Edition) 中的第 5.3.2.1 获取 系统和 服务器证书。
请注意,用于获取证书的配置文件必须使用
keyUsageExtDefaultImpl
类 ID,对应的keyUsageCrlSign
参数设置为true
:policyset.userCertSet.6.default.class_id=keyUsageExtDefaultImpl policyset.userCertSet.6.default.params.keyUsageCrlSign=true
policyset.userCertSet.6.default.class_id=keyUsageExtDefaultImpl policyset.userCertSet.6.default.params.keyUsageCrlSign=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成 CRL 签名证书后,在证书管理器的加密模块数据库中安装证书。
- 如果使用 HSM,请遵循 第 10.4 节 “硬件安全模块”
-
如果您没有使用 HSM,请按照 第 10.5 节 “将证书导入到 NSS 数据库中” But 而不是
PKICertImport
使用certutil
命令,如 第 10.1.3 节 “certutil
常用命令” 所述。
停止证书管理器。
pki-server stop instance_name
# pki-server stop instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新证书管理器的配置,以识别新密钥对和证书。
更改到证书管理器实例配置目录。
cd /var/lib/pki/instance-name/ca/conf/
# cd /var/lib/pki/instance-name/ca/conf/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
CS.cfg
文件并添加以下行:ca.crl_signing.cacertnickname=nickname cert-instance_ID ca.crl_signing.defaultSigningAlgorithm=signing_algorithm ca.crl_signing.tokenname=token_name
ca.crl_signing.cacertnickname=nickname cert-instance_ID ca.crl_signing.defaultSigningAlgorithm=signing_algorithm ca.crl_signing.tokenname=token_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nickname 是分配给 CRL 签名证书的名称。
instance_ id 是证书管理器实例的名称。
如果安装的 CA 是基于 RSA 的 CA,则 signing_algorithm 可以是
SHA256withRSA
、SHA384withRSA
或SHA512withRSA
。如果安装的 CA 是基于 EC 的 CA,则 signing_algorithm 可以是SHA256withEC
,SHA384 带有EC
,SHA512withEC
。token_name 是用于生成密钥对和证书的令牌名称。如果使用内部/软件令牌,请使用
Internal Key Storage Token
作为值。例如,条目可能类似如下:
ca.crl_signing.cacertnickname=crlSigningCert cert-pki-ca ca.crl_signing.defaultSigningAlgorithm=SHA512withRSA ca.crl_signing.tokenname=Internal Key Storage Token
ca.crl_signing.cacertnickname=crlSigningCert cert-pki-ca ca.crl_signing.defaultSigningAlgorithm=SHA512withRSA ca.crl_signing.tokenname=Internal Key Storage Token
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改,并关闭该文件。
重启证书管理器。
pki-server restart instance_name
# pki-server restart instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,证书管理器可以使用 CRL 签名证书为其生成的 CRL 签名。
9.2.3.11. 从 CS.cfg 中的缓存配置 CRL 生成 复制链接链接已复制到粘贴板!
CRL 缓存是一种简单机制,允许从内存中维护的撤销信息中获取证书撤销信息。为了获得最佳性能,建议启用此功能,它已经代表默认行为。以下配置信息(这是默认设置)用于信息,或者是否需要更改。
停止 CA 服务器。
systemctl stop pki-tomcatd-nuxwdog@instance_name.service*
systemctl stop pki-tomcatd-nuxwdog@instance_name.service*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开 CA 配置目录。
cd /var/lib/instance_name/conf/
# cd /var/lib/instance_name/conf/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
CS.cfg
文件,将enableCRLCache
和enableCacheRecovery
参数设置为 true :ca.crl.MasterCRL.enableCRLCache=true ca.crl.MasterCRL.enableCacheRecovery=true
ca.crl.MasterCRL.enableCRLCache=true ca.crl.MasterCRL.enableCacheRecovery=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 CA 服务器。
systemctl start pki-tomcatd-nuxwdog@instance_name.service
# systemctl start pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.3.12. 在 CS.cfg 中为 CRL 配置更新间隔 复制链接链接已复制到粘贴板!
下面介绍如何配置 CRL 系统,以反映所需的行为。目标是根据两种类型的部分调度来配置 CRL 更新。一种类型允许显式时间列表,另一个类型由更新之间的间隔长度组成。另外,还有一种混合的场景,它们都启用了它们来考虑偏移。下方的备注条目实际上代表开箱即用的情况。
默认场景列出如下:
仅在需要更加详细且需要特定更新调度时与此问题分离。本节的其余部分将讨论如何完成这一目的。
在 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,它应该只由确保它们正在执行的操作的用户进行更改。
流程 :如何在 CS.cfg 中配置 CRL 更新间隔
停止 CA 服务器。
systemctl stop pki-tomcatd-nuxwdog@instance_name.service
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入 CA 配置目录。
cd /var/lib/instance_name/conf/
# cd /var/lib/instance_name/conf/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
CS.cfg
文件,并添加以下行来设置更新间隔:ca.crl.MasterCRL.updateSchema=3
ca.crl.MasterCRL.updateSchema=3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认间隔为 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
ca.crl.MasterCRL.enableDailyUpdates=true ca.crl.MasterCRL.enableUpdateInterval=false ca.crl.MasterCRL.dailyUpdates=0:50,04:55,06:55
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此字段会在应更新 CRL 时设置每日时间。要多次指定,请输入以逗号分隔的时间列表,如
01:50,04:55,06:55
。要输入多个天数的调度,请输入以逗号分隔的列表来在同一天内设置时间,然后是一个分号分隔的列表,以标识不同天数的时间。例如,设置01:50,04:55,06:55,02:00,05:00,17:
00,00 在周期的第 1 天、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
ca.crl.MasterCRL.enableDailyUpdates=false ca.crl.MasterCRL.enableUpdateInterval=true ca.crl.MasterCRL.autoUpdateInterval=240
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
根据您的环境设置以下参数:
如果您运行没有 OCSP 子系统的 CA,请设置:
ca.crl.MasterCRL.nextUpdateGracePeriod=0
ca.crl.MasterCRL.nextUpdateGracePeriod=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 OCSP 子系统运行 CA,请设置:
ca.crl.MasterCRL.nextUpdateGracePeriod=time_in_minutes
ca.crl.MasterCRL.nextUpdateGracePeriod=time_in_minutes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.crl.MasterCRL.nextUpdateGracePeriod
参数定义时间(以分钟为单位),值必须足够大,以便 CA 将新的 CRL 传播到 OCSP。您必须将参数设置为非零值。如果您的环境中还有 OCSP 克隆,还要设置:
ocsp.store.defStore.refreshInSec=time_in_seconds
ocsp.store.defStore.refreshInSec=time_in_seconds
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ocsp.store.defStore.refreshInSec
参数设置频率(以秒为单位),克隆 OCSP 实例会通过主 OCSP 实例的 LDAP 复制更新来告知 CRL 更新。
有关参数的详情,请查看 表 9.9 “CRL 扩展间隔参数”。
重启 CA 服务器。
systemctl start pki-tomcatd-nuxwdog@instance_name.service
systemctl start pki-tomcatd-nuxwdog@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
根据间隔更新 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
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
值重新同步。
9.2.3.13. 更改子系统的访问控制设置 复制链接链接已复制到粘贴板!
默认情况下,访问控制规则会首先评估拒绝规则,然后通过评估允许规则来应用。要更改顺序,请更改 CS.cfg
中的 authz.evaluateOrder
参数。
authz.evaluateOrder=deny,allow
authz.evaluateOrder=deny,allow
此外,还可以从本地 web.xml
文件(基本 ACL)评估访问控制规则,或者通过检查 LDAP 数据库来访问更复杂的 ACL。authz.sourceType
参数标识要使用的授权类型。
authz.sourceType=web.xml
authz.sourceType=web.xml
在编辑 CS.cfg
文件以加载更新的设置后,始终重启子系统。
9.2.3.14. 为请求和序列号配置范围 复制链接链接已复制到粘贴板!
如果没有使用随机序列号,如果克隆的系统,管理员可以指定在 /etc/pki/instance_name/subsystem/CS.cfg
文件中用于请求和序列号的范围:
证书系统支持范围的 BigInteger
值。
9.2.3.15. 设置 pkiconsole 的要求以使用 TLS 客户端证书身份验证 复制链接链接已复制到粘贴板!
pkiconsole
已被弃用,并将在以后的主发行版本中被新的基于浏览器的 UI 替代。虽然 pkiconsole
在发布替代 UI 之前继续可用,但我们鼓励在此鼓励使用命令行与 pkiconsole
等效,因为 pki CLI 将继续支持并在将来有新的基于浏览器的 UI 时受到改进。
编辑每个子系统的 CS.cfg
文件,搜索 authType
参数并将其设置如下:
authType=sslclientauth
authType=sslclientauth
9.2.3.16. 更改签名算法 复制链接链接已复制到粘贴板!
安装时首先通过 pkispawn
配置文件设置各种 PKI 对象的签名算法(certificates、CRL 和 OCSP 响应)。然后,可以在安装后通过编辑涉及的实例的 CS.cfg
文件来更改这些设置,如下所示:
- ca :签名证书的默认签名算法
-
打开 CA 的
CS.cfg
,并编辑ca.signing.defaultSigningAlgorithm
以分配所需的签名算法。例如:ca.signing.defaultSigningAlgorithm=SHA256withRSA
- ca :签名 CRL 的默认签名算法
-
打开 CA 的
CS.cfg
,并编辑ca.crl.MasterCRL.signingAlgorithm
以分配所需的签名算法。例如:ca.crl.MasterCRL.signingAlgorithm=SHA256withRSA
- CA :签名 OCSP 响应的默认签名算法
-
打开 CA 的
CS.cfg
,并编辑ca.ocsp_signing.defaultSigningAlgorithm
以分配所需的签名算法。例如:ca.ocsp_signing.defaultSigningAlgorithm=SHA256withRSA
- OCSP :签名 OCSP 响应的默认签名算法
-
打开 OCSP 的
CS.cfg
,并编辑ocsp.signing.defaultSigningAlgorithm
来分配所需的签名算法。例如:ocsp.signing.defaultSigningAlgorithm=SHA256withRSA
在编辑 CS.cfg
文件前,请确保停止 CS 实例,并在您完成更改后重启它。
请参阅 第 3.3 节 “允许的哈希功能”。
9.2.3.17. 禁用直接 CA-OCSP CRL 发布 复制链接链接已复制到粘贴板!
当将 OCSP 管理器配置为使用 LDAP 目录时,您需要禁用直接 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
9.2.3.18. 使用 OCSP 中最新的 CRL 启用客户端证书验证 复制链接链接已复制到粘贴板!
这是在 OCSP 子系统中启用撤销检查的替代方法。首选方法在 第 7.13.10.2 节 “为 CA / KRA / TKS / TPS 启用 OCSP” 中进行了详细介绍。
当正确设置时,OCSP 系统在内部具有最新的 CRL 来验证其自身的客户端。要做到这一点,您需要同时启用 ocsp.store.ldapStore.validateConnCertWithCRL
和 auths.revocationChecking.enabled
参数。
编辑 OCSP 的
CS.cfg
配置文件(例如/var/lib/pki/rhcs10-OCSP-subca/ca/conf/CS.cfg
)并设置以下内容:ocsp.store.ldapStore.validateConnCertWithCRL=true auths.revocationChecking.enabled=true
ocsp.store.ldapStore.validateConnCertWithCRL=true auths.revocationChecking.enabled=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 除了在
CS.cfg
中启用这两个参数外,enableOCSP
参数应该在/var/lib/pki/<ocsp 实例目录>/conf/server.xml
中保持设置为 false。
9.2.3.19. 为 CA 启用客户端证书和 CRL 发布 复制链接链接已复制到粘贴板!
Red Hat Certificate System 使证书颁发机构能够发布证书,证书撤销列表(CRL)。
要为 CS.cfg
配置文件中的发布证书或证书撤销列表(CRLs)配置证书颁发机构(CA)设置,请按照以下示例操作:
启用证书和 CRL 发布的 CA
CS.cfg
文件示例:ca.publish.enable=true ca.publish.cert.enable=true ca.publish.crl.enable=true
ca.publish.enable=true ca.publish.cert.enable=true ca.publish.crl.enable=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用证书发布的 CA
CS.cfg
文件示例:ca.publish.enable=true ca.publish.cert.enable=false
ca.publish.enable=true ca.publish.cert.enable=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用 CRL 发布的 CA
CS.cfg
文件示例:ca.publish.enable=true ca.publish.crl.enable=false
ca.publish.enable=true ca.publish.crl.enable=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow