管理指南
更新了 Red Hat Certificate System 9.7
摘要
第 1 章 Red Hat Certificate Systemnbsp 概述;Hat Certificate Red Hat Certificate Systemnbsp;System Subsystems
1.1. 使用证书
1.2. CertificateCertificate Systemnbsp 的评论;系统 子系统
Enterprise 安全客户端
1.3. 查看管理证书(Non-TMS)
1.4. 查看令牌管理系统(TMS)
1.5. RedRed Hat Certificate Systemnbsp;Hat CertificateRed Hat Certificate Systemnbsp;System services
部分 I. Red Hat Certificate System User Interfaces
第 2 章 用户界面
2.1. 用户界面概述
- PKI 命令行界面和其他命令行实用程序
- PKI 控制台图形界面
- 证书系统 Web 界面.
~/.dogtag/
目录中的 NSS 数据库。第 2.5.1.1 节 “pki CLI initialization” 提供使用管理员证书和密钥初始化 NSS 数据库的详细步骤。第 2.5.1.2 节 “Using "pki" CLI” 中介绍了使用 PKI 命令行工具的一些示例。其他示例将显示在本指南的其余部分中。
PKCS10Client
创建 CSR” )中使用。
pkiconsole
complete” 介绍如何初始化。第 2.3.2 节 “将 pkiconsole
用于 CA、OCSP、KRA 和 TKS Subsystems” 概述了使用控制台界面。后面部分,如 第 3.2.2 节 “使用基于 Java 的管理控制台管理证书注册配置集” 会根据特定操作进行更详细的信息。
2.2. 客户端 NSS 数据库初始化
- 为客户端准备 NSS 数据库。这可以是新数据库或现有数据库。
- 导入 CA 证书链并信任它们。
- 具有证书和对应密钥。它们可以生成在 NSS 数据库中,或者从其他位置导入,比如从 PKCS #12 文件中导入。
2.3. 图形界面
pkiconsole
是一个图形界面,专为具有管理员角色特权的用户而设计,用于管理子系统本身。这包括添加用户、配置日志、管理配置文件和内部数据库,以及许多其他功能。此实用程序使用 client-authentication 通过 TLS 与证书系统服务器通信,并可用于远程管理服务器。
2.3.1. pkiconsole
complete
pkiconsole
接口,请指定新密码并使用以下命令:
$ pki -c password -d ~/.redhat-idm-console client-init
~/.redhat-idm-console/
目录中创建一个新的客户端 NSS 数据库。
.p12
文件中提取 admin 客户端证书:
$ openssl pkcs12 -in file -clcerts -nodes -nokeys -out file.crt
$ PKICertImport -d ~/.redhat-idm-console -n "nickname" -t ",," -a -i file.crt -u C
$ pki -c password -d ~/.redhat-idm-console pkcs12-import --pkcs12-file file --pkcs12-password pkcs12-password
$ certutil -V -u C -n "nickname" -d ~/.redhat-idm-console
2.3.2. 将 pkiconsole
用于 CA、OCSP、KRA 和 TKS Subsystems
pkiconsole https://server.example.com:admin_port/subsystem_type
https://192.0.2.1:8443/ca https://[2001:DB8::1111]:8443/ca
图 2.1. 证书系统控制台

- 用户和组
- 访问控制列表
- 日志配置
- 子系统证书(根据子系统发布的证书,例如,在安全域或审计签名中)
2.4. Web 界面
2.4.1. 浏览器初始化
导入 CA 证书
- 点击→ → → 。
- 选择" 颁发机构 "选项卡,然后单击" "按钮。
- 选择
ca.crt
文件并点击 。
导入客户端证书
- 点击→ → → 。
- 选择您的 证书 选项卡。
- 单击,再选择客户端 p12 文件,如
ca_admin_cert.p12
。 - 在提示符下输入客户端证书的密码。
- 点击。
- 验证您的证书下是否添加了 条目。
访问 Web 控制台
2.4.2. 管理接口
图 2.2. TPS 管理员页面

2.4.3. 代理接口
图 2.3. 证书管理器的代理服务页面

- 证书管理器代理服务包括批准证书请求(发出证书)、撤销证书以及发布证书和 CRL。CA 发布的所有证书均可通过其代理服务页面进行管理。
- TPS 代理服务(如 CA 代理服务)管理已格式化的所有令牌,并通过 TPS 向它们发布证书。令牌可以被代理注册、暂停和删除。另外两个角色(operator 和 admin)可以查看 web 服务页面中的令牌,但不能对令牌执行任何操作。
- KRA 代理服务页面处理密钥恢复请求,这设定了在证书丢失时是否允许重新发布证书。
- OCSP 代理服务页面允许代理配置将 CRL 发布到 OCSP 的 CA,以手动将 CRL 加载到 OCSP,并查看客户端 OCSP 请求的状态。
2.4.4. 最终用户页面
图 2.4. 证书的 Manager 结束日期(Entities 页)

2.5. 命令行界面
2.5.1. "pki" CLI
$
pki [CLI options] <command> [command parameters]
2.5.1.1. pki CLI initialization
$
pki -c <password> client-init
~/.dogtag/nssdb
目录中创建一个新的客户端 NSS 数据库。必须在使用客户端 NSS 数据库的所有 CLI 操作中指定密码。或者,如果密码存储在文件中,您可以使用 -C
选项指定该文件。例如:
$
pki -C password_file client-init
.p12
文件中提取 admin 客户端证书:
$ openssl pkcs12 -in file -clcerts -nodes -nokeys -out file.crt
$ PKICertImport -d ~/.dogtag/nssdb -n "nickname" -t ",," -a -i file.crt -u C
$
pki -c <password> pkcs12-import --pkcs12-file <file> --pkcs12-password <password>
certutil -V -u C -n "nickname" -d ~/.dogtag/nssdb
2.5.1.2. Using "pki" CLI
$
pki
$
pki ca
$
pki ca-cert
--help
选项:
$
pki --help
$
pki ca-cert-find --help
$
pki help
$
pki help ca-cert-find
$
pki ca-cert-find
$
pki -U <server URL> -n <nickname> -c <password> <command> [command parameters]
$
pki -n jsmith -c password ca-user-find ...
http://local_host_name 的服务器通信:8080
。要与位于不同位置的服务器通信,请使用 -U
选项指定 URL,例如:
$
pki -U https://server.example.com:8443 -n jsmith -c password ca-user-find
2.5.2. AtoB
$
AtoB input.ascii output.bin
2.5.3. AuditVerify
$ AuditVerify -d ~jsmith/auditVerifyDir -n Log Signing Certificate -a ~jsmith/auditVerifyDir/logListFile -P "" -v
~jsmith/auditVerifyDir
NSS 数据库中的 Log Signing Certificate
(-
n
)验证审计日志。要验证(-a
)的日志列表位于 ~jsmith/auditVerifyDir/logListFile
文件中,以逗号分隔和排序。证书前的前缀(-P
),密钥数据库文件名为空。输出是 verbose(-v
)。
2.5.4. BtoA
$
BtoA input.bin output.ascii
2.5.5. CMCRequest
$
CMCRequest example.cfg
CMCRequest
撤销证书” 请求和接收证书。
2.5.6. CMCRevoke
2.5.8. CRMFPopClient
CRMFPopClient
实用程序是使用 NSS 数据库的证书请求消息格式(CRMF)客户端,并提供 Possession 的概念验证。
$ CRMFPopClient -d . -p password -n "cn=subject_name" -q POP_SUCCESS -b kra.transport -w "AES/CBC/PKCS5Padding" -t false -v -o /user_or_entity_database_directory/example.csr
-n)
、在当前目录中的 NSS 数据库创建一个新的 CSR,用于传输 kra.transport
(-b
)、AES/CBC/PKCS5adding key wrap algorithm from the key wrap algorithm is specified(
-v
)和生成的 CSR 写入 /user_or_entity_database_directory/example.csr
文件(-o)
。
CMCRequest
撤销证书”。
2.5.9. HttpClient
HttpClient
程序是一个 NSS 感知 HTTP 客户端,用于提交 CMC 请求。
$ HttpClient request.cfg
request.cfg
文件中。如需更多信息,请参阅 HttpClient --help 命令的输出。
2.5.10. OCSPClient
$ OCSPClient -h server.example.com -p 8080 -d /etc/pki/pki-tomcat/alias -c "caSigningCert cert-pki-ca" --serial 2
server.example.com
OCSP 服务器(-
h
)检查由 caSigningcet cert-pki-ca (-c
)签名的证书是否有效。
使用 /etc/pki/pki-tomcat/alias
目录中的 NSS 数据库。
2.5.11. PKCS10Client
PKCS10Client
工具为 RSA 和 EC 密钥(可选)在 HSM 中创建一个 PKCS10 格式的 CSR。
$ PKCS10Client -d /etc/dirsrv/slapd-instance_name/ -p password -a rsa -l 2048 -o ~/ds.csr -n "CN=$HOSTNAME"
/etc/dirsrv/slapd-
instance_name/
目录中(-d
with database password (-p
))中创建带有 2048 字节(-l
)密钥。输出 CSR 存储在 ~/ds.cfg
文件中(-o
),证书 DN 为 CN=$HOSTNAME (-n
)。
2.5.12. PrettyPrintCert
$ PrettyPrintCert ascii_data.cert
ascii_data.cert
文件的输出,并以人类可读格式显示其内容。输出中包含签名算法、exponent、modulus 和证书扩展等信息。
2.5.13. PrettyPrintCrl
$ PrettyPrintCrl ascii_data.crl
ascii_data.crl
的输出,并以人类可读格式显示其内容。输出中包括信息,如撤销签名算法、撤销者以及已撤销证书及其原因列表。
2.5.14. TokenInfo
$ TokenInfo ./nssdb/
2.5.15. tkstool
tkstool
程序与令牌密钥服务(TKS)子系统交互。
$ tkstool -M -n new_master -d /var/lib/pki/pki-tomcat/alias -h token_name
token_name
上的 /var/lib/pki/pki-tomcat/alias
NSS 数据库中创建一个名为 new_master (-n
)的新 master 密钥(-M
)
2.6. Enterprise 安全客户端
- 支持 JavaCard 2.1 或更高版本卡和全球平台 2.01- 兼容智能卡,如 Safenet 的 330J 智能卡。
- 支持 Gemalto TOP IM FIPS CY2 令牌,包括智能卡和 GemPCKey USB 形式因素键。
- 支持 SafeNet 智能卡 650(SC650)。
- 注册安全令牌,以便被 TPS 识别。
- 维护安全令牌,如使用 TPS 重新注册令牌。
- 提供有关受管理的令牌或令牌的当前状态的信息。
- 支持服务器端密钥生成,以便在令牌丢失时可以在单独的令牌中存档并恢复密钥。
- 允许用户注册安全令牌,以便被 TPS 识别。
- 允许用户维护安全令牌。例如,企业安全客户端可以使用 TPS 重新注册令牌。
- 通过默认的和自定义令牌配置集,为多种不同类型的令牌提供支持。默认情况下,TPS 可以自动注册用户密钥、设备密钥和安全分析密钥。可以添加额外的配置集,以便使用不同的使用的令牌(由令牌 CUID 等属性标识)根据适当的配置集自动注册。
- 提供有关被管理的令牌的当前状态的信息。
部分 II. 设置证书服务
第 3 章 制作发行证书规则(证书配置文件)
3.1. 关于证书配置集
- 身份验证.在每个认证配置集中都可以指定身份验证方法。
- 授权.在每个认证配置集中都可以指定授权方法。
- 配置集输入。配置集输入是请求证书时提交给 CA 的参数和值。配置集输入包括证书请求的公钥和证书实体请求的证书主题名称。
- 配置集输出。配置集输出是参数和值,用于指定向端点提供证书的格式。当请求成功时,配置集输出为 CMC 响应,其中包含 PKCS#7 证书链。
- 证书内容。每个证书都定义内容信息,如为其分配的实体的名称(主题名称)、签名算法及其有效周期。在 X.509 标准中定义证书中包含的内容。使用 X509 标准的版本 3,证书也可以包含扩展。有关证书扩展的详情请参考 第 B.3 节 “标准 X.509 v3 证书扩展参考”。关于证书配置文件的所有信息都在配置集的配置文件中的
set
条目中定义。当应该同时请求多个证书时,可以在配置集策略中定义多个集合条目来满足每个证书的需求。每个策略集都包含多个策略规则,每个策略规则描述了证书内容中的一个字段。策略规则可以包括以下部分:- 配置集默认值。以下是证书中包含的信息的预定义参数和允许值。配置集默认值包括证书的有效性周期,以及每个发布的证书扩展显示哪些证书扩展。
- 配置集限制。约束设置规则或策略以发布证书。另外,配置集限制包括需要证书主体名称至少包含一个 CN 组件的规则,从而将证书的有效性设置为 360 天,以定义续订允许的宽限期,或者要求 subjectaltname 扩展始终设置为 true。
3.1.1. 注册配置集
例 3.1. caCMCUserCert Profile 示例
desc=This certificate profile is for enrolling user certificates by using the CMC certificate request with CMC Signature authentication. visible=true enable=true enableBy=admin name=Signed CMC-Authenticated User Certificate Enrollment
auth.instance_id=
条目意味着,不需要使用此配置集进行身份验证来提交注册请求。但是,经授权 CA 代理的手动批准需要经过授权后才能获得帮助。
input.list=i1 input.i1.class_id=cmcCertReqInputImp
output.list=o1 output.o1.class_id=certOutputImpl
policyset.list=userCertSet policyset.userCertSet.list=1,10,2,3,4,5,6,7,8,9 ... policyset.userCertSet.6.constraint.class_id=keyUsageExtConstraintImpl policyset.userCertSet.6.constraint.name=Key Usage Extension Constraint policyset.userCertSet.6.constraint.params.keyUsageCritical=true policyset.userCertSet.6.constraint.params.keyUsageDigitalSignature=true policyset.userCertSet.6.constraint.params.keyUsageNonRepudiation=true policyset.userCertSet.6.constraint.params.keyUsageDataEncipherment=false policyset.userCertSet.6.constraint.params.keyUsageKeyEncipherment=true policyset.userCertSet.6.constraint.params.keyUsageKeyAgreement=false policyset.userCertSet.6.constraint.params.keyUsageKeyCertSign=false policyset.userCertSet.6.constraint.params.keyUsageCrlSign=false policyset.userCertSet.6.constraint.params.keyUsageEncipherOnly=false policyset.userCertSet.6.constraint.params.keyUsageDecipherOnly=false policyset.userCertSet.6.default.class_id=keyUsageExtDefaultImpl policyset.userCertSet.6.default.name=Key Usage Default policyset.userCertSet.6.default.params.keyUsageCritical=true policyset.userCertSet.6.default.params.keyUsageDigitalSignature=true policyset.userCertSet.6.default.params.keyUsageNonRepudiation=true policyset.userCertSet.6.default.params.keyUsageDataEncipherment=false policyset.userCertSet.6.default.params.keyUsageKeyEncipherment=true policyset.userCertSet.6.default.params.keyUsageKeyAgreement=false policyset.userCertSet.6.default.params.keyUsageKeyCertSign=false policyset.userCertSet.6.default.params.keyUsageCrlSign=false policyset.userCertSet.6.default.params.keyUsageEncipherOnly=false policyset.userCertSet.6.default.params.keyUsageDecipherOnly=false ...
3.1.2. 证书扩展:默认和限制
policyset.caCertSet.5.default.name=Basic Constraints Extension Default policyset.caCertSet.5.default.params.basicConstraintsCritical=true policyset.caCertSet.5.default.params.basicConstraintsIsCA=true policyset.caCertSet.5.default.params.basicConstraintsPathLen=-1
policyset.caCertSet.5.constraint.class_id=basicConstraintsExtConstraintImpl policyset.caCertSet.5.constraint.name=Basic Constraint Extension Constraint policyset.caCertSet.5.constraint.params.basicConstraintsCritical=true policyset.caCertSet.5.constraint.params.basicConstraintsIsCA=true policyset.caCertSet.5.constraint.params.basicConstraintsMinPathLen=-1 policyset.caCertSet.5.constraint.params.basicConstraintsMaxPathLen=-1
3.1.3. 输入和输出
3.2. 设置证书配置集
- 使用 PKI 命令行界面
- 使用基于 Java 的管理控制台
3.2.1. 使用 PKI 命令行界面管理证书注册配置集
pki
工具管理证书配置集。详情请查看 pki-ca-profile(1) man page。
3.2.1.1. 启用和禁用证书配置集
caCMCECserverCert
证书配置集:
# pki -c password -n caagent ca-profile-disable caCMCECserverCert
caCMCECserverCert
证书配置集:
# pki -c password -n caagent ca-profile-enable caCMCECserverCert
3.2.1.2. 以 Raw 格式创建证书配置集
# pki -c password -n caadmin ca-profile-add profile_name.cfg --raw
profileId=profile_name
3.2.1.3. 使用 Raw 格式编辑证书配置文件
caCMCECserverCert
配置集:
# pki -c password -n caadmin ca-profile-edit caCMCECserverCert
VI
编辑器中打开它。关闭编辑器时,服务器上的配置集配置会更新。
例 3.2. 以 RAW 格式编辑证书配置集
caCMCserverCert
配置集以接受多个用户提供的扩展:
- 禁用配置集作为 CA 代理:
# pki -c password -n caagemt ca-profile-disable caCMCserverCert
- 以 CA 管理员身份编辑配置集:
- 在
VI
编辑器中下载并打开配置集:# pki -c password -n caadmin ca-profile-edit caCMCserverCert
- 更新配置以接受扩展。详情请查看 例 B.3 “CSR 中的多个用户提供的扩展”。
- 将配置集启用为 CA 代理:
# pki -c password -n caagent ca-profile-enable caCMCserverCert
3.2.1.4. 删除证书配置集
# pki -c password -n caadmin ca-profile-del profile_name
3.2.2. 使用基于 Java 的管理控制台管理证书注册配置集
3.2.2.1. 通过 CA 控制台创建证书配置集
- 登录到证书Certificate Systemnbsp;System CA 子系统控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,选择 Certificate Manager,然后选择 Certificate Profiles。Certificate Profile Instances Management 选项卡(列出配置的证书配置集)会打开。
- 要创建新证书配置文件,请单击。在 Select Certificate Profile Plugin Implementation 窗口中,选择创建配置集的证书类型。
- 在 Certificate Profile Instance Editor 中查看配置集信息。
- 证书配置文件实例 ID.这是系统用来识别配置集的 ID。
- 证书配置文件名称.这是配置集的用户友好名称。
- 证书配置文件描述.
- 最终用户证书配置文件.这将设置请求是否必须通过配置集的输入表单进行发布。这通常设置为 true。将其设置为 false 可让通过证书管理器的证书配置集框架处理签名请求,而不是通过证书配置集的输入页面。
- 证书配置文件身份验证.这将设置身份验证方法。通过为身份验证提供实例 ID 来设置自动化身份验证。如果此字段为空,则验证方法是代理批准的注册;请求将提交到代理服务接口的请求队列。除非用于 TMS 子系统,否则管理员必须选择以下身份验证插件之一:
- CMCAuth :当 CA 代理必须批准并提交注册请求时,使用此插件。
- CMCUserSignedAuth :使用此插件使非代理用户注册自己的证书。
- 点击。插件编辑器关闭,新配置集在 profile 选项卡中列出。
- 为新配置集配置策略、输入和输出。从列表中选择新配置集,再单击。
- 在 证书配置文件规则编辑器窗口的 Policies 选项卡中设置策略。Policies 标签页列出了为配置集类型默认设置的策略。
- 要添加策略,请点击。
- 从 Default 字段中选择默认值,在 Constraints 字段中选择与该策略关联的限制, 。
- 填写策略设置 ID。在发出双键对时,单独的策略会定义与每个证书关联的策略。然后填写证书配置集策略 ID,这是证书配置集策略的名称或标识符。
- 在 Defaults 和 Constraints 选项卡中配置任何参数。默认值 定义填充证书请求的属性,后者决定了证书的内容。这些可以是扩展、有效期期或证书中包含的其他字段。约束 定义了默认值。如需每个默认或约束的完整详情,请参阅 第 B.1 节 “默认参考” 和 第 B.2 节 “约束参考”。
要修改现有策略,请选择一个策略,然后点。然后,编辑该策略的默认值和限制。要删除策略,请选择策略,然后点。 - 在 证书配置文件规则编辑器窗口的 输入 选项卡中设置输入。配置集可以有多个输入类型。注意除非为 TMS 子系统配置配置集,否则仅选择 cmcCertReqInput 并删除其他配置集,并点 按钮。
- 要添加输入,请单击。
- 从列表中选择输入,第 A.1 节 “输入参考”。。如需默认输入的完整详情,请参阅
- 此时会打开 New Certificate Profile Editor 窗口。设置输入 ID, 。
可以添加和删除输入。可以选择编辑输入,但因为输入没有参数或其他设置,因此没有配置任何内容。要删除输入,请选择输入,然后单击。 - 在 证书配置集 规则编辑器 窗口的 Outputs 选项卡中设置输出。必须为使用自动身份验证方法的任何证书配置集设置输出;不需要为使用代理批准的验证的任何证书配置集设置输出。默认情况下,所有配置集都会设置证书输出类型,并自动添加到自定义配置集。除非为 TMS 子系统配置配置集,否则仅选择 certOutput。可以添加和删除输出。可以选择编辑输出,但由于输出没有参数或其他设置,所以没有配置任何设置。
- 要添加输出,请单击。
- 选择列表中的输出,。
- 为输出指定名称或标识符,然后单击。此输出将在输出标签页中列出。您可以编辑它,向此输出中的参数提供值。
要删除输出,请选择列表中的输出,然后单击。 - 重启 CA 以应用新配置集。
systemctl restart pki-tomcatd-nuxwdog@instance_name.service
- 以管理员创建配置集后,CA 代理必须在代理服务页面中批准配置集以启用该配置集。
- 打开 CA 的服务页面。
https://server.example.com:8443/ca/services
- 单击 Manage Certificate Profiles 链接。本页列出了管理员设置的所有证书配置文件,包括活跃和不活跃状态。
- 点要批准的证书配置集的名称。
- 在页面底部,单击按钮。
3.2.2.2. 在控制台中编辑证书配置集
- 登录到代理服务页面并禁用配置集。当一个证书配置集由代理启用后,证书配置集会在 Certificate Profile Instance Management 选项卡中被标记为证书配置集,且无法通过控制台以任何方式编辑证书配置集。
- 登录到证书Certificate Systemnbsp;System CA 子系统控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,选择 Certificate Manager,然后选择 Certificate Profiles。
- 选择证书配置文件,再单击。
- 此时会出现 证书 Profile Rule Editor 窗口。对默认值、约束、输入或输出的任何更改。注意配置集实例 ID 无法修改。如有必要,通过拉出窗口的某一角放扩大窗口。
- 重启 CA 以应用更改。
- 在 agent services 页面中,重新启用该配置集。
3.2.3. 列出证书注册配置集
pki
工具程序。例如:
# pki -c password -n caadmin ca-profile-find ------------------ 59 entries matched ------------------ Profile ID: caCMCserverCert Name: Server Certificate Enrollment using CMC Description: This certificate profile is for enrolling server certificates using CMC. Profile ID: caCMCECserverCert Name: Server Certificate wth ECC keys Enrollment using CMC Description: This certificate profile is for enrolling server certificates with ECC keys using CMC. Profile ID: caCMCECsubsystemCert Name: Subsystem Certificate Enrollment with ECC keys using CMC Description: This certificate profile is for enrolling subsystem certificates with ECC keys using CMC. Profile ID: caCMCsubsystemCert Name: Subsystem Certificate Enrollment using CMC Description: This certificate profile is for enrolling subsystem certificates using CMC. ... ----------------------------- Number of entries returned 20
3.2.4. 显示证书注册配置集详情
caECFullCMCUserSignedCert
:
$ pki -c password -n caadmin ca-profile-show caECFullCMCUserSignedCert ----------------------------------- Profile "caECFullCMCUserSignedCert" ----------------------------------- Profile ID: caECFullCMCUserSignedCert Name: User-Signed CMC-Authenticated User Certificate Enrollment Description: This certificate profile is for enrolling user certificates with EC keys by using the CMC certificate request with non-agent user CMC authentication. Name: Certificate Request Input Class: cmcCertReqInputImpl Attribute Name: cert_request Attribute Description: Certificate Request Attribute Syntax: cert_request Name: Certificate Output Class: certOutputImpl Attribute Name: pretty_cert Attribute Description: Certificate Pretty Print Attribute Syntax: pretty_print Attribute Name: b64_cert Attribute Description: Certificate Base-64 Encoded Attribute Syntax: pretty_print
caECFullCMCUserSignedCert
,采用 raw 格式:
$ pki -c password -n caadmin ca-profile-show caECFullCMCUserSignedCert --raw #Wed Jul 25 14:41:35 PDT 2018 auth.instance_id=CMCUserSignedAuth policyset.cmcUserCertSet.1.default.params.name= policyset.cmcUserCertSet.4.default.class_id=authorityKeyIdentifierExtDefaultImpl policyset.cmcUserCertSet.6.default.params.keyUsageKeyCertSign=false policyset.cmcUserCertSet.10.default.class_id=noDefaultImpl policyset.cmcUserCertSet.10.constraint.name=Renewal Grace Period Constraint output.o1.class_id=certOutputImpl ...
3.3. 在配置集中定义密钥默认值
policyset.set1.p3.constraint.class_id=noConstraintImpl policyset.set1.p3.constraint.name=No Constraint policyset.set1.p3.default.class_id=subjectKeyIdentifierExtDefaultImpl policyset.set1.p3.default.name=Subject Key Identifier Default ... policyset.set1.p11.constraint.class_id=keyConstraintImpl policyset.set1.p11.constraint.name=Key Constraint policyset.set1.p11.constraint.params.keyType=RSA policyset.set1.p11.constraint.params.keyParameters=1024,2048,3072,4096 policyset.set1.p11.default.class_id=userKeyDefaultImpl policyset.set1.p11.default.name=Key Default
policyset.set1.list=p1,p2,p11,p3
,p4,p5,p6,p7,p8,p9,p10
3.4. 配置配置集以启用续订
policyset.cmcUserCertSet.10.constraint.class_id=renewGracePeriodConstraintImpl policyset.cmcUserCertSet.10.constraint.name=Renewal Grace Period Constraint policyset.cmcUserCertSet.10.constraint.params.renewal.graceBefore=30 policyset.cmcUserCertSet.10.constraint.params.renewal.graceAfter=30 policyset.cmcUserCertSet.10.default.class_id=noDefaultImpl policyset.cmcUserCertSet.10.default.name=No Default
3.4.1. 使用 Same Key 续订
allowSameKeyRenewal
参数设置为 true。例如:
policyset.cmcUserCertSet.9.constraint.class_id=uniqueKeyConstraintImpl policyset.cmcUserCertSet.9.constraint.name=Unique Key Constraint policyset.cmcUserCertSet.9.constraint.params.allowSameKeyRenewal=true policyset.cmcUserCertSet.9.default.class_id=noDefaultImpl policyset.cmcUserCertSet.9.default.name=No Default
3.4.2. 使用新密钥续订
subjectDN
签署新证书的请求。
3.5. 为证书设置签名算法
3.5.1. 设置 CA 的默认签名算法
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,展开 证书管理器树。
- 在 General Settings 选项卡中,设置 Algorithm 下拉菜单中选择要使用的算法。
3.5.2. 在配置集中设置 Signing Algorithm Default
.cfg
文件中,算法设置了两个参数:
policyset.cmcUserCertSet.8.constraint.class_id=signingAlgConstraintImpl policyset.cmcUserCertSet.8.constraint.name=No Constraint policyset.cmcUserCertSet.8.constraint.params.signingAlgsAllowed=SHA256withRSA,SHA512withRSA,SHA256withEC,SHA384withRSA,SHA384withEC,SHA512withEC policyset.cmcUserCertSet.8.default.class_id=signingAlgDefaultImpl policyset.cmcUserCertSet.8.default.name=Signing Alg policyset.cmcUserCertSet.8.default.params.signingAlg=-
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,展开 证书管理器树。
- 单击 Certificate Profiles 项。
- 点 Policies 标签页。
- 选择 Signing Alg 策略,然后单击 按钮。
- 要设置默认的签名算法,请在 Defaults 选项卡中设置值。如果设为 -,则配置集将使用 CA 的默认。
- 要设置一个可以在证书请求中接受的允许签名算法列表,打开 Constraints 标签页,然后在 Sign AlgsAllowed 的 Value 字段中设置算法列表。约束的可能值列在 第 B.2.10 节 “签名算法” 中。
3.7. 管理主题名称和主题备用名称
3.7.1. 在 Subject Name 中使用 Requester CN 或 UID
cn
或 uid
值可以用来构建签发的证书的主题名称。本节演示了一个配置集,它需要在 Subject Name Constraint 中指定 naming 属性(CN 或 UID)。如果缺少 naming 属性,请求将被拒绝。
- CN 或 UID 格式在 Subject Name Constraint 中的 模式 配置中设定。
- 主题 DN 的格式(包括 CN 或 UID 令牌)和证书的特定后缀在 Subject Name Default 中设定。
policyset.serverCertSet.1.constraint.class_id=subjectNameConstraintImpl policyset.serverCertSet.1.constraint.name=Subject Name Constraint policyset.serverCertSet.1.constraint.params.pattern=CN=[^,]+,.+
policyset.serverCertSet.1.constraint.params.accept=true policyset.serverCertSet.1.default.class_id=subjectNameDefaultImpl policyset.serverCertSet.1.default.name=Subject Name Default policyset.serverCertSet.1.default.params.name=CN=$request.req_subject_name.cn$,DC=example, DC=com
policyset.serverCertSet.1.constraint.class_id=subjectNameConstraintImpl policyset.serverCertSet.1.constraint.name=Subject Name Constraint policyset.serverCertSet.1.constraint.params.pattern=UID=[^,]+,.+
policyset.serverCertSet.1.constraint.params.accept=true policyset.serverCertSet.1.default.class_id=subjectNameDefaultImpl policyset.serverCertSet.1.default.name=Subject Name Default policyset.serverCertSet.1.default.params.name=UID=$request.req_subject_name.uid$,DC=example, DC=com
3.7.2. 在 Subject Alt Name 中插入 LDAP 目录属性值和其他信息
policyset.userCertSet.8.default.class_id=subjectAltNameExtDefaultImpl policyset.userCertSet.8.default.name=Subject Alt Name Constraint policyset.userCertSet.8.default.params.subjAltNameExtCritical=false policyset.userCertSet.8.default.params.subjAltExtType_0=RFC822Name policyset.userCertSet.8.default.params.subjAltExtPattern_0=$request.requestor_email$ policyset.userCertSet.8.default.params.subjAltExtGNEnable_0=true
- 插入 LDAP 属性值需要启用用户目录身份验证插件 SharedSecret。
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在左侧导航树中选择 Authentication。
- 在 Authentication Instance 选项卡中,点 ,再添加 SharedSecret 身份验证插件的实例。
- 输入以下信息:
Authentication InstanceID=SharedToken shrTokAttr=shrTok ldap.ldapconn.host=server.example.com ldap.ldapconn.port=636 ldap.ldapconn.secureConn=true ldap.ldapauth.bindDN=cn=Directory Manager password=password ldap.ldapauth.authtype=BasicAuth ldap.basedn=ou=People,dc=example,dc=org
- 保存新的插件实例。
有关设置 CMC 共享令牌的详情,请参考 第 9.4.2 节 “设置 CMC 共享 Secret”。 - ldapStringAttributes 参数指示身份验证插件从用户的 LDAP 条目中读取
mail
属性的值,并将该值放在证书请求中。当值位于请求时,可以将证书配置集策略设置为插入扩展值的值。 - 要启用 CA 在证书扩展中插入 LDAP 属性值,请编辑配置集的配置文件,并为扩展插入策略 set 参数。例如,要在
caFullCMCSharedTokenCert
配置集中的 Subject Alternative Name 扩展中插入mail
属性值,请更改以下代码:policyset.setID.8.default.params.
subjAltExtPattern_0=$request.auth_token.mail[0]$
有关编辑配置集的详情,请参考 第 3.2.1.3 节 “使用 Raw 格式编辑证书配置文件”。 - 重启 CA。
systemctl restart pki-tomcatd-nuxwdog@instance_name.service
caFullCMCSharedTokenCert
配置集注册表单提交的证书会添加 Subject Alternative Name 扩展,并带有 requester 的邮件
LDAP 属性的值。例如:
Identifier: Subject Alternative Name - 2.5.29.17 Critical: no Value: RFC822Name: jsmith@example.com
策略设置令牌 | 描述 |
---|---|
$request.auth_token.cn[0]$ | 请求证书的用户的 LDAP 通用名称(cn )属性。 |
$request.auth_token.mail[0]$ | 请求证书的用户的 LDAP 电子邮件(邮件 )属性值。 |
$request.auth_token.tokencertsubject$ | 证书主题名称。 |
$request.auth_token.uid$ | 请求证书的用户的 LDAP 用户 ID(uid )属性。 |
$request.auth_token.userdn$ | 请求证书的用户 DN。 |
$request.auth_token.userid$ | 请求证书的用户的用户 ID 属性的值。 |
$request.uid$ | 请求证书的用户的用户 ID 属性的值。 |
$request.requestor_email$ | 提交请求的人的电子邮件地址。 |
$request.request_name$ | 提交请求的人员。 |
$request.upn$ | Microsoft UPN。它的格式为 (UTF8String)1.3.6.1.4.1.311.20.2.3,$request.upn$。 |
$server.source$ | 指示服务器在主题名称中生成版本 4 个 UUID(随机号)组件。这始终具有格式 (IA5String)1.2.3.4,$server.source$. |
$request.auth_token.user$ | 当请求由 TPS 提交时使用。请求证书的 TPS 子系统可信管理器。 |
$request.subject$ | 当请求由 TPS 提交时使用。TPS 已解析和请求的实体的主题名称 DN。例如: cn=John.Smith.123456789,o=TMS Org |
3.7.3. 使用 SAN 扩展中的 CN 属性
dNSName
Subject Alternative Name(SAN)值。
dNSName
值被附加到现有 SAN。
- 禁用配置集:
# pki -c password -p 8080 \ -n "PKI Administrator for example.com" ca-profile-disable profile_name
- 编辑配置集:
# pki -c password -p 8080 \ -n "PKI Administrator for example.com" ca-profile-edit profile_name
- 添加带有配置集唯一设置号的以下配置。例如:
policyset.serverCertSet.12.constraint.class_id=noConstraintImpl policyset.serverCertSet.12.constraint.name=No Constraint policyset.serverCertSet.12.default.class_id=commonNameToSANDefaultImpl policyset.serverCertSet.12.default.name=Copy Common Name to Subject
前面的示例使用 12 作为集合号。 - 将新策略设置号附加到
policyset.userCertSet.list
参数。例如:policyset.userCertSet.list=1,10,2,3,4,5,6,7,8,9,12
- 保存配置集。
- 启用配置集:
# pki -c password -p 8080 \ -n "PKI Administrator for example.com" ca-profile-enable profile_name
commonNameToSANDefaultImpl
默认。
3.7.4. 接受 CSR 的 SAN 扩展
3.7.4.1. 将配置文件配置为来自 CSR 的检索 SAN
caCMCECserverCert
:
prefix.constraint.class_id=noConstraintImpl prefix.constraint.name=No Constraint prefix.default.class_id=userExtensionDefaultImpl prefix.default.name=User supplied extension in CSR prefix.default.params.userExtOID=2.5.29.17
3.7.4.2. 使用 SAN 生成 CSR
certutil
实用程序通过两个 SAN 生成 CSR:
# certutil -R -k ec -q nistp256 -d . -s "cn=Example Multiple SANs" --extSAN dns:www.example.com,dns:www.example.org -a -o /root/request.csr.p10
第 4 章 设置密钥存档和恢复
4.1. 在控制台中配置代理验证密钥恢复
CS.cfg
文件中设置。默认情况下,控制台使用密钥恢复授权代理组
。
- 打开 KRA 的控制台。例如:
pkiconsole https://server.example.com:8443/kra
- 点左侧导航树中的 Key Recovery Authority 链接。
- 在 所需的代理数量字段中,输入用来批准密钥恢复的代理数量。
CS.cfg
文件中配置代理批准的密钥恢复的更多信息,请参阅 红帽证书系统规划、安装和部署指南中的 "配置代理 -Approved Key Recovery "部分。
4.2. 测试密钥存档和恢复设置
- 使用 CA 的 手动用户签名和加密证书注册表单注册 2 证书。
- 提交请求。登录代理服务页面,并批准请求。
- 登录终端页面,并查看证书是否已颁发。在证书列表中,应该有两个带有连续序列号的新证书。
- 将证书导入 Web 浏览器。
- 确认密钥已被存档。在 KRA 的 agent services 页面中,选择 Show completed requests。如果密钥被成功存档,则会有有关该密钥的信息。如果没有显示密钥,请检查日志并更正问题。如果密钥已成功归档,请关闭浏览器窗口。
- 验证 密钥。发送已签名并加密的电子邮件。收到电子邮件后,请打开它并检查消息,以查看其是否已签名并加密。消息窗口右上角应当有一个安全图标,这表示消息已签名并加密。
- 删除证书。再次检查加密的电子邮件;邮件客户端应该无法解密邮件。
- 测试归档的密钥是否可以成功恢复:
- 打开 KRA 的代理服务页面,点 Recover Keys 链接。按照密钥所有者、序列号或公钥搜索密钥。如果密钥已成功存档,则会显示密钥信息。
- 点。
- 在出现的表单中,输入与私钥对应的 base-64 编码证书来恢复;使用 CA 获取此信息。如果通过提供 base-64 编码证书搜索归档的密钥,则不得在此处提供证书。
- 确保已选中 Async Recovery 复选框,以便允许在恢复期间关闭浏览器会话。提示async 恢复是执行密钥恢复的默认和推荐方法。如果要执行同步密钥恢复,浏览器窗口将无法关闭,且在恢复过程中无法停止 KRA。
- 根据代理方案,指定数量的代理必须授权这个密钥恢复。让代理搜索密钥恢复,然后批准启动的恢复。
- 当所有代理都授权恢复后,下一屏幕将请求一个密码来加密带有证书的 PKCS #12 文件。
- 下一屏幕返回一个下载 PKCS #12 blob 的链接,其中包含恢复的密钥对。按照链接,将 blob 保存到文件。重要在某些情况下,直接从
gcr-viewer
工具中的浏览器打开 PKCS #12 文件。要临时解决这个问题,请下载文件并在gcr-viewer
中手动打开。
- 将密钥恢复到浏览器的数据库。将 .p12 文件导入浏览器和邮件客户端。
- 打开测试电子邮件。应再次显示该消息。
第 5 章 请求、注册和管理证书
5.1. 关于注册和续订证书
- 生成证书请求(CSR)。
- 证书请求提交至 CA。
- 请求通过验证请求它的实体进行验证,确认请求是否满足用于提交它的证书配置文件规则。
- 申请已批准。
- 请求方检索新证书。
5.2. 创建证书签名请求
- 使用命令行工具生成 CSR
- 在支持的浏览器中生成 CSR
- 在应用程序内生成 CSR,如服务器的安装程序
- 命令行工具
- 服务器侧密钥生成
5.2.1. 使用命令行工具生成 CSR
certutil
:支持创建 PKCS #10 请求。PKCS10Client
:支持创建 PKCS #10 请求。CRMFPopClient
:支持创建 CRMF 请求。pki client-cert-request
: 支持 PKCS#10 和 CRMF 请求。
5.2.1.1. 使用 certutil
创建 CSR
certutil
工具创建 CSR 的示例。
certutil
的详情,请参考:
- certutil(1) man page
- certutil --help 命令的输出
5.2.1.1.1. 使用 certutil
创建带有 EC 密钥的 CSR
certutil
实用程序创建 Elliptic Curve(EC)密钥对和 CSR:
- 进入请求证书的用户或实体的证书数据库目录,例如:
$ cd /user_or_entity_database_directory/
- 创建二进制 CSR,并将其存储在
/user_or_entity_database_directory/request.csr
文件中:$ certutil -d . -R -k ec -q nistp256 -s "CN=subject_name" -o /user_or_entity_database_directory/request-bin.csr
提示时输入所需的 NSS 数据库密码。有关参数的详情,请查看 certutil(1) man page。 - 将创建的二进制格式 CSR 转换为 PEM 格式:
$ BtoA /user_or_entity_database_directory/request-bin.csr /user_or_entity_database_directory/request.csr
- (可选)验证 CSR 文件是否正确:
$ cat /user_or_entity_database_directory/request.csr MIICbTCCAVUCAQAwKDEQMA4GA1UEChMHRXhhbXBsZTEUMBIGA1UEAxMLZXhhbXBs ...
这是一个 PKCS#10 PEM 证书请求。
5.2.1.1.2. 使用 certutil
使用用户定义的扩展来创建 CSR
certutil
实用程序使用用户定义的扩展创建 CSR。
- 进入请求证书的用户或实体的证书数据库目录,例如:
$ cd /user_or_entity_database_directory/
- 使用用户定义的 Key Usage 扩展创建 CSR,以及用户定义的扩展密钥使用扩展,并将其存储在
/user_or_entity_database_directory/request.csr
文件中:$ certutil -d . -R -k rsa -g 1024 -s "CN=subject_name" --keyUsage keyEncipherment,dataEncipherment,critical --extKeyUsage timeStamp,msTrustListSign,critical -a -o /user_or_entity_database_directory/request.csr
提示时输入所需的 NSS 数据库密码。有关参数的详情,请查看 certutil(1) man page。 - (可选)验证 CSR 文件是否正确:
$ cat /user_or_entity_database_directory/request.csr Certificate request generated by NSS certutil Phone: (not specified) Common Name: user 4-2-1-2 Email: (not specified) Organization: (not specified) State: (not specified) Country: (not specified)
这是一个 PKCS#10 PEM 证书请求。
5.2.1.2. 使用 PKCS10Client
创建 CSR
PKCS10Client
实用程序创建 CSR 的示例。
PKCS10Client
的详情,请参考:
- PKCS10Client(1) man page
- PKCS10Client --help 命令的输出
5.2.1.2.1. 使用 PKCS10Client
创建 CSR
PKCS10Client
实用程序创建 Elliptic Curve(EC)密钥对和 CSR:
- 进入请求证书的用户或实体的证书数据库目录,例如:
$ cd /user_or_entity_database_directory/
- 创建 CSR,并将其存储在
/user_or_entity_database_directory/example.csr
文件中:$ PKCS10Client -d . -p NSS_password -a ec -c nistp256 -o /user_or_entity_database_directory/example.csr -n "CN=subject_name"
有关参数的详情,请查看 PKCS10Client(1) man page。 - (可选)验证 CSR 是否正确:
$ cat /user_or_entity_database_directory/example.csr -----BEGIN CERTIFICATE REQUEST----- MIICzzCCAbcCAQAwgYkx ... -----END CERTIFICATE REQUEST-----
5.2.1.2.2. 使用 PKCS10Client
为基于 SharedSecret 的 CMC 创建 CSR
PKCS10Client
程序为基于 SharedSecret 的 CMC 创建 RSA 密钥对和 CSR。它仅与 CMC Shared Secret 身份验证方法一起使用,默认由 caFullCMCSharedTokenCert
和 caECFullCMCSharedTokenCert
配置集处理。
- 进入请求证书的用户或实体的证书数据库目录,例如:
$ cd /user_or_entity_database_directory/
- 创建 CSR,并将其存储在
/user_or_entity_database_directory/example.csr
文件中:$ PKCS10Client -d . -p NSS_password -o /user_or_entity_database_directory/example.csr -y true -n "CN=subject_name"
有关参数的详情,请查看 PKCS10Client(1) man page。 - (可选)验证 CSR 是否正确:
$ cat /user_or_entity_database_directory/example.csr -----BEGIN CERTIFICATE REQUEST----- MIICzzCCAbcCAQAwgYkx ... -----END CERTIFICATE REQUEST-----
5.2.1.3. 使用 CRMFPopClient
创建 CSR
CRMFPopClient
实用程序创建 CSR 的示例。
CRMFPopClient
的详情,请查看 CRMFPopClient(1) man page。
5.2.1.3.1. 使用 CRMFPopClient
创建带有密钥 Archival 的 CSR
CRMFPopClient
实用程序创建 RSA 密钥对,并使用密钥归档选项创建 CSR:
- 进入请求证书的用户或实体的证书数据库目录,例如:
$ cd /user_or_entity_database_directory/
- 检索 KRA 传输证书:
$ pki ca-cert-find --name "DRM Transport Certificate" --------------- 1 entries found --------------- Serial Number: 0x7 Subject DN: CN=DRM Transport Certificate,O=EXAMPLE Status: VALID Type: X.509 version 3 Key A lgorithm: PKCS #1 RSA with 2048-bit key Not Valid Before: Thu Oct 22 18:26:11 CEST 2015 Not Valid After: Wed Oct 11 18:26:11 CEST 2017 Issued On: Thu Oct 22 18:26:11 CEST 2015 Issued By: caadmin ---------------------------- Number of entries returned 1
- 导出 KRA 传输证书:
$ pki ca-cert-show 0x7 --output kra.transport
- 创建 CSR,并将其存储在
/user_or_entity_database_directory/example.csr
文件中:$ CRMFPopClient -d . -p password -n "cn=subject_name" -q POP_SUCCESS -b kra.transport -w "AES/CBC/PKCS5Padding" -v -o /user_or_entity_database_directory/example.csr
要创建 Elliptic Curve(EC)密钥对和 CSR,将-a ec -t false
选项传递给该命令。有关参数的详情,请查看 CRMFPopClient(1) man page。 - (可选)验证 CSR 是否正确:
$ cat /user_or_entity_database_directory/example.csr -----BEGIN CERTIFICATE REQUEST----- MIICzzCCAbcCAQAwgYkx ... -----END CERTIFICATE REQUEST-----
5.2.1.3.2. 使用 CRMFPopClient
为基于 SharedSecret 的 CMC 创建 CSR
CRMFPopClient
程序为基于 SharedSecret 的 CMC 创建 RSA 密钥对和 CSR。它仅与 CMC Shared Secret 身份验证方法一起使用,默认由 caFullCMCSharedTokenCert
和 caECFullCMCSharedTokenCert
配置集处理。
- 进入请求证书的用户或实体的证书数据库目录,例如:
$ cd /user_or_entity_database_directory/
- 检索 KRA 传输证书:
$ pki ca-cert-find --name "DRM Transport Certificate" --------------- 1 entries found --------------- Serial Number: 0x7 Subject DN: CN=DRM Transport Certificate,O=EXAMPLE Status: VALID Type: X.509 version 3 Key A lgorithm: PKCS #1 RSA with 2048-bit key Not Valid Before: Thu Oct 22 18:26:11 CEST 2015 Not Valid After: Wed Oct 11 18:26:11 CEST 2017 Issued On: Thu Oct 22 18:26:11 CEST 2015 Issued By: caadmin ---------------------------- Number of entries returned 1
- 导出 KRA 传输证书:
$ pki ca-cert-show 0x7 --output kra.transport
- 创建 CSR,并将其存储在
/user_or_entity_database_directory/example.csr
文件中:$ CRMFPopClient -d . -p password -n "cn=subject_name" -q POP_SUCCESS -b kra.transport -w "AES/CBC/PKCS5Padding" -y -v -o /user_or_entity_database_directory/example.csr
要创建 EC 密钥对和 CSR,将-a ec -t false
选项传递给该命令。有关参数的详情,请查看 CRMFPopClient --help 命令的输出。 - (可选)验证 CSR 是否正确:
$ cat /user_or_entity_database_directory/example.csr -----BEGIN CERTIFICATE REQUEST----- MIICzzCCAbcCAQAwgYkx ... -----END CERTIFICATE REQUEST-----
5.2.1.4. 在 PKI
CLI 中使用 client-cert-request
创建 CSR
pki
命令行工具也可以与 client-cert-request
命令一起使用,以生成 CSR。但是,与之前讨论的工具不同,使用 pki 生成的 CSR 将直接提交到 CA。可以生成 PKCS#10 或 CRMF 请求。
pki -d user token db directory -P https -p 8443 -h host.test.com -c user token db passwd client-cert-request "uid=test2" --length 4096 --type pkcs10
pki -d user token db directory -P https -p 8443 -h host.test.com -c user token db passwd client-cert-request "uid=test2" --length 4096 --type crmf
ca-cert-request-approve
命令批准它。
pki -d agent token db directory -P https -p 8443 -h host.test.com -c agent token db passwd -n <CA agent cert nickname> ca-cert-request-approve request id
5.2.2. 使用服务器侧密钥生成 CSR
CRMFPopClient
--help)或 pki
(请参阅 pki client-cert-request --help)作为临时解决方案。
5.2.2.1. 功能亮点
- 证书请求密钥在 KRA 上生成(注意:必须安装 KRA 才能使用 CA)
- 配置集默认插件
serverKeygenUserKeyDefaultImpl
提供选择来启用或禁用密钥存档(例如,enableArchival 参数) - 支持 RSA 和 EC 密钥
- 支持手动(代理)批准和自动批准(例如,基于目录密码)
5.2.2.2. 使用服务器侧密钥注册证书
手动用户使用服务器端密钥注册注册
图 5.1. 需要代理手动批准的服务器端密钥生成

使用服务器端密钥生成目录验证的用户注册
图 5.2. server-Side Keygen Enrollment,在成功 LDAP uid/pwd 身份验证后将自动批准

- 如果是手动批准,PS PKCS#12 文件将返回到批准请求的 CA 代理;然后代理应该将 PKCS#12 文件转发给用户。
- 如果是自动批准,PMPS PKCS#12 文件将返回到提交该请求的用户
图 5.3. 代理手动批准注册

pkcs12util
)将此文件导入到每个应用程序自己的用户内部证书/密钥数据库中。例如,如 Firefox nss 数据库。
5.2.2.3. 密钥恢复
5.2.2.4. 其它信息
5.2.2.4.1. KRA Request Records
- 一个用于请求类型 asymkeyGenRequest不能使用 KRA 代理页面上的 List Requests 过滤此请求类型;您可以选择 Show All Requests 以查看列出的请求。
- 一个用于请求类型 恢复
5.2.2.4.2. 审计记录
- SERVER_SIDE_KEYGEN_ENROLL_KEYGEN_REQUEST
- SERVER_SIDE_KEYGEN_ENROLL_KEY_RETRIEVAL_REQUEST
- SERVER_SIDE_KEYGEN_ENROLL_KEYGEN_REQUEST_PROCESSED
- SERVER_SIDE_KEYGEN_ENROLL_KEY_RETRIEVAL_REQUEST_PROCESSED(尚未实施)
5.3. 配置 Internet Explorer 以注册证书
5.3.1. 关于关键限制和 Internet Explorer
算法 | 供应商 | 支持的密钥大小 |
---|---|---|
ECC | Microsoft Software Key Storage Provider |
|
ECC | Microsoft 智能卡存储供应商 |
|
RSA | Microsoft Base Cryptographic Provider |
|
RSA | Microsoft Strong Cryptographic Provider |
|
RSA | 增强的 Cryptographic Provider |
|
RSA | Microsoft Software Key Storage Provider |
|
5.3.2. 配置 Internet Explorer
- 打开 Internet Explorer。
- Open TLS 1.2。→ → → ,取消选择
- 导入 CA 证书链。
- 为 CA 打开 unsecured end 服务页面,例如:
http://server.example.com:8080/ca/ee/ca
- 点 Retrieval 选项卡。
- 点左侧菜单中的 Import CA Certificate Chain,然后选择 Download the CA certificate chain in binary form。
- 提示时,保存 CA 证书链文件。
- 在 Internet Explorer 菜单中,点,然后选择 。
- 打开 内容选项卡,然后单击 证书按钮。
- 单击 导入 按钮。在导入窗口中,浏览并选择导入的证书链。导入过程会提示将哪些证书存储用于 CA 证书链。根据证书类型选择 Automatically,选择证书存储。
- 导入证书链后,打开 受信任的根证书颁发机构 选项卡,以验证证书链是否已成功导入。
- 将 Internet Explorer 配置为提示允许使用不安全的 ActiveX 控制进行脚本编写。如果不允许这样做,且最终用户会尝试在标准(非 SSL)最终用户中注册证书,Internet Explorer 将阻断这些页面。
- 在 Internet Explorer 菜单中,点并选择 。
- 打开" 安全 "选项卡,然后单击" 自定义级别 "。
- 在 ActiveX Controls 和 Plugins 区域中,将 Initialize 和 script ActiveX 控制 的值更改为 Prompt。
- 导入证书链后,Internet Explorer 可以访问安全的最终用户页面。打开安全网站,例如:
https://server.example.com:8443/ca/ee/ca
- 打开结束服务页面时,可能有一个安全例外。将 CA 服务网站添加到 Internet Explorer 的 受信任的站点 列表。
- 在 Internet Explorer 菜单中,点,然后选择 。
- 打开 Security 选项卡,再单击 Sites,将 CA 站点添加到可信列表中。
- 将 CA 服务页面 的安全级别 设置为 Medium-High; 如果以后此安全设置的限制太强,则尝试将其重置为 Medium。
- 打开 兼容性 视图设置。→ ,然后通过添加特定站点到列表来启用
- 关闭浏览器。
5.4. 请求和接收证书
5.4.1. 通过"最终用户"页面请求并接收证书

- 证书请求类型.这是 PKCS#10 或 CRMF。通过子系统管理控制台创建的证书请求是 PKCS #10;通过 certutil 工具和其他实用程序创建的证书请求通常是 PKCS #10。
- 证书请求.粘贴 base-64 编码的 blob,包括 -----BEGIN NEW CERTIFICATE REQUEST----- 和 -----END NEW CERTIFICATE REQUEST----- 标记行。
- 申请人名.这是请求证书的人的通用名称。
- 申请人电子邮件.这是请求者的电子邮件地址。在签发证书时,代理或 CA 系统将使用此地址联系请求者。例如 :jdoe@someCompany.com
- 请求者电话.这是请求者的联系电话号码。
- 打开证书管理器端点页面,例如:
http
s
://server.example.com:8443/ca/ee/ca
- 点 Retrieval 选项卡。
- 填写提交证书请求时创建的请求 ID 号,然后单击。
- 下一页显示证书请求的状态。如果状态 已经完成,则证书有一个链接。点 签发的证书 链接。
- 新证书信息以用户用户打印格式显示,采用 base-64 编码格式,采用 PKCS #7 格式。可以通过此页面执行以下操作:
- 要在服务器或其他应用程序上安装此证书,请滚动到"服务器"部分中安装此证书,其中包含 base-64 编码证书。
- 将 base-64 编码的证书(包括 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 标记行)复制到文本文件。保存文本文件,并使用它来将证书的副本存储在私钥所驻留的实体的安全模块中。请参阅 第 14.3.2.1 节 “创建用户”。
5.5. 续订证书
- 相同的密钥续订 是原始密钥、配置文件和请求证书,并使用相同密钥重新创建具有新有效期期限和到期日期的新证书。这可以通过以下任一方法完成:
- 通过原始配置集(CSR)重新提交原始证书请求(CSR),或者
- 使用支持工具(如 certutil)使用原始密钥重新生成 CSR
- 重新标记证书需要使用相同的信息重新生成证书请求,以便生成新的密钥对。然后,CSR 通过原始配置集提交。
5.5.1. 相同的密钥续订
5.5.1.1. 重新使用 CSR
- agent-approved 方法需要提交要续订的证书的序列号;此方法需要 CA 代理的批准。
- 基于目录的续订需要提交要续订的证书的序列号,并且 CA 从其当前证书目录条目中提取信息。如果 ldap uid/pwd 已被成功进行身份验证,则证书会被自动批准。
- 基于证书的续订使用浏览器数据库中的证书进行身份验证,并具有重新发布相同的证书。
5.5.1.1.1. 代理(Approved)或基于目录的续订
- 打开发布证书的 CA 的端点服务页面(或其克隆)。
http
s
://server.example.com:8443/ca/ee/ca
- 单击要使用的续订表单的名称。
- 输入要续订的证书的序列号。这可以采用十进制或十六进制格式。
- 点续订按钮。
- 请求已提交。对于基于目录的续订,更新的证书将自动返回。否则,代理将批准续订请求。
5.5.1.1.2. 基于证书的续订
- 打开发布证书的 CA 的端点服务页面(或其克隆)。
http
s
://server.example.com:8443/ca/ee/ca
- 单击要使用的续订表单的名称。
- 没有输入字段,因此点击按钮。
- 提示时,选择要续订的证书。
- 请求将被提交,并且会自动返回更新的证书。
5.5.1.2. 通过使用相同密钥生成 CSR 续订
certutil
工具允许一个使用相同键重新生成 CSR,只要该密钥对位于 NSS 数据库中。这可以通过执行以下操作来实现:
- 在 NSS db 中找到对应的密钥 id:
Certutil -d <nssdb dir> -K
- 使用特定密钥生成 CSR:
Certutil -d <nssdb dir> -R -k <key id> -s <subject DN> -o <CSR output file>
- 使用现有 nickname 生成 CSR:
Certutil -d <nssdb dir> -R -k <nickname> -s <subject DN> -o <CSR output file>
5.5.2. 通过重新加密证书进行续订
5.6. 使用 CMC 提交证书请求
5.6.1. 使用 CMC 注册
.cfg
输入文件中提供的所有配置:
CMCRequest /path/to/file.cfg
CMCEnroll -d /agent's/certificate/directory -h password -n cert_nickname -r certrequest.file -p certDB_passwd [-c "comment"]
CMCEnroll(1)
man page 中详细介绍了这些工具。
5.6.1.1. 测试 CMCEnroll
- 使用 certutil 工具创建证书请求。
- 将 PKCS #10 ASCII 输出复制到文本文件。
- 运行 CMCEnroll 工具。例如,如果名为
request34.txt
的输入文件,代理证书存储在浏览器数据库中,则代理证书的证书通用名称是 CertificateManagerAgentsCert,并且证书数据库的密码是 secret,该命令如下:CMCEnroll -d ~jsmith/.mozilla/firefox/1234.jsmith -n "CertificateManagerAgentsCert" -r /export/requests/request34.txt -p secret
此命令的输出存储在文件中,该文件与 .out 一起附加到文件名中。 - 通过端点页面提交签名证书。
- 打开"终端"页面。
http
s
://server.example.com:8443/ca/ee/ca
- 从证书配置集列表中选择 CMC 注册表单。
- 将输出文件的内容粘贴到此表单 的证书请求 文本区域。
- 从粘贴的内容中删除 -----BEGIN NEW CERTIFICATE REQUEST----- 和 ----END NEW CERTIFICATE REQUEST-----。
- 填写联系信息并提交表单。
- 证书会立即被处理并返回。
- 使用 agent 页面搜索新证书。
5.6.2. CMC 注册过程
- 使用以下格式创建证书签名请求(CSR):
- PKCS #10 格式
- 证书请求消息格式(CRMF)格式
有关使用以下格式创建 CSR 的详情,请参考 第 5.2 节 “创建证书签名请求”。 - 将 admin 证书导入到客户端 NSS 数据库。例如:
- 执行以下命令,从
.p12
文件中提取 admin 客户端证书:$
openssl pkcs12 -in /root/.dogtag/instance/ca_admin_cert.p12 -clcerts -nodes -nokeys -out /root/.dogtag/instance/ca_admin_cert.crt $
PKICertImport -d . -n "CA Admin - Client Certificate" -t ",," -a -i /root/.dogtag/instance/ca_admin_cert.crt -u C重要在导入 CA Admin 客户端证书前,请确保已导入所有中间证书和 root CA 证书。- 导入与证书关联的私钥。
$ pki -c password pkcs12-import --pkcs12-file /root/.dogtag/instance/ca_admin_cert.p12 --pkcs12-password-file /root/.dogtag/instance/ca/pkcs12_password.conf
- 为 CMC 请求创建配置文件,如
/home/user_name/cmc-request.cfg
,其中包含以下内容:# NSS database directory where CA agent certificate is stored dbdir=/home/user_name/.dogtag/nssdb/ # NSS database password password=password # Token name (default is internal) tokenname=internal # Nickname for signing certificate nickname=subsystem_admin # Request format: pkcs10 or crmf format=pkcs10 # Total number of PKCS10/CRMF requests numRequests=1 # Path to the PKCS10/CRMF request # The content must be in Base-64 encoded format. # Multiple files are supported. They must be separated by space. input=/home/user_name/file.csr # Path for the CMC request output=/home/user_name/cmc-request.bin
详情请查看 CMCRequest(1) man page。 - 创建 CMC 请求:
$ CMCRequest /home/user_name/cmc-request.cfg
如果命令成功,则 CMCRequest 程序会在请求配置文件的output
参数中指定的文件中存储 CMC 请求。 - 为
HttpClient
创建配置文件,如/home/user_name/cmc-submit.cfg
,您要在以后的步骤中使用该文件来向 CA 提交 CMC 请求。在创建的文件中添加以下内容:# PKI server host name host=server.example.com # PKI server port number port=8443 # Use secure connection secure=true # Use client authentication clientmode=true # NSS database directory where the CA agent certificate is stored. dbdir=/home/user_name/.dogtag/nssdb/ # NSS database password password=password # Token name (default: internal) tokenname=internal # Nickname of signing certificate nickname=subsystem_admin # Path for the CMC request input=/home/user_name/cmc-request.bin # Path for the CMC response output=/home/user_name/cmc-response.bin
重要在 nickname 参数中指定的证书的别名
必须与之前用于 CMC 请求的证书匹配。 - 根据您请求的证书类型,将以下参数添加到上一步中创建的配置文件中:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=profile_name
例如,对于 CA 签名证书:servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCcaCert
重要当代理在下一步中提交 CMC 请求时,这个参数中指定的配置集必须使用CMCAuth
身份验证插件。在用户初始化的注册中,配置集必须使用CMCUserSignedAuth
插件。详情请查看 第 9.3 节 “CMC 身份验证插件”。 - 将 CMC 请求提交到 CA:
$ HttpClient /home/user_name/cmc-submit.cfg
- 要将 CMC 响应转换为 PKCS #7 证书链,将 CMC 响应文件传递给
CMCResponse
工具的-i
参数。例如:$ CMCResponse -i /home/user_name/cmc-response.bin -o /home/user_name/cert_chain.crt
5.6.3. 实际 CMC 注册方案
5.6.3.1. 获取系统和服务器证书
- 注册配置集
- 代理必须使用 第 9.3 节 “CMC 身份验证插件” 中列出的现有 CMC 配置集之一,或者创建一个使用
CMCAuth
身份验证机制的自定义配置集。 - CMC 签署证书
- 对于系统证书,CA 代理必须生成并签署 CMC 请求。为此,请将
CMCRequest
配置文件中的nickname
参数设置为 CA 代理的 nickname。注意CA 代理必须有权访问自己的私钥。 HttpClient
TLS Client Nickname- 在
CMCRequest
实用程序配置文件中,使用与HttpClient
配置文件中的 TLS 客户端身份验证相同的证书。 HttpClient
servlet
Parameter- 传递给
HttpClient
工具的配置文件中的servlet
是指处理请求的 CMC servlet 和注册配置文件。根据您请求的证书类型,在上一步中创建的配置文件中添加以下条目之一:- 对于 CA 签名证书:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCcaCert
- 对于 KRA 传输证书:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCkraTransportCert
- 对于 OCSP 签名证书:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCocspCert
- 对于审计签名证书:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCauditSigningCert
- 对于子系统证书:
- 对于 RSA 证书:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCsubsystemCert
- 对于 ECC 证书:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCECCsubsystemCert
- 对于 TLS 服务器证书:
- 对于 RSA 证书:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCserverCert
- 对于 ECC 证书:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCECCserverCert
- 对于管理员证书:
servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caFullCMCUserCert
- 当代理预签署 CSR 时,由于代理检查 CSR 来进行识别,因此该验证身份被视为已建立的识别。不需要额外的 CMC 特定的身份证。
- PKCS #10 文件已提供 Possession 信息,且不需要额外的 Possession(POP)。
- 在代理预批准的请求中,必须禁用
PopLinkWittnessV2
功能,因为代理会检查身份识别。
5.6.3.2. 获取用户的第一个签名证书
- 代理为 CMC 请求签名。请参阅 第 5.6.3.2.1 节 “使用代理证书签名 CMC 请求”。
- 证书注册通过共享 Secret 进行身份验证。请参阅 第 5.6.3.2.2 节 “使用共享 Secret 对证书注册进行身份验证”。
5.6.3.2.1. 使用代理证书签名 CMC 请求
5.6.3.3. 为用户获取仅限加密的证书
- 使用存储在网络安全服务(NSS)数据库中或包含用户签名证书和密钥的智能卡中的加密令牌。
- 以 PKCS #10 或 CRMF 格式生成 CSR。注意如果需要密钥归档,请使用 CRMF 格式。
- 生成 CMC 请求。由于这是仅加密的证书,因此私钥无法签名。因此,不包括概念验证(POP)。因此,注册需要两个步骤:如果初始请求成功,则以
EncryptedPOP
控制形式生成 CMC 状态。然后,用户使用响应并生成包含DecryptedPOP
控制的 CMC 请求,并在第二步提交它。- 对于第一步,除了默认参数外,用户还必须在传递到
CMCRequest
工具的配置文件中设置以下参数:identification.enable
witness.sharedSecret
identityProofV2.enable
identityProofV2.hashAlg
identityProofV2.macAlg
popLinkWitnessV2.enable
(CA 需要)popLinkWitnessV2.keyGenAlg
(CA 需要)popLinkWitnessV2.macAlg
(如果需要)request.privKeyId
详情请查看 CMCRequest(1) man page。响应包含:- CMC 加密 POP 控制
- 使用 POP 所需 错误进行
CMCStatusInfoV2
控制 - 请求 ID
- 对于第二个步骤,除了默认参数外,用户还必须在传递到
CMCRequest
工具的配置文件中设置以下参数:decryptedPop.enable
encryptedPopResponseFile
decryptedPopRequestFile
request.privKeyId
详情请查看 CMCRequest(1) man page。
5.6.3.3.1. 使用密钥 Archival 的只加密证书示例
-q POP_SUCCESS
选项而不是 -q POP_NONE
传递给 single-trip 的 CRMFPopClient
实用程序。
CRMFPoPClient
与 POP_SUCCESS 搭配使用,请参阅 第 5.2.1.3.1 节 “使用 CRMFPopClient
创建带有密钥 Archival 的 CSR” 和 第 5.2.1.3.2 节 “使用 CRMFPopClient
为基于 SharedSecret 的 CMC 创建 CSR”。
- 搜索 KRA 传输证书。例如:
$ pki cert-find --name KRA_transport_certificate_subject_CN
- 使用您在上一步中检索的 KRA 传输证书的序列号,将证书存储在文件中。例如,要在
/home/user_name/kra.cert
文件中存储带有 12345 序列号的证书:$ pki cert-show 12345 --output /home/user_name/kra.cert
- 使用
CRMFPopClient
实用程序:- 使用密钥归档创建 CSR:
- 进入请求证书的用户或实体的证书数据库目录,例如:
$ cd /home/user_name/
- 使用
CRMFPopClient
实用程序创建 CRMF 请求,其中 RSA 私钥由 KRA 传输证书包装。例如,将请求存储在/home/user_name/crmf.req
文件中:$ CRMFPopClient -d . -p token_password -n subject_DN -q POP_NONE \ -b /home/user_name/kra.cert -w "AES/CBC/PKCS5Padding" \ -v -o /home/user_name/crmf.req
记录命令显示的私钥的 ID。在第二个行的配置文件中,需要后续步骤中的request.privKeyId
参数作为值。
- 为
CRMRequest
实用程序创建一个配置文件,如/home/user_name/cmc.cfg
,其中包含以下内容:#numRequests: Total number of PKCS10 requests or CRMF requests. numRequests=1 #input: full path for the PKCS10 request or CRMF request, #the content must be in Base-64 encoded format input=/home/user_name/crmf.req #output: full path for the CMC request in binary format output=/home/user_name/cmc.req #tokenname: name of token where agent signing cert can be found #(default is internal) tokenname=internal #nickname: nickname for user certificate which will be used #to sign the CMC full request. nickname=signing_certificate #dbdir: directory for cert8.db, key3.db and secmod.db dbdir=/home/user_name/.dogtag/nssdb/ #password: password for cert8.db which stores the agent certificate password=password #format: request format, either pkcs10 or crmf format=crmf
- 创建 CMC 请求:
$ CMCRequest /home/user_name/cmc.cfg
如果命令成功,则 CMCRequest 程序会在请求配置文件的output
参数中指定的文件中存储 CMC 请求。 - 为
HttpClient
创建配置文件,如/home/user_name/cmc-submit.cfg
,您要在以后的步骤中使用该文件来向 CA 提交 CMC 请求。在创建的文件中添加以下内容:#host: host name for the http server host=server.example.com #port: port number port=8443 #secure: true for secure connection, false for nonsecure connection secure=true #input: full path for the enrollment request, the content must be in #binary format input=/home/user_name/cmc.req #output: full path for the response in binary format output=/home/user_name/cmc-response_round_1.bin #tokenname: name of token where TLS client authentication cert can be found #(default is internal) #This parameter will be ignored if secure=false tokenname=internal #dbdir: directory for cert8.db, key3.db and secmod.db #This parameter will be ignored if secure=false dbdir=/home/user_name/.dogtag/nssdb/ #clientmode: true for client authentication, false for no client authentication #This parameter will be ignored if secure=false clientmode=true #password: password for cert8.db #This parameter will be ignored if secure=false and clientauth=false password=password #nickname: nickname for client certificate #This parameter will be ignored if clientmode=false nickname=signing_certificate #servlet: servlet name servlet=/ca/ee/ca/profileSubmitUserSignedCMCFull?profileId=caFullCMCUserSignedCert
- 将 CMC 请求提交到 CA:
$ HttpClient /home/user_name/cmc-submit.cfg
如果命令成功,HTTPClient 程序会在配置文件的output
参数中指定的文件中存储 CMC 响应。 - 通过将响应文件传递给
CMCResponse
实用程序来验证响应。例如:$ CMCResponse -d /home/user_name/.dogtag/nssdb/ -i /home/user_name/cmc-response_round_1.bin
如果第一个条带成功,CMCResponse
会显示类似如下的输出:Certificates: Certificate: Data: Version: v3 Serial Number: 0x1 Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11 Issuer: CN=CA Signing Certificate,OU=pki-tomcat,O=unknown00262DFC6A5E Security Domain Validity: Not Before: Wednesday, May 17, 2017 6:06:50 PM PDT America/Los_Angeles Not After: Sunday, May 17, 2037 6:06:50 PM PDT America/Los_Angeles Subject: CN=CA Signing Certificate,OU=pki-tomcat,O=unknown00262DFC6A5E Security Domain ... Number of controls is 3 Control #0: CMC encrypted POP OID: {1 3 6 1 5 5 7 7 9} encryptedPOP decoded Control #1: CMCStatusInfoV2 OID: {1 3 6 1 5 5 7 7 25} BodyList: 1 OtherInfo type: FAIL failInfo=POP required Control #2: CMC ResponseInfo requestID: 15
- 对于第二个条带,为 Decrypt
edPOP 创建配置文件
,如/home/user_name/cmc_DecryptedPOP.cfg
,您要在以后的步骤中使用。在创建的文件中添加以下内容:#numRequests: Total number of PKCS10 requests or CRMF requests. numRequests=1 #input: full path for the PKCS10 request or CRMF request, #the content must be in Base-64 encoded format #this field is actually unused in 2nd trip input=/home/user_name/crmf.req #output: full path for the CMC request in binary format #this field is actually unused in 2nd trip output=/home/user_name/cmc2.req #tokenname: name of token where agent signing cert can be found #(default is internal) tokenname=internal #nickname: nickname for agent certificate which will be used #to sign the CMC full request. nickname=signing_certificate #dbdir: directory for cert8.db, key3.db and secmod.db dbdir=/home/user_name/.dogtag/nssdb/ #password: password for cert8.db which stores the agent #certificate password=password #format: request format, either pkcs10 or crmf format=crmf decryptedPop.enable=true encryptedPopResponseFile=/home/user_name/cmc-response_round_1.bin request.privKeyId=-25aa0a8aad395ebac7e6a19c364f0dcb5350cfef decryptedPopRequestFile=/home/user_name/cmc.DecryptedPOP.req
- 创建
DecryptPOP
CMC 请求:$ CMCRequest /home/user_name/cmc.DecryptedPOP.cfg
如果命令成功,CM CRequest 程序会在请求配置文件的decryptedPopRequestFile
参数中指定的文件中存储 CMC 请求。 - 为
HttpClient
创建配置文件,如/home/user_name/decrypted_POP_cmc-submit.cfg
,您可以使用该文件来向 CA 提交DecryptedPOP
CMC 请求。在创建的文件中添加以下内容:#host: host name for the http server host=server.example.com #port: port number port=8443 #secure: true for secure connection, false for nonsecure connection secure=true #input: full path for the enrollment request, the content must be in binary format input=/home/user_name/cmc.DecryptedPOP.req #output: full path for the response in binary format output=/home/user_name/cmc-response_round_2.bin #tokenname: name of token where TLS client authentication cert can be found (default is internal) #This parameter will be ignored if secure=false tokenname=internal #dbdir: directory for cert8.db, key3.db and secmod.db #This parameter will be ignored if secure=false dbdir=/home/user_name/.dogtag/nssdb/ #clientmode: true for client authentication, false for no client authentication #This parameter will be ignored if secure=false clientmode=true #password: password for cert8.db #This parameter will be ignored if secure=false and clientauth=false password=password #nickname: nickname for client certificate #This parameter will be ignored if clientmode=false nickname=singing_certificate #servlet: servlet name servlet=/ca/ee/ca/profileSubmitUserSignedCMCFull?profileId=caFullCMCUserCert
- 将
DecryptedPOP
CMC 请求提交到 CA:$ HttpClient /home/user_name/decrypted_POP_cmc-submit.cfg
如果命令成功,HTTPClient 程序会在配置文件的output
参数中指定的文件中存储 CMC 响应。 - 要将 CMC 响应转换为 PKCS #7 证书链,将 CMC 响应文件传递给
CMCResponse
工具的-i
参数。例如:$ CMCResponse -i /home/user_name/cmc-response_round_2.bin -o /home/user_name/certs.p7
另外,要以 PEM 格式显示各个证书,请将-v
传递给 实用程序。如果第二个条带成功,则CMCResponse
会显示类似如下的输出:Certificates: Certificate: Data: Version: v3 Serial Number: 0x2D Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11 Issuer: CN=CA Signing Certificate,OU=pki-tomcat,O=unknown00262DFC6A5E Security Domain Validity: Not Before: Thursday, June 15, 2017 3:43:45 PM PDT America/Los_Angeles Not After: Tuesday, December 12, 2017 3:43:45 PM PST America/Los_Angeles Subject: CN=user_name,UID=example,OU=keyArchivalExample ... Number of controls is 1 Control #0: CMCStatusInfo OID: {1 3 6 1 5 5 7 7 1} BodyList: 1 Status: SUCCESS
5.7. 执行大量问题
- 由于已编写此过程,需要设置多个变量来识别 CA(主机、端口)以及用于身份验证的项目(代理证书和证书数据库和密码)。例如,通过在终端中导出会话设置这些变量:
export d=/var/tmp/testDir export p=password export f=/var/tmp/server.csr.txt export nick="CA agent cert" export cahost=1.2.3.4 export caport=8443
注意本地系统必须具有一个有效的安全数据库,其中包含代理的证书。设置数据库:- 从浏览器中导出或下载代理用户证书和密钥,并保存到文件,如
agent.p12
。 - 如有必要,为安全数据库创建一个新目录。
mkdir ${d}
- 如有必要,创建新的安全数据库。
certutil -N -d ${d}
- 停止证书证书 Systemnbsp;System 实例。
systemctl stop pki-tomcatd@instance_name.service
- 使用 pk12util 导入证书。
# pk12util -i /tmp/agent.p12 -d ${d} -W p12filepassword
如果这个过程成功,命令会输出以下输出:pk12util: PKCS12 IMPORT SUCCESSFUL
- 启动证书证书系统nbsp;System 实例。
systemctl start pki-tomcatd@instance_name.service
- 必须设置两个额外的变量。标识要用于处理请求的 CA 配置集的变量,以及用于发送 post 语句的变量,以提供配置集表单的信息。
export post="cert_request_type=pkcs10&xmlOutput=true&profileId=caAgentServerCert&cert_request=" export url="/ca/ee/ca/profileSubmitSSLClient"
注意本例将证书请求提交到 caAgentServerCert 配置集(在 post 语句的 profileId 元素中标识)。可以使用任何证书配置集,包括自定义配置集。 - 测试变量配置。
echo ${d} ${p} ${f} ${nick} ${cahost} ${caport} ${post} ${url}
- 使用 (本例)Phy 10Client 生成证书 请求:
time for i in {1..10}; do /usr/bin/PKCS10Client -d ${d} -p ${p} -o ${f}.${i} -s "cn=testms${i}.example.com"; cat ${f}.${i} >> ${f}; done perl -pi -e 's/\r\n//;s/\+/%2B/g;s/\//%2F/g' ${f} wc -l ${f}
- 检查 CA 的状态和事务日志。
/etc/init.d/pki-ca status tail -f /var/log/pki-ca/transactions&
- 使用 sslget 将上一步中创建的批量证书请求文件提交到 CA 配置集接口。4例如:
cat ${f} | while read thisreq; do /usr/bin/sslget -n "${nick}" -p ${p} -d ${d} -e ${post}${thisreq} -v -r ${url} ${cahost}:${caport}; done
5.8. 在 Cisco Router 上注册证书
5.8.1. 启用 SCEP 注册
- 停止 CA 服务器,以便您可以编辑配置文件。
systemctl stop pki-tomcatd@instance_name.service
- 打开 CA 的
CS.cfg
文件。vim
/var/lib/pki/instance_name/ca/conf/CS.cfg
- 将
ca.scep.enable
设置为 true。如果参数不存在,则使用 参数添加一行。ca.scep.enable=true
- 重启 CA 服务器。
systemctl start pki-tomcatd@instance_name.service
5.8.2. 配置 SCEP 安全设置
参数 | 描述 |
---|---|
ca.scep.encryptionAlgorithm | 设置默认或首选的加密算法。 |
ca.scep.allowedEncryptionAlgorithms | 设定以逗号分隔的加密算法列表。 |
ca.scep.hashAlgorithm | 设置默认值或首选的哈希算法。 |
ca.scep.allowedHashAlgorithms | 设定以逗号分隔的允许哈希算法列表。 |
ca.scep.nickname | 为 SCEP 通信提供证书的别名。除非设置了此参数,否则默认值是使用 CA 的密钥对和证书。 |
ca.scep.nonceSizeLimit | 设定 SCEP 请求的最大值(以字节为单位)。默认值为 16 字节。 |
- 停止 CA 服务器,以便您可以编辑配置文件。
systemctl stop pki-tomcatd@instance_name.service
- 打开 CA 的
CS.cfg
文件。vim
/var/lib/pki/instance_name/ca/conf/CS.cfg
- 设置所需的安全参数,如 表 5.2 “SCEP 安全性的配置参数” 中列出的。如果参数不存在,则将其添加到
CS.cfg
文件中。ca.scep.encryptionAlgorithm=DES3 ca.scep.allowedEncryptionAlgorithms=DES3 ca.scep.hashAlgorithm=SHA1 ca.scep.allowedHashAlgorithms=SHA1,SHA256,SHA512 ca.scep.nickname=Server-Cert ca.scep.nonceSizeLimit=20
- 重启 CA 服务器。
systemctl start pki-tomcatd@instance_name.service
5.8.3. 配置路由器进行服务注册
- 路由器必须配置有 IP 地址、DNS 服务器和路由信息。
- 路由器的日期/时间必须正确。
- 必须配置路由器的主机名和 dnsname。
5.8.4. 为路由器生成 SCEP 证书
- 选择随机 PIN。
- 将 PIN 和路由器的 ID 添加到
flatfile.txt
文件中,以便路由器可以直接与 CA 进行身份验证。例如:vim /var/lib/pki/instance_name/ca/conf/flatfile.txt UID:172.16.24.238 PWD:Uojs93wkfd0IS
务必在 PWD 行后插入空行。路由器的 IP 地址可以是 IPv4 地址或 IPv6 地址。第 9.2.4 节 “配置平面文件身份验证” 中描述了使用无格式文件身份验证。 - 登录到路由器的控制台。在本例中,路由器的名称为 scep :
scep>
- 启用特权命令。
scep> enable
- 进入配置模式。
scep# conf t
- 从 root 用户开始,为证书链中每个 CA 导入 CA 证书。例如,以下命令序列将链中两个 CA 证书导入到路由器中:
scep(config)# crypto ca trusted-root1 scep(ca-root)# root CEP http://server.example.com:8080/ca/cgi-bin/pkiclient.exe scep(ca-root)# crl optional scep(ca-root)# exit scep(config)# cry ca authenticate 1 scep(config)# crypto ca trusted-root0 scep(ca-root)# root CEP http://server.example.com:8080/ca/cgi-bin/pkiclient.exe scep(ca-root)# crl optional scep(ca-root)# exit scep(config)# cry ca authenticate 0
- 设置 CA 身份,并输入用于访问 SCEP 注册程序的 URL。例如,对于 CA:
scep(config)# crypto ca identity CA scep(ca-identity)# enrollment url http://server.example.com:8080/ca/cgi-bin scep(ca-identity)# crl optional
- 获取 CA 的证书。
scep(config)# crypto ca authenticate CA Certificate has the following attributes: Fingerprint: 145E3825 31998BA7 F001EA9A B4001F57 % Do you accept this certificate? [yes/no]: yes
- 生成 RSA 密钥对。
scep(config)# crypto key generate rsa The name for the keys will be: scep.server.example.com Choose the size of the key modulus in the range of 360 to 2048 for your General Purpose Keys. Choosing a key modulus greater than 512 may take a few minutes. How many bits in the modulus [512]: Generating RSA keys ... [OK]
- 最后,在路由器上生成证书。
scep(config)# crypto ca enroll CA % % Start certificate enrollment .. % Create a challenge password. You will need to verbally provide this password to the CA Administrator in order to revoke your certificate. For security reasons your password will not be saved in the configuration. Please make a note of it. Password: secret Re-enter password: secret % The subject name in the certificate will be: scep.server.example.com % Include the router serial number in the subject name? [yes/no]: yes % The serial number in the certificate will be: 57DE391C % Include an IP address in the subject name? [yes/no]: yes % Interface: Ethernet0/0 % Request certificate from CA? [yes/no]: yes % Certificate request sent to Certificate Authority % The certificate request fingerprint will be displayed. % The 'show crypto ca certificate' command will also show the fingerprint. % Fingerprint:D89DB555 E64CC2F7 123725B4 3DBDF263 Jan 12 13:41:17.348: %CRYPTO-6-CERTRET: Certificate received from Certificate
- 关闭配置模式。
scep(config)# exit
- 为确保路由器已正确注册,请列出存储在路由器中的所有证书。
scep# show crypto ca certificates Certificate Status: Available Certificate Serial Number: 0C Key Usage: General Purpose Issuer: CN = Certificate Authority O = Sfbay Red hat Domain 20070111d12 Subject Name Contains: Name: scep.server.example.com IP Address: 10.14.1.94 Serial Number: 57DE391C Validity Date: start date: 21:42:40 UTC Jan 12 2007 end date: 21:49:50 UTC Dec 31 2008 Associated Identity: CA CA Certificate Status: Available Certificate Serial Number: 01 Key Usage: Signature Issuer: CN = Certificate Authority O = Sfbay Red hat Domain 20070111d12 Subject: CN = Certificate Authority O = Sfbay Red hat Domain 20070111d12 Validity Date: start date: 21:49:50 UTC Jan 11 2007 end date: 21:49:50 UTC Dec 31 2008 Associated Identity: CA
5.8.5. 使用从属 CA
scep(config)# crypto ca trusted-root1 scep(ca-root)# root CEP http://server.example.com:8080/ca/cgi-bin/pkiclient.exe scep(ca-root)# crl optional scep(ca-root)# exit scep(config)# cry ca authenticate 1 scep(config)# crypto ca trusted-root0 scep(ca-root)# root CEP http://server.example.com:8080/ca/cgi-bin/pkiclient.exe scep(ca-root)# crl optional scep(ca-root)# exit scep(config)# cry ca authenticate 0
scep(ca-root)# crl optional
5.8.6. 重新注册路由器
- 删除(零化)现有密钥。
scep(config)# crypto key zeroize rsa % Keys to be removed are named scep.server.example.com. Do you really want to remove these keys? [yes/no]: yes
- 删除 CA 身份。
scep(config)# no crypto ca identity CA % Removing an identity will destroy all certificates received from the related Certificate Authority. Are you sure you want to do this? [yes/no]: yes % Be sure to ask the CA administrator to revoke your certificates. No enrollment sessions are currently active.
5.8.7. 启用调试
scep# debug crypto pki callbacks
Crypto PKI callbacks debugging is onscep# debug crypto pki messages
Crypto PKI Msg debugging is onscep# debug crypto pki transactions
Crypto PKI Trans debugging is onscep#debug crypto verbose
verbose debug output debugging is on
5.8.8. 使用 SCEP 发出 ECC 证书
- 加密/解密证书 - 指定具有加密/解密能力的 RSA 证书;(以下示例中的scepRSAcert)
- 签名证书 - 获取要在客户端使用 RSA 证书以签名目的,而不是自签名证书。(以下示例中的认证证书)
sscep enroll -c ca.crt -e scepRSAcert.crt -k local.key -r local.csr -K sign.key -O sign.crt -E 3des -S sha256 -l cert.crt -u 'http://example.example.com:8080/ca/cgi-bin/pkiclient.exe'
第 6 章 使用并配置令牌管理系统:TPS 和 TKS
6.1. TPS 配置集
CS.cfg
中定义。
op.<explicit op>.<profile id>.<implicit op>.<key type>.*
op.enroll.userKey.keyGen.encryption.*
6.2. TPS 操作
显式操作
显式操作 是用户调用的操作。显式操作包括 注册
(op.enroll.*
)、格式化
(op.format.*
)和 pinReset
(op.pinReset.*
)。
隐式操作
一个 隐式 操作是操作,当处理显式操作时,会发生因为令牌的策略或状态而发生的操作。隐式操作包括 keyGen
(op.enroll.userKey.keyGen.*
)、续订
(op.enroll.userKey.renewal.*
)、update.applet
(op.enroll.userKey.update.applet.*
)和密钥更新(op.enroll.userKey.update.symmetrics.*
)。
恢复
、serverKeygen
和 revocation
。
op.enroll.userKey.keyGen.encryption.serverKeygen.archive=true op.enroll.userKey.keyGen.encryption.serverKeygen.drm.conn=kra1 op.enroll.userKey.keyGen.encryption.serverKeygen.enable=true
1
的撤销证书:
op.enroll.userKey.keyGen.encryption.recovery.keyCompromise.revokeCert=true op.enroll.userKey.keyGen.encryption.recovery.keyCompromise.revokeCert.reason=1
原因 | 代码 |
---|---|
Unspecified | 0 |
keyCompromise | 1 |
CACompromise | 2 |
affiliationChanged | 3 |
取代 | 4 |
cessationOfOperation | 5 |
certificateHold | 6 |
removeFromCRL | 8 |
privilegeWithdrawn | 9 |
AACompromise | 10 |
6.3. 令牌策略
;
"")分开。每个策略都可以打开或关闭关键字 YES
或 NO
。以下列表中的每个策略都会在其默认值中引入 - 如果策略字符串中不存在该设置,则由 TPS 执行的操作。
- RE_ENROLL=YES
- 此策略控制令牌是否允许重新注册操作。这允许重新注册的令牌(带有证书)并给出新的令牌。如果设置为
NO
,则服务器在尝试重新注册时会返回错误。这个策略不需要特殊配置。注册将继续进行标准注册配置文件,该配置文件可能会最初注册令牌。 - RENEW=NO;RENEW_KEEP_OLD_ENC_CERTS=YES
- 续订可让令牌在其配置集生成的证书放置在令牌上。如果
RENEW
设为YES
,则从企业安全客户端(ESC)的简单注册将会导致续订,而不是如上所示的重新注册。RENEW_KEEP_OLD_ENC_CERTS
设置决定续订操作是否保留加密证书的旧版本。保留前面的证书可让用户访问使用旧证书加密的数据。将此选项设置为NO
,表示任何使用旧证书加密的任何内容都将不再可以被恢复。配置:op.enroll.userKey.renewal.encryption.ca.conn=ca1 op.enroll.userKey.renewal.encryption.ca.profileId=caTokenUserEncryptionKeyRenewal op.enroll.userKey.renewal.encryption.certAttrId=c2 op.enroll.userKey.renewal.encryption.certId=C2 op.enroll.userKey.renewal.encryption.enable=true op.enroll.userKey.renewal.encryption.gracePeriod.after=30 op.enroll.userKey.renewal.encryption.gracePeriod.before=30 op.enroll.userKey.renewal.encryption.gracePeriod.enable=false op.enroll.userKey.renewal.keyType.num=2 op.enroll.userKey.renewal.keyType.value.0=signing op.enroll.userKey.renewal.keyType.value.1=encryption op.enroll.userKey.renewal.signing.ca.conn=ca1 op.enroll.userKey.renewal.signing.ca.profileId=caTokenUserSigningKeyRenewal op.enroll.userKey.renewal.signing.certAttrId=c1 op.enroll.userKey.renewal.signing.certId=C1 op.enroll.userKey.renewal.signing.enable=true op.enroll.userKey.renewal.signing.gracePeriod.after=30 op.enroll.userKey.renewal.signing.gracePeriod.before=30 op.enroll.userKey.renewal.signing.gracePeriod.enable=false
这种类型的续订配置会对基本用户Key
标准注册配置集进行镜像,并带有几个特定于续订的设置。需要这种奇偶校验的原因是,我们需要续订最初注册到令牌中的 certs 数量和类型,然后再进行续订。 - FORCE_FORMAT=NO
- 如果启用,这个策略会导致每个注册操作都提示操作。这是一个最后一个步骤选项,允许在不用户将其返回到管理员的情况下重置令牌。如果设置为
YES
,则用户启动的每个注册操作将导致格式发生,可能会将令牌重置为已格式化状态。不需要额外的配置。为执行标准格式操作相同的 TPS 配置集出现简单的格式。 - PIN_RESET=NO
- 此策略决定了已经注册的令牌是否可以使用 ESC 执行显式"pin reset"更改。此值必须设置为
YES
,否则尝试的操作将拒绝服务器出错。配置:op.enroll.userKey.pinReset.enable=true op.enroll.userKey.pinReset.pin.maxLen=10 op.enroll.userKey.pinReset.pin.maxRetries=127 op.enroll.userKey.pinReset.pin.minLen=4
在上例中,minLen
和maxLen
的设置会限制选择密码的长度,maxRetries
设置将令牌设置为仅在锁定前重试次数。
POLICYNAME>=YES
或 <POLICYNAME> =NO
,才能被 TPS 识别。
6.4. 令牌操作和策略处理
- 格式
- Format 操作(用户发起)以完全空白状态获取令牌,由制造商提供,并在其上加载 Coolkey 小程序。配置示例:
#specify that we want authentication for format. We almost always want this at true: op.format.userKey.auth.enable=true #specify the ldap authentication configuration, so TPS knows where to validate credentials: op.format.userKey.auth.id=ldap1 #specify the connection the the CA op.format.userKey.ca.conn=ca1 #specify id of the card manager applet on given token op.format.userKey.cardmgr_instance=A0000000030000 #specify if we need to match the visa cuid to the nist sp800sp derivation algorithm KDD value. Mostly will be false: op.format.userKey.cuidMustMatchKDD=false #enable ability to restrict key changoever to a specific range of key set: op.format.userKey.enableBoundedGPKeyVersion=true #enable the phone home url to write to the token: op.format.userKey.issuerinfo.enable=true #actual home url to write to token: op.format.userKey.issuerinfo.value=http://server.example.com:8080/tps/phoneHome #specify whether to request a login from the client. Mostly true, external reg may want this to be false: op.format.userKey.loginRequest.enable=true #Actual range of desired keyset numbers: op.format.userKey.maximumGPKeyVersion=FF op.format.userKey.minimumGPKeyVersion=01 #Whether or not to revoke certs on the token after a format, and what the reason will be if so: op.format.userKey.revokeCert=true op.format.userKey.revokeCert.reason=0 #This will roll back the reflected keyyset version of the token in the tokendb. After a failed key changeover operation. This is to keep the value in sync with reality in the tokendb. Always false, since this version of TPS avoids this situation now: op.format.userKey.rollbackKeyVersionOnPutKeyFailure=false #specify connection to the TKS: op.format.userKey.tks.conn=tks1 #where to get the actual applet file to write to the token: op.format.userKey.update.applet.directory=/usr/share/pki/tps/applets #Allows a completely blank token to be recognized by TPS. Mostly should be true: op.format.userKey.update.applet.emptyToken.enable=true #Always should be true, not supported: op.format.userKey.update.applet.encryption=true #Actual version of the applet file we want to upgrade to. This file will have a name something like: 1.4.54de7a99.ijc: op.format.userKey.update.applet.requiredVersion=1.4.54de790f #Symm key changeover: op.format.userKey.update.symmetricKeys.enable=false op.format.userKey.update.symmetricKeys.requiredVersion=1 #Make sure the token db is in sync with reality. Should always be true: op.format.userKey.validateCardKeyInfoAgainstTokenDB=true
- 注册
- 基本注册操作采用格式化的令牌,并将 certs 和密钥放在令牌中以个性化令牌。以下配置示例将介绍如何控制它。示例显示了不处理续订和内部恢复的基本注册。这里未讨论的设置在 Format 部分中提供,或者没有关键。
op.enroll.userKey.auth.enable=true op.enroll.userKey.auth.id=ldap1 op.enroll.userKey.cardmgr_instance=A0000000030000 op.enroll.userKey.cuidMustMatchKDD=false op.enroll.userKey.enableBoundedGPKeyVersion=true op.enroll.userKey.issuerinfo.enable=true op.enroll.userKey.issuerinfo.value=http://server.example.com:8080/tps/phoneHome #configure the encryption cert and keys we want on the token: #connection the the CA, which issues the certs: op.enroll.userKey.keyGen.encryption.ca.conn=ca1 #Profile id we want the CA to use to issue our encrytion cert: op.enroll.userKey.keyGen.encryption.ca.profileId=caTokenUserEncryptionKeyEnrollment #These two cover the indexes of the certs written to the token. Each cert needs a unique index or “slot”. In our sample the enc cert will occupy slot 2 and the signing cert, shown later, will occupy slot 1. Avoid overlap with these numbers: op.enroll.userKey.keyGen.encryption.certAttrId=c2 op.enroll.userKey.keyGen.encryption.certId=C2 op.enroll.userKey.keyGen.encryption.cuid_label=$cuid$ #specify size of generated private key: op.enroll.userKey.keyGen.encryption.keySize=1024 op.enroll.userKey.keyGen.encryption.keyUsage=0 op.enroll.userKey.keyGen.encryption.keyUser=0 #specify pattern for what the label of the cert will look like when the cert nickname is displayed in browsers and mail clients: op.enroll.userKey.keyGen.encryption.label=encryption key for $userid$ #specify if we want to overwrite certs on a re-enrollment operation. This is almost always the case: op.enroll.userKey.keyGen.encryption.overwrite=true #The next several settings specify the capabilities that the private key on the final token will inherit. For instance this will determine if the cert can be used for encryption or digital signatures. There are settings for both the private and public key. op.enroll.userKey.keyGen.encryption.private.keyCapabilities.decrypt=true op.enroll.userKey.keyGen.encryption.private.keyCapabilities.derive=false op.enroll.userKey.keyGen.encryption.private.keyCapabilities.encrypt=false op.enroll.userKey.keyGen.encryption.private.keyCapabilities.private=true op.enroll.userKey.keyGen.encryption.private.keyCapabilities.sensitive=true op.enroll.userKey.keyGen.encryption.private.keyCapabilities.sign=false op.enroll.userKey.keyGen.encryption.private.keyCapabilities.signRecover=false op.enroll.userKey.keyGen.encryption.private.keyCapabilities.token=true op.enroll.userKey.keyGen.encryption.private.keyCapabilities.unwrap=true op.enroll.userKey.keyGen.encryption.private.keyCapabilities.verify=false op.enroll.userKey.keyGen.encryption.private.keyCapabilities.verifyRecover=false op.enroll.userKey.keyGen.encryption.private.keyCapabilities.wrap=false op.enroll.userKey.keyGen.encryption.privateKeyAttrId=k4 op.enroll.userKey.keyGen.encryption.privateKeyNumber=4 op.enroll.userKey.keyGen.encryption.public.keyCapabilities.decrypt=false op.enroll.userKey.keyGen.encryption.public.keyCapabilities.derive=false op.enroll.userKey.keyGen.encryption.public.keyCapabilities.encrypt=true op.enroll.userKey.keyGen.encryption.public.keyCapabilities.private=false op.enroll.userKey.keyGen.encryption.public.keyCapabilities.sensitive=false op.enroll.userKey.keyGen.encryption.public.keyCapabilities.sign=false op.enroll.userKey.keyGen.encryption.public.keyCapabilities.signRecover=false op.enroll.userKey.keyGen.encryption.public.keyCapabilities.token=true op.enroll.userKey.keyGen.encryption.public.keyCapabilities.unwrap=false op.enroll.userKey.keyGen.encryption.public.keyCapabilities.verify=false op.enroll.userKey.keyGen.encryption.public.keyCapabilities.verifyRecover=false op.enroll.userKey.keyGen.encryption.public.keyCapabilities.wrap=true #The following index numbers correspond to the index or slot that the private and public keys occupy. The common formula we use is that the public key index will be 2 * cert id + 1, and the private key index, shown above will be 2 * cert id. In this example the cert id is 2, so the key ids will be 4 and 5 respectively. When composing these, be careful not to create conflicts. This applies to the signing key section below. op.enroll.userKey.keyGen.encryption.publicKeyAttrId=k5 op.enroll.userKey.keyGen.encryption.publicKeyNumber=5 #specify if, when a certificate is slated for revocation, based on other rules, we want to check to see if some other token is using this cert in a shared situation. If this is set to true, and this situation is found the cert will not be revoked until the last token wants to revoke this cert: op.enroll.userKey.keyGen.encryption.recovery.destroyed.holdRevocationUntilLastCredential=false #specify, if we want server side keygen, if we want to have that generated key archived to the drm. This is almost always the case, since we want the ability to later recover a cert and its encryption private key back to a new token: op.enroll.userKey.keyGen.encryption.serverKeygen.archive=true #connection to drm to generate the key for us: op.enroll.userKey.keyGen.encryption.serverKeygen.drm.conn=kra1 #specify server side keygen of the encryption private key. This most often will be desired: op.enroll.userKey.keyGen.encryption.serverKeygen.enable=true #This setting tells us how many certs we want to enroll for this TPS profile, in the case “userKey”. Here we want 2 total certs. The next values then go on to index into the config what two types of certs we want, signing and encryption: op.enroll.userKey.keyGen.keyType.num=2 op.enroll.userKey.keyGen.keyType.value.0=signing op.enroll.userKey.keyGen.keyType.value.1=encryption #configure the signing cert and keys we want on the token the settings for these are similar to the encryption settings already discussed, except the capability flags presented below, since this is a signing key. op.enroll.userKey.keyGen.signing.ca.conn=ca1 op.enroll.userKey.keyGen.signing.ca.profileId=caTokenUserSigningKeyEnrollment op.enroll.userKey.keyGen.signing.certAttrId=c1 op.enroll.userKey.keyGen.signing.certId=C1 op.enroll.userKey.keyGen.signing.cuid_label=$cuid$ op.enroll.userKey.keyGen.signing.keySize=1024 op.enroll.userKey.keyGen.signing.keyUsage=0 op.enroll.userKey.keyGen.signing.keyUser=0 op.enroll.userKey.keyGen.signing.label=signing key for $userid$ op.enroll.userKey.keyGen.signing.overwrite=true op.enroll.userKey.keyGen.signing.private.keyCapabilities.decrypt=false op.enroll.userKey.keyGen.signing.private.keyCapabilities.derive=false op.enroll.userKey.keyGen.signing.private.keyCapabilities.encrypt=false op.enroll.userKey.keyGen.signing.private.keyCapabilities.private=true op.enroll.userKey.keyGen.signing.private.keyCapabilities.sensitive=true op.enroll.userKey.keyGen.signing.private.keyCapabilities.sign=true op.enroll.userKey.keyGen.signing.private.keyCapabilities.signRecover=true op.enroll.userKey.keyGen.signing.private.keyCapabilities.token=true op.enroll.userKey.keyGen.signing.private.keyCapabilities.unwrap=false op.enroll.userKey.keyGen.signing.private.keyCapabilities.verify=false op.enroll.userKey.keyGen.signing.private.keyCapabilities.verifyRecover=false op.enroll.userKey.keyGen.signing.private.keyCapabilities.wrap=false op.enroll.userKey.keyGen.signing.privateKeyAttrId=k2 op.enroll.userKey.keyGen.signing.privateKeyNumber=2 op.enroll.userKey.keyGen.signing.public.keyCapabilities.decrypt=false op.enroll.userKey.keyGen.signing.public.keyCapabilities.derive=false op.enroll.userKey.keyGen.signing.public.keyCapabilities.encrypt=false op.enroll.userKey.keyGen.signing.public.keyCapabilities.private=false op.enroll.userKey.keyGen.signing.public.keyCapabilities.sensitive=false op.enroll.userKey.keyGen.signing.public.keyCapabilities.sign=false op.enroll.userKey.keyGen.signing.public.keyCapabilities.signRecover=false op.enroll.userKey.keyGen.signing.public.keyCapabilities.token=true op.enroll.userKey.keyGen.signing.public.keyCapabilities.unwrap=false op.enroll.userKey.keyGen.signing.public.keyCapabilities.verify=true op.enroll.userKey.keyGen.signing.public.keyCapabilities.verifyRecover=true op.enroll.userKey.keyGen.signing.public.keyCapabilities.wrap=false op.enroll.userKey.keyGen.signing.publicKeyAttrId=k3 op.enroll.userKey.keyGen.signing.publicKeyNumber=3
- pin Reset
- 第 6.3 节 “令牌策略” 中讨论 pin reset 的配置,因为 pin reset 依赖于策略来决定其是否是合法执行的。
- 续订
- 第 6.3 节 “令牌策略” 中会讨论续订的配置,因为续订依赖于策略来确定是否必须按照已注册的令牌执行或不受注册的令牌执行。
- 恢复
- 当 TPS 用户界面用户将之前的活跃令牌标记为一个不良状态(如"lost"或"destroyed)"时,恢复会被隐式设置。发生这种情况后,下一个注册了同一用户的新令牌后,会遵循以下配置,以将证书从用户旧令牌恢复到这个新令牌。此操作的最终结果是用户将具有一个新的物理令牌,该令牌可能包含从旧令牌中恢复的加密证书,以便用户可以根据需要继续加密和解密数据。通常还会将新的签名证书放在这个令牌上,如以下示例配置示例所示。以下是支持状态列表,其中令牌可以手动放在 TPS 用户界面中,如配置中所示:
tokendb._069=#
-DAMAGED(1)
: Corresponds 在恢复配置中销毁
。当令牌被物理损坏时使用。tokendb._070=#
-PERM_LOST(2)
: Corresponds tokeyCompromise
in recovery configuration.永久丢失令牌时使用。tokendb._071=#
-SUSPENDED(3)
: Corresponds toonHold
in the restore configuration.临时使用令牌时,用户希望再次查找它。tokendb._072=#
-TERMINATED(6)
: Corresponds 在恢复配置中终止
。用于出于内部原因而取出来自服务的令牌。
恢复配置示例:#When a token is marked destroyed, don’t revoke the certs on the token unless all other tokens do not have the certs included: op.enroll.userKey.keyGen.encryption.recovery.destroyed.holdRevocationUntilLastCredential=false #specify if we even want to revoke certs a token is marked destroyed: op.enroll.userKey.keyGen.encryption.recovery.destroyed.revokeCert=false #if we want to revoke any certs here, specify the reason for revocation that will be sent to the CA: op.enroll.userKey.keyGen.encryption.recovery.destroyed.revokeCert.reason=0 #speficy if we want to revoke expired certs when marking the token destroyed: op.enroll.userKey.keyGen.encryption.recovery.destroyed.revokeExpiredCerts=false
其他设置用于指定在对新令牌进行恢复操作时应使用什么类型的静态恢复(当原始令牌被标记为销毁时)。支持以下方案:- 恢复 Last(
RecoverLast
):恢复要放置在令牌中的最新加密证书。 - 生成新密钥和 Recover Last(
GenerateNewKeyAndRecoverLast
): Same as Recover Last,但也会生成新的加密证书并将其上传到令牌。然后新令牌将有两个证书。 - 生成新密钥(
GenerateNewKey
): 生成新加密证书并将其放在令牌中。不要恢复任何旧的证书。
例如:op.enroll.userKey.keyGen.encryption.recovery.destroyed.scheme=RecoverLast
以下配置示例确定如何恢复标记为永久丢失的令牌:op.enroll.userKey.keyGen.encryption.recovery.keyCompromise.holdRevocationUntilLastCredential=false op.enroll.userKey.keyGen.encryption.recovery.keyCompromise.revokeCert=true op.enroll.userKey.keyGen.encryption.recovery.keyCompromise.revokeCert.reason=1 op.enroll.userKey.keyGen.encryption.recovery.keyCompromise.revokeExpiredCerts=false op.enroll.userKey.keyGen.encryption.recovery.keyCompromise.scheme=GenerateNewKey # Section when a token is marked terminated. op.enroll.userKey.keyGen.encryption.recovery.terminated.holdRevocationUntilLastCredential=false op.enroll.userKey.keyGen.encryption.recovery.terminated.revokeCert=true op.enroll.userKey.keyGen.encryption.recovery.terminated.revokeCert.reason=1 op.enroll.userKey.keyGen.encryption.recovery.terminated.revokeExpiredCerts=false op.enroll.userKey.keyGen.encryption.recovery.terminated.scheme=GenerateNewKey # This section details the recovery profile with respect to which certs and of what kind get recovered on the token. op.enroll.userKey.keyGen.recovery.destroyed.keyType.num=2 op.enroll.userKey.keyGen.recovery.destroyed.keyType.value.0=signing op.enroll.userKey.keyGen.recovery.destroyed.keyType.value.1=encryption
最后,以下示例确定系统将对旧令牌上的签名证书做了哪些操作。在大多数情况下,应使用GenerateNewKey
恢复方案来避免使用签名私钥的多个副本(例如:在新令牌中恢复的另外一个新令牌),另一个由其他人永久丢失但由其他人发现的旧令牌。op.enroll.userKey.keyGen.recovery.keyCompromise.keyType.value.0=signing op.enroll.userKey.keyGen.recovery.keyCompromise.keyType.value.1=encryption op.enroll.userKey.keyGen.recovery.onHold.keyType.num=2 op.enroll.userKey.keyGen.recovery.onHold.keyType.value.0=signing op.enroll.userKey.keyGen.recovery.onHold.keyType.value.1=encryption op.enroll.userKey.keyGen.signing.recovery.destroyed.holdRevocationUntilLastCredential=false op.enroll.userKey.keyGen.signing.recovery.destroyed.revokeCert=true op.enroll.userKey.keyGen.signing.recovery.destroyed.revokeCert.reason=0 op.enroll.userKey.keyGen.signing.recovery.destroyed.revokeExpiredCerts=false op.enroll.userKey.keyGen.signing.recovery.destroyed.scheme=GenerateNewKey op.enroll.userKey.keyGen.signing.recovery.keyCompromise.holdRevocationUntilLastCredential=false op.enroll.userKey.keyGen.signing.recovery.keyCompromise.revokeCert=true op.enroll.userKey.keyGen.signing.recovery.keyCompromise.revokeCert.reason=1 op.enroll.userKey.keyGen.signing.recovery.keyCompromise.revokeExpiredCerts=false op.enroll.userKey.keyGen.signing.recovery.keyCompromise.scheme=GenerateNewKey op.enroll.userKey.keyGen.signing.recovery.onHold.holdRevocationUntilLastCredential=false op.enroll.userKey.keyGen.signing.recovery.onHold.revokeCert=true op.enroll.userKey.keyGen.signing.recovery.onHold.revokeCert.reason=6 op.enroll.userKey.keyGen.signing.recovery.onHold.revokeExpiredCerts=false op.enroll.userKey.keyGen.signing.recovery.onHold.scheme=GenerateNewKey op.enroll.userKey.keyGen.signing.recovery.terminated.holdRevocationUntilLastCredential=false op.enroll.userKey.keyGen.signing.recovery.terminated.revokeCert=true op.enroll.userKey.keyGen.signing.recovery.terminated.revokeCert.reason=1 op.enroll.userKey.keyGen.signing.recovery.terminated.revokeExpiredCerts=false op.enroll.userKey.keyGen.signing.recovery.terminated.scheme=GenerateNewKey # Configuration for the case when we mark a token “onHold” or temporarily lost op.enroll.userKeyTemporary.keyGen.encryption.recovery.onHold.revokeCert=true op.enroll.userKeyTemporary.keyGen.encryption.recovery.onHold.revokeCert.reason=0 op.enroll.userKeyTemporary.keyGen.encryption.recovery.onHold.scheme=RecoverLast op.enroll.userKeyTemporary.keyGen.recovery.onHold.keyType.num=2 op.enroll.userKeyTemporary.keyGen.recovery.onHold.keyType.value.0=signing op.enroll.userKeyTemporary.keyGen.recovery.onHold.keyType.value.1=encryption op.enroll.userKeyTemporary.keyGen.signing.recovery.onHold.revokeCert=true op.enroll.userKeyTemporary.keyGen.signing.recovery.onHold.revokeCert.reason=0 op.enroll.userKeyTemporary.keyGen.signing.recovery.onHold.scheme=GenerateNewKey
- 小应用程序更新
- 以下示例演示了如何配置 Coolkey 小程序更新操作。此操作可以在格式、注册和 PIN 重置操作的过程中执行:
op.format.userKey.update.applet.directory=/usr/share/pki/tps/applets op.format.userKey.update.applet.emptyToken.enable=true op.format.userKey.update.applet.encryption=true op.format.userKey.update.applet.requiredVersion=1.4.54de790f
其中一些选项已在 Format 部分进行了演示。它们提供必要的信息,以确定是否应该允许进行应用程序升级,在哪里查找小应用程序文件,以及将令牌升级到的小版本。requiredVersion
中的版本映射到目录
下的文件名。 - 密钥更新
- 此操作可在格式、注册和 PIN 重置操作的过程中进行,允许用户从制造商提供的默认全局平台设置版本进行升级。
- TPS
- 以下选项指示 TPS 在代表给定令牌请求的下一个格式操作时将密钥从 1 升级到 2。完成后,TKS 必须生成将写入令牌的三个新密钥,之后,令牌必须与同一 TPS 和 TKS 安装一起使用,否则它将被锁定。
op.format.userKey.update.symmetricKeys.enable=true op.format.userKey.update.symmetricKeys.requiredVersion=2
您还可以指定小于当前版本来降级密钥集。 - TKS
- 如上所述,必须将 TKS 配置为生成要写入令牌的新密钥。首先,新的 master 键标识符
02
必须映射到 TKSCS.cfg
中的 PKCS #11 对象 nickname,如下例所示:tks.mk_mappings.#02#01=internal:new_master tks.defKeySet.mk_mappings.#02#01=internal:new_master
以上会将一个键设置号映射到 TKS NSS 数据库中存在的实际 master 密钥。Master 密钥由 ID 标识,如01
。TKS 将这些 ID 映射到映射的masterKeyId
部分中指定的 PKCS #11 对象 nicknames。因此,第一个数字会在主密钥版本被更新时更新,第二个数字保持一致。当尝试从 1 升级到版本 2 时,映射决定了如何查找主键别名,这些名称将用于生成新密钥集的 3 个部分。上例中的internal
设置引用主密钥所在的令牌的名称。它还可以是带有名称(如nethsm
)的外部 HSM 模块。strongnew_master
是 master 键 nickname 本身的示例。
6.5. 内部注册
op.enroll.userKey.auth.enable=true op.enroll.userKey.auth.id=ldap1
op.enroll.userKey.keyGen.encryption.ca.conn=ca1 op.enroll.userKey.keyGen.encryption.serverKeygen.drm.conn=kra1
op.enroll.userKey.tks.conn=tks1
6.6. 外部注册
6.6.1. 启用外部注册
externalReg.allowRecoverInvalidCert.enable=true externalReg.authId=ldap1 externalReg.default.tokenType=externalRegAddToToken externalReg.delegation.enable=true externalReg.enable=true externalReg.recover.byKeyID=false externalReg.format.loginRequest.enable=true externalReg.mappingResolver=keySetMappingResolver
6.6.2. 自定义用户 LDAP 记录属性名称
auths.instance.ldap1.externalReg.certs.recoverAttributeName=certsToAdd auths.instance.ldap1.externalReg.cuidAttributeName=tokenCUID auths.instance.ldap1.externalReg.tokenTypeAttributeName=tokenType
6.6.3. 配置 certsToAdd 属性
certsToAdd
属性采用以下格式的多个值:
<cert serial # in decimal>,<CA connector ID>,<key ID>,<kra connector ID>
59,ca1,0,kra1
certsToAdd
属性时,TPS 会假定问题中的证书已在令牌中已存在,并且应该保留它。这一概念被称为 关键保留。
tokenType: externalRegAddToToken certstoadd: 59,ca1,0,kra1 certstoadd: 134,ca1,0,kra1 Certstoadd: 24,ca1
6.6.4. 用户匹配强制的令牌
tokencuid
),则不会强制执行 CUID 匹配。
Tokencuid: a10192030405028001c0
certstoadd: 59,ca1
,0,kra1
6.6.5. 委托支持
- Authentication certificate/keys:CN 包含委派的名称和唯一 ID。主题备用名称(SAN)扩展包含执行的主名称(UPN)。
- 加密证书:执行主加密证书的确切副本。
- 签名证书:CN 包含委派的名称和唯一 ID。SAN 包含执行执行的 RFC822Name。
externalReg.delegation.enable=true
op.enroll.delegateISEtoken.keyGen.encryption.ca.profileId
参数设置为 /var/lib/pki/instance_name/tps/conf/CS.cfg
文件来 caTokenUserDelegateAuthKeyEnrollment:
op.enroll.delegateISEtoken.keyGen.encryption.ca.profileId=caTokenUserDelegateAuthKeyEnrollment
6.6.6. SAN 和 DN 模式
auths.instance. <authID > .ldapStringAttributes
in authentication instance configuration 指定在身份验证过程中检索哪些属性。例如:
auths.instance.ldap1.ldapStringAttributes=mail,cn,uid,edipi,pcc,firstname,lastname,exec-edipi,exec-pcc,exec-mail,certsToAdd,tokenCUID,tokenType
$auth. <attribute name> $
.例如:
op.enroll.delegateIEtoken.keyGen.authentication.SANpattern=$auth.exec-edipi$.$auth.exec-pcc$@EXAMPLE.com op.enroll.delegateIEtoken.keyGen.authentication.dnpattern=cn=$auth.firstname$.$auth.lastname$.$auth.edipi$,e=$auth.mail$,o=TMS Org
- 在 TPS 上,在配置集 delegateIEtoken 中
op.enroll.delegateIEtoken.keyGen.authentication.ca.profileId=caTokenUserDelegateAuthKeyEnrollment
- 在 CA 中,在注册配置集 caTokenUserDelegateAuthKeyEnrollment 中
subjectDNInputImpl
插件必须指定为输入之一,以便上面的 TPS 配置集指定 DN:input.i2.class_id=subjectDNInputImpl input.i2.name=subjectDNInputImpl
同样,要允许上述 TPS 配置集指定 SAN,必须指定subjectAltNameExtInputImpl
插件:input.i3.class_id=subjectAltNameExtInputImpl input.i3.name=subjectAltNameExtInputImpl
还必须指定subjAltExtpattern
:policyset.set1.p6.default.params.subjAltExtPattern_0=(UTF8String)1.3.6.1.4.1.311.20.2.3,$request.req_san_pattern_0$
在上例中,OID1.3.6.1.4.1.311.20.2.3
是 User Principal Name(UPN)的 OID,而request.req_san_pattern_0
是delegateIEtoken
SAN 模式中指定的第一个 SAN 模式。
SANpattern
中指定多个 SAN,用逗号(",
")分隔。在 CA 端,需要以以下格式定义对应的 subjAltExtPattern
:
policyset.<policy set id>.<policy id>.default.params.subjAltExtPattern_<ordered number>=
policyset.set1.p6.default.params.subjAltExtPattern_0= policyset.set1.p6.default.params.subjAltExtPattern_1= ...
例 6.1. SANpattern 和 DNpattern 配置
givenName: user1a mail: user1a@example.org firstname: user1a edipi: 123456789 pcc: AA exec-edipi: 999999999 exec-pcc: BB exec-mail: user1b@EXAMPLE.com tokenType: delegateISEtoken certstoadd: 59,ca1,0,kra1
委派IEtoken
包含:
SANpattern
:op.enroll.delegateISEtoken.keyGen.authentication.SANpattern=$auth.exec-edipi$.$auth.exec-pcc$@EXAMPLE.com
DNPattern
:op.enroll.delegateISEtoken.keyGen.authentication.dnpattern=cn=$auth.firstname$.$auth.lastname$.$auth.edipi$,e=$auth.mail$,o=TMS Org
caTokenUserDelegateAuthKeyEnrollment
contains:
input.i2.class_id=subjectDNInputImpl input.i2.name=subjectDNInputImpl input.i3.class_id=subjectAltNameExtInputImpl input.i3.name=subjectAltNameExtInputImpl policyset.set1.p6.constraint.class_id=noConstraintImpl policyset.set1.p6.constraint.name=No Constraint policyset.set1.p6.default.class_id=subjectAltNameExtDefaultImpl policyset.set1.p6.default.name=Subject Alternative Name Extension Default policyset.set1.p6.default.params.subjAltExtGNEnable_0=true policyset.set1.p6.default.params.subjAltExtPattern_0=(UTF8String)1.3.6.1.4.1.311.20.2.3,$request.req_san_pattern_0$ policyset.set1.p6.default.params.subjAltExtType_0=OtherName policyset.set1.p6.default.params.subjAltNameExtCritical=false policyset.set1.p6.default.params.subjAltNameNumGNs=1
Subject: CN=user1a..123456789,E=user1a@example.org,O=TMS Org Identifier: Subject Alternative Name - 2.5.29.17 Critical: no Value: OtherName: (UTF8String)1.3.6.1.4.1.311.20.2.3,999999999.BB@EXAMPLE.com
6.7. 映射解析器配置
FilterMappingResolver
。本节将涵盖其配置。
6.7.1. key Set Mapping Resolver
externalReg.mappingResolver=<keySet mapping resolver name>
externalReg.mappingResolver=keySetMappingResolver
mappingResolver.keySetMappingResolver.class_id=filterMappingResolverImpl mappingResolver.keySetMappingResolver.mapping.0.filter.appletMajorVersion=0 mappingResolver.keySetMappingResolver.mapping.0.filter.appletMinorVersion=0 mappingResolver.keySetMappingResolver.mapping.0.filter.keySet= mappingResolver.keySetMappingResolver.mapping.0.filter.tokenATR= mappingResolver.keySetMappingResolver.mapping.0.filter.tokenCUID.end=a1000000000000000000 mappingResolver.keySetMappingResolver.mapping.0.filter.tokenCUID.start=a0000000000000000000 mappingResolver.keySetMappingResolver.mapping.0.target.keySet=defKeySet mappingResolver.keySetMappingResolver.mapping.1.filter.appletMajorVersion=1 mappingResolver.keySetMappingResolver.mapping.1.filter.appletMinorVersion=1 mappingResolver.keySetMappingResolver.mapping.1.filter.keySet= mappingResolver.keySetMappingResolver.mapping.1.filter.tokenATR=1234 mappingResolver.keySetMappingResolver.mapping.1.filter.tokenCUID.end= mappingResolver.keySetMappingResolver.mapping.1.filter.tokenCUID.start= mappingResolver.keySetMappingResolver.mapping.1.target.keySet=defKeySet mappingResolver.keySetMappingResolver.mapping.2.filter.appletMajorVersion= mappingResolver.keySetMappingResolver.mapping.2.filter.appletMinorVersion= mappingResolver.keySetMappingResolver.mapping.2.filter.keySet= mappingResolver.keySetMappingResolver.mapping.2.filter.tokenATR= mappingResolver.keySetMappingResolver.mapping.2.filter.tokenCUID.end= mappingResolver.keySetMappingResolver.mapping.2.filter.tokenCUID.start= mappingResolver.keySetMappingResolver.mapping.2.target.keySet=jForte mappingResolver.keySetMappingResolver.mapping.order=0,1,2
0
、1
和 2
。它们使用 mappingResolver.keySetMappingResolver.mapping.order=0,1,2
行排序。这个顺序表示将首先针对映射过滤器 0
运行输入参数;只有在它们不匹配该过滤器时,才会在映射顺序中尝试下一个参数。例如,如果评估具有以下特征的令牌:
CUID=a0000000000000000011 appletMajorVersion=0 appletMinorVersion=0
0
并为其分配目标(配置为 defKeySet
),因为 小应用程序版本匹配,并且 CUID 不在该映射的 CUID 启动和结束范围内。
CUID=b0000000000000000000 ATR=2222 appletMajorVersion=1 appletMinorVersion=1
0,
因为它位于指定的 CUID 范围之外。它也会失败映射 1
,因为应用程序版本匹配时 ATR 也会失败。以上令牌将分配给映射 2
及其目标 J Forte
。
2
如何为任何过滤器没有分配。这会导致映射与所有令牌匹配,并有效地使其成为"默认"值。像这样的映射顺序必须以映射顺序指定,因为不会评估任何其他映射。
6.7.2. 令牌类型(TPS)Mapping Resolver
tokenType
映射解析器: formatProfileMappingResolver
、enrollProfileMappingResolver
和 pinResetProfileMappingResolver
。与上一节中讨论的外部注册案例相比,内部注册案例实际是从定义的映射解析器计算的。
op.<op>.mappingResolver=<mapping resolver name>
op.enroll.mappingResolver=enrollProfileMappingResolver
enrollProfileMappingResolver
:
mappingResolver.enrollProfileMappingResolver.class_id=filterMappingResolverImpl mappingResolver.enrollProfileMappingResolver.mapping.0.filter.appletMajorVersion=1 mappingResolver.enrollProfileMappingResolver.mapping.0.filter.appletMinorVersion= mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenATR= mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenCUID.end=b1000000000000000000 mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenCUID.start=b0000000000000000000 mappingResolver.enrollProfileMappingResolver.mapping.0.filter.tokenType=userKey mappingResolver.enrollProfileMappingResolver.mapping.0.target.tokenType=userKey mappingResolver.enrollProfileMappingResolver.mapping.1.filter.appletMajorVersion=1 mappingResolver.enrollProfileMappingResolver.mapping.1.filter.appletMinorVersion= mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenATR= mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenCUID.end=a0000000000000001000 mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenCUID.start=a0000000000000000000 mappingResolver.enrollProfileMappingResolver.mapping.1.filter.tokenType=soKey mappingResolver.enrollProfileMappingResolver.mapping.1.target.tokenType=soKey mappingResolver.enrollProfileMappingResolver.mapping.2.filter.appletMajorVersion= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.appletMinorVersion= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenATR= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenCUID.end= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenCUID.start= mappingResolver.enrollProfileMappingResolver.mapping.2.filter.tokenType= mappingResolver.enrollProfileMappingResolver.mapping.2.target.tokenType=userKey mappingResolver.enrollProfileMappingResolver.mapping.order=1,0,2
ProfileMappingResolver
定义了三个映射。映射名为 0
、1
和 2
。mappingResolver.enrollProfileMappingResolver.mapping.order=1,0,2
行定义处理映射的顺序。如果令牌与映射匹配,则不会对顺序进行进一步映射;如果与映射不匹配,就会尝试下一个映射。
CUID=a0000000000000000011 appletMajorVersion=1 appletMinorVersion=0 extension: tokenType=soKey
1
的过滤器匹配,小应用程序版本匹配,CUID 在指定的开始和结束范围内会失败,扩展名 tokenType
匹配。因此,此令牌将被分配该映射的目标 - soKey
.
CUID=b0000000000000000010 appletMajorVersion=1 appletMinorVersion=1
然后它还将失败映射 0,
因为缺少 tokenType
扩展。然后,此令牌将匹配映射 2
,因为它没有指定的过滤器以匹配上一个过滤器的任何令牌。
6.8. 身份验证配置
UidPwdDirAuthentication
)进行基于目录的身份验证。身份验证实例使用以下模式在 CS.cfg
文件中定义:
auths.instance.<auths ID>.*
op.enroll.userKey.auth.id=ldap1
auths.impl.UidPwdDirAuth.class=com.netscape.cms.authentication.UidPwdDirAuthentication auths.instance.ldap1.pluginName=UidPwdDirAuth auths.instance.ldap1.authCredName=uid auths.instance.ldap1.dnpattern= auths.instance.ldap1.externalReg.certs.recoverAttributeName=certsToAdd auths.instance.ldap1.externalReg.cuidAttributeName=tokenCUID auths.instance.ldap1.externalReg.tokenTypeAttributeName=tokenType auths.instance.ldap1.ldap.basedn=dc=sjc,dc=example,dc=com auths.instance.ldap1.ldap.ldapauth.authtype=BasicAuth auths.instance.ldap1.ldap.ldapauth.bindDN= auths.instance.ldap1.ldap.ldapauth.bindPWPrompt=ldap1 auths.instance.ldap1.ldap.ldapauth.clientCertNickname=subsystemCert cert-pki-tomcat auths.instance.ldap1.ldap.ldapconn.host=host1.EXAMPLE.com auths.instance.ldap1.ldap.ldapconn.port=389 auths.instance.ldap1.ldap.ldapconn.secureConn=False auths.instance.ldap1.ldap.ldapconn.version=3 auths.instance.ldap1.ldap.maxConns=15 auths.instance.ldap1.ldap.minConns=3 auths.instance.ldap1.ldapByteAttributes= auths.instance.ldap1.ldapStringAttributes=mail,cn,uid,edipi,pcc,firstname,lastname,exec-edipi,exec-pcc,exec-mail,certsToAdd,tokenCUID,tokenType auths.instance.ldap1.ldapStringAttributes._000=################################# auths.instance.ldap1.ldapStringAttributes._001=# For isExternalReg auths.instance.ldap1.ldapStringAttributes._002=# attributes will be available as auths.instance.ldap1.ldapStringAttributes._003=# $<attribute>$ auths.instance.ldap1.ldapStringAttributes._004=# attributes example: auths.instance.ldap1.ldapStringAttributes._005=#mail,cn,uid,edipi,pcc,firstname,lastname,exec-edipi,exec-pcc,exec-mail,certsToAdd,tokenCUID,tokenType auths.instance.ldap1.ldapStringAttributes._006=################################# auths.instance.ldap1.pluginName=UidPwdDirAuth auths.instance.ldap1.ui.description.en=This authenticates user against the LDAP directory. auths.instance.ldap1.ui.id.PASSWORD.credMap.authCred=pwd auths.instance.ldap1.ui.id.PASSWORD.credMap.msgCred.extlogin=PASSWORD auths.instance.ldap1.ui.id.PASSWORD.credMap.msgCred.login=password auths.instance.ldap1.ui.id.PASSWORD.description.en=LDAP Password auths.instance.ldap1.ui.id.PASSWORD.name.en=LDAP Password auths.instance.ldap1.ui.id.UID.credMap.authCred=uid auths.instance.ldap1.ui.id.UID.credMap.msgCred.extlogin=UID auths.instance.ldap1.ui.id.UID.credMap.msgCred.login=screen_name auths.instance.ldap1.ui.id.UID.description.en=LDAP User ID auths.instance.ldap1.ui.id.UID.name.en=LDAP User ID auths.instance.ldap1.ui.retries=3 auths.instance.ldap1.ui.title.en=LDAP Authentication
UidPwdDirAuthentication
身份验证实例类似,因为它们都使用相同的插件处理。但是,TPS 在 CA 配置之上需要几个额外的参数。
auths.instance.ldap1.ui.id.UID.name.en=LDAP User ID
和 auths.instance.ldap1.ui.id.PASSWORD.name.en=LDAP 密码
参数控制;此配置可向客户端显示 UID/password 对为"LDAP User ID"和"LDAP Password"。这两个参数都可以自定义。
credMap.authCred
条目配置内部身份验证插件如何接受与之显示的信息,以及 credMap.msgCred
条目配置如何将此信息传递给 TPS。这些字段允许您使用自定义插件实施,并且应保留其默认值,除非您使用自定义身份验证插件。
6.9. 连接器
tps.connector.ca1.enable=true tps.connector.ca1.host=host1.EXAMPLE.com tps.connector.ca1.maxHttpConns=15 tps.connector.ca1.minHttpConns=1 tps.connector.ca1.nickName=subsystemCert cert-pki-tomcat tps.connector.ca1.port=8443 tps.connector.ca1.timeout=30 tps.connector.ca1.uri.enrollment=/ca/ee/ca/profileSubmitSSLClient tps.connector.ca1.uri.getcert=/ca/ee/ca/displayBySerial tps.connector.ca1.uri.renewal=/ca/ee/ca/profileSubmitSSLClient tps.connector.ca1.uri.revoke=/ca/ee/subsystem/ca/doRevoke tps.connector.ca1.uri.unrevoke=/ca/ee/subsystem/ca/doUnrevoke tps.connector.kra1.enable=true tps.connector.kra1.host=host1.EXAMPLE.com tps.connector.kra1.maxHttpConns=15 tps.connector.kra1.minHttpConns=1 tps.connector.kra1.nickName=subsystemCert cert-pki-tomcat tps.connector.kra1.port=8443 tps.connector.kra1.timeout=30 tps.connector.kra1.uri.GenerateKeyPair=/kra/agent/kra/GenerateKeyPair tps.connector.kra1.uri.TokenKeyRecovery=/kra/agent/kra/TokenKeyRecovery tps.connector.tks1.enable=true tps.connector.tks1.generateHostChallenge=true tps.connector.tks1.host=host1.EXAMPLE.com tps.connector.tks1.keySet=defKeySet tps.connector.tks1.maxHttpConns=15 tps.connector.tks1.minHttpConns=1 tps.connector.tks1.nickName=subsystemCert cert-pki-tomcat tps.connector.tks1.port=8443 tps.connector.tks1.serverKeygen=true tps.connector.tks1.timeout=30 tps.connector.tks1.tksSharedSymKeyName=sharedSecret tps.connector.tks1.uri.computeRandomData=/tks/agent/tks/computeRandomData tps.connector.tks1.uri.computeSessionKey=/tks/agent/tks/computeSessionKey tps.connector.tks1.uri.createKeySetData=/tks/agent/tks/createKeySetData tps.connector.tks1.uri.encryptData=/tks/agent/tks/encryptData
op.enroll.userKey.keyGen.signing.ca.conn=ca1
6.10. 撤销路由配置
tps.connCAList=ca1,ca2
nssdb
中添加 CA 签名证书并设置信任:
#
cd <TPS instance directory>/alias
#
certutil -d . -A -n <CA signing cert nickname> -t “CT,C,C” -i <CA signing cert b64 file name>
tps.connector.ca1.caNickname=caSigningCert cert-pki-tomcat CA
tps.connector.ca1.caSKI=i9wOnN0QZLkzkndAB1MKMcjbRP8=
6.11. 设置服务器端密钥生成
- KRA 的 TPS 连接器参数:
tps.connector.kra1.enable=true tps.connector.kra1.host=host1.EXAMPLE.com tps.connector.kra1.maxHttpConns=15 tps.connector.kra1.minHttpConns=1 tps.connector.kra1.nickName=subsystemCert cert-pki-tomcat tps.connector.kra1.port=8443 tps.connector.kra1.timeout=30 tps.connector.kra1.uri.GenerateKeyPair=/kra/agent/kra/GenerateKeyPair tps.connector.kra1.uri.TokenKeyRecovery=/kra/agent/kra/TokenKeyRecovery
- 用于服务器端密钥生成的 TPS 配置集参数:
op.enroll.userKey.keyGen.encryption.serverKeygen.archive=true op.enroll.userKey.keyGen.encryption.serverKeygen.drm.conn=kra1 op.enroll.userKey.keyGen.encryption.serverKeygen.enable=true
设置serverKeygen.enable=true
选项,使serverKeygen.archive
生效。重要LunaSA HSM 不支持 RSA 加密时比 2048 字节小的密钥大小。例如:要将密钥大小为 2048 字节,请在/var/lib/pki/instance_name/tps/conf/CS.cfg
文件中设置以下参数:op.enroll.userKey.keyGen.encryption.keySize=2048
- TKS 配置:
- 以下配置了用于 TKS 和 KRA(通过 TPS)通信的传输证书的别名:
tks.drm_transport_cert_nickname=transportCert cert-pki-tomcat KRA
引用的传输证书还必须存在于 TKS 实例安全模块中。例如:transportCert cert-pki-tomcat KRA u,u,u
- KRA 配置
- 根据 PKCS#11 令牌,参数
kra.keygen.temporaryPairs
、kra.keygen.sensitivePairs
和kra.keygen.keygen.extractablePairs
可以为密钥生成选项自定义。这些参数默认设置为false
。这些参数的以下值已使用 Red Hat Certificate System 支持的一些安全模块进行了测试:- NSS(在 FIPS 模式中):
kra.keygen.extractablePairs=true
- nCipher nShield Connect 6000(默认情况下,不指定工作):
- 指定 RSA 密钥:
kra.keygen.temporaryPairs=true
(不要指定任何其他参数。)生成 ECC 密钥:kra.keygen.temporaryPairs=true kra.keygen.sensitivePairs=false kra.keygen.extractablePairs=true
- LunaSA CKE - 密钥导出模型(非FIPS 模式):
kra.keygen.temporaryPairs=true kra.keygen.sensitivePairs=true kra.keygen.extractablePairs=true
6.12. 设置新密钥设置
- TKS 配置
- 在 TKS 中使用
/var/lib/pki/instance_name/tks/conf/CS.cfg
文件中的以下选项配置默认密钥:tks.defKeySet._000=## tks.defKeySet._001=## Axalto default key set: tks.defKeySet._002=## tks.defKeySet._003=## tks.defKeySet.mk_mappings.#02#01=<tokenname>:<nickname> tks.defKeySet._004=## tks.defKeySet.auth_key=#40#41#42#43#44#45#46#47#48#49#4a#4b#4c#4d#4e#4f tks.defKeySet.kek_key=#40#41#42#43#44#45#46#47#48#49#4a#4b#4c#4d#4e#4f tks.defKeySet.mac_key=#40#41#42#43#44#45#46#47#48#49#4a#4b#4c#4d#4e#4f tks.defKeySet.nistSP800-108KdfOnKeyVersion=00 tks.defKeySet.nistSP800-108KdfUseCuidAsKdd=false
以上配置定义了特定于在 TMS 中可以使用的某些类型或类的设置。最重要的部分是 3 开发人员或(开箱即用)会话密钥,它们用于在对称密钥移交前创建安全频道。其他类型的键对这些键可能有不同的默认值。描述nistSP800
键 实用程序方法的设置控制是否使用了此方法。具体来说,tks.defKeySet.nistSP800-108KdfOnKeyVersion
选项的值决定了将使用 NIST 版本。nistSP800-108KdfUseCuidAsKdd
选项允许您在处理过程中使用传统的密钥 ID 值 CUID。较新的 KDD 值最常被使用,因此默认禁用这个选项(false
)。这可让您配置新密钥集,以启用对新类密钥的支持。例 6.2. 为
jForte
类启用支持要启用对jForte
类的支持,请设置:tks.jForte._000=## tks.jForte._001=## SAFLink's jForte default key set: tks.jForte._002=## tks.jForte._003=## tks.jForte.mk_mappings.#02#01=<tokenname>:<nickname> tks.jForte._004=## tks.jForte.auth_key=#30#31#32#33#34#35#36#37#38#39#3a#3b#3c#3d#3e#3f tks.jForte.kek_key=#50#51#52#53#54#55#56#57#58#59#5a#5b#5c#5d#5e#5f tks.jForte.mac_key=#40#41#42#43#44#45#46#47#48#49#4a#4b#4c#4d#4e#4f tks.jForte.nistSP800-108KdfOnKeyVersion=00 tks.jForte.nistSP800-108KdfUseCuidAsKdd=false
请注意,与上例相比,3 静态会话键的区别。证书系统支持 Secure Channel Protocol 03(SCP03)用于 Giesecke & Devrient(G&D)Smart Cafe 6 智能卡。要在 TKS 中启用对那些智能卡的 SCP03 支持,请在/var/lib/pki/instance_name/tks/conf/CS.cfg
文件中设置:tks.defKeySet.prot3.divers=emv tks.defKeySet.prot3.diversVer1Keys=emv tks.defKeySet.prot3.devKeyType=DES3 tks.defKeySet.prot3.masterKeyType=DES3
- TPS 配置
- 当支持的客户端试图对令牌执行操作时,必须将 TPS 配置为识别新密钥集。默认
defKeySet
最常被使用。决定 TPS 中的keySet
的主要方法涉及 第 6.7 节 “映射解析器配置”。有关建立此解析器机制所需的具体设置,请查看链接部分。如果 KeySet Mapping Resolver 不存在,则 TPS 提供了几个回退方法来确定正确的keySet
:- 您可以将
tps.connector.tks1.keySet=defKeySet
=defKeySet 添加到 TPS 的CS.cfg
配置文件中。 - 某些客户端可以配置为显式传递所需的
keySet
值。但是,企业安全客户端在此刻没有此功能。 - 当 TPS 根据所需方法计算正确的
keySet
时,到 TKS 的所有请求来帮助创建安全频道传递keySet
值。然后 TKS 可以使用自己的keySet
配置(上述步骤)来确定如何继续。
6.13. 设置新主密钥
过程 6.1. 创建新主密钥
- 获取访问 TKS 安全数据库所需的内部 PIN:
#
cat /var/lib/pki/pki-tomcat/tks/conf/password.conf internal=649713464822 internaldb=secret12 replicationdb=-752230707 - 打开 TKS 实例
的别名/
目录:#
cd /var/lib/pki/pki-tomcat/alias - 使用 tkstool 程序生成新的 master 密钥。例如:
#
tkstool -M -n new_master -d /var/lib/pki/pki-tomcat/alias -h <token_name> Enter Password or Pin for "NSS Certificate DB": Generating and storing the master key on the specified token . . . Naming the master key "new_master" . . . Computing and displaying KCV of the master key on the specified token . . . new_master key KCV: CA5E 1764 - 验证密钥是否已正确添加到数据库中:
#
tkstool -L -d . slot: NSS User Private Key and Certificate Services token: NSS Certificate DB Enter Password or Pin for "NSS Certificate DB": <0> new_master
6.13.1. 生成和传输主密钥(主要 Ceremony)
过程 6.2. 生成并传输 Wrapped 主密钥
- 获取访问 Token Key Service 安全数据库所需的内部 PIN:
#
cat /var/lib/pki/pki-tomcat/tks/conf/password.conf internal=649713464822 internaldb=secret12 replicationdb=-752230707 - 打开 TKS 实例
别名/
目录:#
cd /var/lib/pki/pki-tomcat/alias - 创建名为 transport 的
传输
密钥:#
tkstool -T -d . -n transport注意tkstool 程序输出每个生成的三个会话键的密钥共享和 KCV 值。将这些文件保存到文件中,因为稍后会在这个流程中的新数据库中重新生成传输密钥,并在丢失密钥时重新生成密钥。 - 出现提示时,填写数据库密码。然后,根据屏幕的说明生成随机 seed。
A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full: |************************************************************| Finished. Type the word "proceed" and press enter
- 下一提示将生成一系列会话密钥。按照屏幕说明操作,直到最终消息:
Successfully generated, stored, and named the transport key!
- 使用 transport 密钥生成并打包一个 master 密钥,并将其存储在名为
的文件
:#
tkstool -W -d . -n new_master -t transport -o file Enter Password or Pin for "NSS Certificate DB": Retrieving the transport key (for wrapping) from the specified token . . . Generating and storing the master key on the specified token . . . Naming the master key "new_master" . . . Successfully generated, stored, and named the master key! Using the transport key to wrap and store the master key . . . Writing the wrapped data (and resident master key KCV) into the file called "file" . . . wrapped data: 47C0 06DB 7D3F D9ED FE91 7E6F A7E5 91B9 master key KCV: CED9 4A7B (computed KCV of the master key residing inside the wrapped data) - 将嵌套的 master 密钥复制到适当的位置或工具中。
- 如有必要,在 HSM 或设备中生成新安全数据库:
#
tkstool -N -d <directory>或者,添加-I
选项来生成与最初在新数据库中生成的键相同。以这种方式重新生成 transport 密钥需要您输入会话密钥共享和 KCV,用于这个过程早期生成的每个会话密钥。#
tkstool -I -d <directory> -n verify_transport - 使用 transport 密钥来取消包装存储在 文件中的主密钥。提示时提供安全数据库 PIN:
#
tkstool -U -d directory -n new_master -t verify_transport -i file Enter Password or Pin for "NSS Certificate DB": Retrieving the transport key from the specified token (for unwrapping) . . . Reading in the wrapped data (and resident master key KCV) from the file called "file" . . . wrapped data: 47C0 06DB 7D3F D9ED FE91 7E6F A7E5 91B9 master key KCV: CED9 4A7B (pre-computed KCV of the master key residing inside the wrapped data) Using the transport key to temporarily unwrap the master key to recompute its KCV value to check against its pre-computed KCV value . . . master key KCV: CED9 4A7B (computed KCV of the master key residing inside the wrapped data) master key KCV: CED9 4A7B (pre-computed KCV of the master key residing inside the wrapped data) Using the transport key to unwrap and store the master key on the specified token . . . Naming the master key "new_master" . . . Successfully unwrapped, stored, and named the master key! - 验证密钥是否已正确添加到数据库中:
#
tkstool -L -d slot: NSS User Private Key and Certificate Services token: NSS Certificate DB Enter Password or Pin for "NSS Certificate DB": <0> transport <1> new_master
6.15. 将不同的 Applets 用于不同的 SCP 版本
/var/lib/instance_name/tps/conf/CS.cfg
文件中的以下参数指定应该为每个令牌操作载入哪个小应用程序:
op.operation.token_type.update.applet.requiredVersion=version
op.operation.token_type.update.applet.requiredVersion.prot.protocol_version=version
- 格式
- enroll
- pinReset
例 6.3. 为注册操作设置协议版本
userKey
令牌执行注册操作时,要为 SCP03 和所有其他协议配置特定的小应用程序:
- 编辑
/var/lib/instance_name/tps/conf/CS.cfg
文件:- 设置
op.enroll.userKey.update.applet.requiredVersion
参数,以指定默认使用的 小程序。例如:op.enroll.userKey.update.applet.requiredVersion=1.4.58768072
- 设置
op.enroll.userKey.update.applet.requiredVersion.prot.3
参数,以配置应用程序证书系统用于 SCP03 协议。例如:op.enroll.userKey.update.applet.requiredVersion.prot.3=1.5.558cdcff
- 重启证书系统:
systemctl restart pki-tomcatd@instance_name.service
第 7 章 撤销证书和发布 CRL
7.1. 关于撤销证书
- 如果 CA 收到了撤销请求并批准,则撤销证书。
- 将撤销的证书状态提供给需要验证其有效状态的第三方或应用程序。
7.1.1. 用户初始化的调用
7.1.2. 撤销证书的原因
- 0.Unspecified; 没有特定原因。
- 1.与证书关联的私钥已被破坏。
- 2.与发布证书的 CA 关联的私钥已被破坏。
- 3.证书的所有者不再与证书颁发者相关,并且没有证书获得的访问权限或不再需要它的权限。
- 4.另一个证书取代了这个证书。
- 5.发布证书的 CA 已创建要操作的 CA。
- 6.该证书正在保存等待的进一步操作。它被视为已撤销,但将来可能会发生,以便证书再次激活并有效。
- 8.该证书将从 CRL 中删除,因为它已从拥有中移除。这只适用于 delta CRL。
- 9.该证书会被撤销,因为证书所有者的权限已被撤回。
7.1.3. CRL 签发点
7.1.4. Delta CRLs
7.1.5. 发布 CRL
7.1.6. 证书调用页
UserRevocation.html
,它的格式允许 SSL/TSL 客户端被验证地撤销客户端或个人证书。该文件位于 /var/lib/instance_name/webapps/subsystem_type/ee/subsystem_type
目录中。
7.2. 执行 CMC Revocation
subjectDN
属性的用户证书签署撤销请求。然后用户可以向证书管理器发送签名请求。
CMCRequest
.详情请查看 第 7.2.1 节 “使用CMCRequest
撤销证书”。CMCRevoke
.详情请查看 第 7.2.2 节 “使用CMCRevoke
撤销证书”。
CMCRequest
工具生成 CMC 重新调用请求,因为它提供了大于 CMCRevoke
的选项。
7.2.1. 使用 CMCRequest
撤销证书
CMCRequest
撤销证书:
- 为 CMC 撤销请求创建一个配置文件,如
/home/user_name/cmc-request.cfg
,其中包含以下内容:#numRequests: Total number of PKCS10 requests or CRMF requests. numRequests=1 #output: full path for the CMC request in binary format output=/home/user_name/cmc.revoke.userSigned.req #tokenname: name of token where user signing cert can be found #(default is internal) tokenname=internal #nickname: nickname for user signing certificate which will be used #to sign the CMC full request. nickname=signer_user_certificate #dbdir: directory for cert8.db, key3.db and secmod.db dbdir=/home/user_name/.dogtag/nssdb/ #password: password for cert8.db which stores the user signing #certificate and keys password=myPass #format: request format, either pkcs10 or crmf. format=pkcs10 ## revocation parameters revRequest.enable=true revRequest.serial=45 revRequest.reason=unspecified revRequest.comment=user test revocation revRequest.issuer=issuer revRequest.sharedSecret=shared_secret
- 创建 CMC 请求:
# CMCRequest /home/user_name/cmc-request.cfg
如果命令成功,则CMCRequest
程序会在请求配置文件的output
参数中指定的文件中存储 CMC 请求。 - 创建配置文件,如
/home/user_name/cmc-submit.cfg
,您可以在稍后的步骤中使用该文件,将 CMC 撤销请求提交到 CA。在创建的文件中添加以下内容:#host: host name for the http server host=>server.example.com #port: port number port=8443 #secure: true for secure connection, false for nonsecure connection secure=true #input: full path for the enrollment request, the content must be #in binary format input=/home/user_name/cmc.revoke.userSigned.req #output: full path for the response in binary format output=/home/user_name/cmc.revoke.userSigned.resp #tokenname: name of token where SSL client authentication certificate #can be found (default is internal) #This parameter will be ignored if secure=false tokenname=internal #dbdir: directory for cert8.db, key3.db and secmod.db #This parameter will be ignored if secure=false dbdir=/home/user_name/.dogtag/nssdb/ #clientmode: true for client authentication, false for no client #authentication. This parameter will be ignored if secure=false clientmode=true #password: password for cert8.db #This parameter will be ignored if secure=false and clientauth=false password=password #nickname: nickname for client certificate #This parameter will be ignored if clientmode=false nickname=signer_user_certificate
重要如果 CMC 撤销请求已签名,则将secure
和clientmode
参数设置为 true,再填充nickname
参数。 - 根据对请求签名的,Http
Client
配置文件中的servlet
参数必须相应地设置:- 如果代理对请求进行了签名,请设置:
servlet=/ca/ee/ca/profileSubmitCMCFull
- 如果用户签名了请求,请设置:
servlet=/ca/ee/ca/profileSubmitSelfSignedCMCFull
- 提交 CMC 请求:
# HttpClient /home/user_name/cmc-submit.cfg
CMCRequest
撤销证书的详情,请查看 CMCRequest(1) man page。
7.2.2. 使用 CMCRevoke
撤销证书
- 0 - 未指定
- 1 - 密钥已被破坏
- 2 - CA 密钥已被破坏
- 3 - 员工附属机构已改变
- 4 - 证书已被替换
- 5 - 操作考虑
- 6 - 证书位于
7.2.2.1. 测试 CMCRevoke
- 为现有证书创建 CMC 撤销请求。
CMCRevoke -d/path/to/agent-cert-db -nnickname -iissuerName -sserialName -mreason -ccomment
例如,如果包含代理证书的目录是 ~jsmith/.mozilla/firefox/,则证书的别名为 AgentCert,并且命令的序列号为 22,如下所示:CMCRevoke -d"~jsmith/.mozilla/firefox/" -n"ManagerAgentCert" -i"cn=agentAuthMgr" -s22 -m0 -c"test comment"
注意在引号中包含空格的值会包括在引号中。重要在 参数及其值之间没有空格。例如,指定序列号为 26 的序列号为-s26
,而不是-s 26
。 - 打开"终端"页面。
http
s
://server.example.com:8443/ca/ee/ca
- 选择 Revocation 选项卡。
- 选择菜单上的 CMC Revoke 链接。
- 将 CMCRevoke 的输出粘贴到文本区域。
- 从粘贴的内容中删除 -----BEGIN NEW CERTIFICATE REQUEST----- 和 ----END NEW CERTIFICATE REQUEST-----。
- 点。
- 返回后的页面应确认已撤销了正确的证书。
7.3. 发出 CRL
- 证书管理器使用其 CA 签名证书密钥来签署 CRL。要为 CRL 使用单独的签名密钥对,请设置 CRL 签名密钥并更改证书管理器配置,以使用此密钥为 CRL 签名。如需更多信息,请参阅 第 7.3.4 节 “将 CA 设置为使用其他证书来签名 CRL”。
- 设置 CRL 发行点。已经为 master CRL 设置并启用了一个发布点。
图 7.1. 默认 CRL 发行点
可以创建 CRL 的额外发布点。详情请查看 第 7.3.1 节 “配置发行得分”。根据配置发布点时所设置的选项,还会有五种 CRL 的 CRL 类型来定义 CRL 将列出的内容:- Master CRL 包含来自整个 CA 的已撤销证书的列表。
- ARL 是一个授权撤销列表,仅包含已撤销的 CA 证书。
- 带有过期证书的 CRL 包括撤销在 CRL 中过期的证书。
- 证书配置集中的 CRL 决定基于最初创建证书的配置集包括的已撤销证书。
- 由原因代码的 CRL 决定 基于撤销原因代码中包含的已撤销证书。
- 为每个发布点配置 CRL。详情请查看 第 7.3.2 节 “为每个发行点配置 CRL”。
- 设置为发出点配置的 CRL 扩展。详情请查看 第 7.3.3 节 “设置 CRL 扩展”。
- 通过为该发出点、DeltaCRLIndicator 或 CRLumber 启用扩展来为发布点设置 delta CRL。
- 设置 CRLDistributionPoint 扩展,以包含有关发布点的信息。
- 将发布 CRL 设置为文件、LDAP 目录或 OCSP 响应程序。有关设置发布的详情,请参阅 第 8 章 发布证书和 CRL。
7.3.1. 配置发行得分
- 打开 CertificateCertificate Systemnbsp;System Console。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,从左侧导航菜单中展开 Certificate Manager。然后选择 CRLsuing Points。
- 要编辑发布点,请选择发布点,然后单击。唯一可以编辑的参数是发出点的名称,以及发出点是否启用还是禁用。要添加发布点,请单击。CRL Issuing Point Editor 窗口将打开。
图 7.2. CRL Issuing Point Editor
注意如果某些字段没有足够大来读取内容,请拖动该图标中的一个窗口。填写以下字段:- 启用。如果选择,启用发出点;取消选择"禁用"。
- CRL 签发者名称。为发出点指定名称;不允许使用空格。
- 描述。描述发布点。
- 点击。
7.3.2. 为每个发行点配置 CRL
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在导航树中,选择 Certificate Manager,然后选择 CRL Issuing Points。
- 选择 Issuing Points 条目下方的发布点名称。
- 通过提供发布点的 Update 选项卡中的信息,配置 CRL 如何和更新的频率。此选项卡有两个部分,即 Update Schema 和 Update Frequency。
- Update Schema 部分有以下选项:
- 启用 CRL 生成。此复选框设置是否为该发出点生成 CRL。
- 每 # delta(s)生成完整的 CRL。此字段根据更改数量设置如何创建 CRL 的频率。
- 下次在完整的 CRL 中扩展更新时间。这提供了一个选项,可在生成的 CRLs 中设置 nextUpdate 字段。
nextUpdate
参数显示发布下一个 CRL 的日期,无论它是完整的还是 delta CRL。当使用完整和 delta CRL 的组合时,在完整 CRL 中启用下一次
更新时间将使下一个Update
参数在完整的 CRL 中显示,当下 一个完整的 CRL 时。否则,完整 CRL 中的nextUpdate
参数会显示何时发出下一个 delta CRL,因为增量是要发布的下一个 CRL。
- Update Frequency 部分在生成 CRL 并发布到目录中时设置不同的间隔。
- 每次证书被撤销或释放证书时,都会为。这会将证书管理器设置为在每次撤销证书时生成 CRL。证书管理器会在生成 CRL 时尝试向已配置的目录发出 CRL。如果 CRL 较大,则生成 CRL 会消耗大量时间。将证书管理器配置为在每次撤销证书时生成 CRL,可能会使服务器参与大量时间;在此期间,服务器将无法更新接收任何更改的目录。不建议在标准安装中使用此设置。应该选择这个选项来立即测试撤销,例如测试服务器是否将 CRL 发送到平面文件。
- 下次更新宽限期。如果证书管理器以特定频率更新 CRL,可以将服务器配置为在下次更新时有一个宽限期,以允许创建 CRL 并发出它。例如,如果服务器被配置为每 20 分钟更新一次 CRL,则宽限期为 2 分钟,如果 CRL 在 16:00 上更新,则 CRL 会重新更新 16:18。
重要由于一个已知问题,当当前设置 full 和 delta Certificate Revocation List 计划时,每次从 hold 选项撤销或释放证书时,更新 CRL
也要求您填充两个宽限期
设置。因此,要选择此选项,首先需要选择更新 CRL 每一个
选项,并为下一步更新宽限期 # 分钟
输入数字。 - Cache 选项卡设置是否启用缓存以及缓存频率。
图 7.3. CRL Cache 选项卡
- 启用 CRL 缓存。这个复选框启用了缓存,用于创建 delta CRL。如果禁用了缓存,则不会创建 delta CRL。有关缓存的详情请参考 第 7.1 节 “关于撤销证书”。
- 更新每个缓存。此字段设定将缓存写入内部数据库的频率。设置为 0, 在每次撤销证书时,将缓存写入数据库。
- 启用缓存恢复。这个复选框允许恢复缓存。
- 启用 CRL 缓存测试。此复选框为特定 CRL 发出点启用 CRL 性能测试。使用这个选项生成的 CRL 不应在部署的 CA 中使用,因为为测试目的发布的 CRL 包含只为性能测试生成的数据。
- Format 选项卡设定创建的 CRL 的格式和内容。CRL Format 和 CRL 内容有两个部分。
图 7.4. CRL Format 选项卡
- CRL Format 部分有两个选项:
- 撤销列表签名算法 是一个允许加密 CRL 的密码的下拉列表。
- 允许 CRL v2 的扩展是一个复选框,为 发出点启用 CRL v2 扩展。如果启用了此项,请设置 第 7.3.3 节 “设置 CRL 扩展” 中描述的所需 CRL 扩展。
注意必须开启扩展来创建 delta CRL。 - CRL Contents 部分有三个复选框,用于设置要在 CRL 中包含哪些类型的证书:
- 包括过期的证书。这包括已撤销已过期的证书。如果启用此项,有关已撤销证书的信息会在证书过期后保留在 CRL 中。如果没有启用此项,则证书过期时会删除关于已撤销证书的信息。
- 仅 CA 证书.这只包括 CRL 中的 CA 证书。选择这个选项会创建一个授权 Revocation List(ARL),它仅列出已撤销的 CA 证书。
- 根据配置文件发布的证书.这只包括根据列出的配置集发布的证书 ; 指定多个配置集,输入用逗号分开的列表。
- 点。
- 此发布点允许扩展,并可配置。详情请查看 第 7.3.3 节 “设置 CRL 扩展”。
7.3.3. 设置 CRL 扩展
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在导航树中,选择 Certificate Manager,然后选择 CRL Issuing Points。
- 选择发行点条目下的 发布点 名称,并在发布点下选择 CRL Extension 条目。右窗格显示 CRL Extensions Management 选项卡,它列出了配置的扩展。
图 7.5. CRL 扩展
- 要修改规则,请选择它,再单击。
- 大多数扩展有两个选项,启用它们并对其进行设置,无论它们是否至关重要。有些人需要更多信息。提供所有必填值。有关每个扩展以及这些扩展的参数,请参阅 第 B.4.2 节 “标准 X.509 v3 CRL 扩展参考”。
- 点击。
- 点查看所有规则的更新状态。
7.3.4. 将 CA 设置为使用其他证书来签名 CRL
CS.cfg
文件配置此功能的说明,请参阅在 Red Hat Certificate System Planning、安装和部署指南中的设置 CA 使用其他证书来签名 CRL 部分。
7.3.5. 从缓存生成 CRL
enableCRLCache
参数。但是,在生产环境中 不应 启用 Enable CRL 缓存测试
参数。
7.3.5.1. 在控制台中配置 CRL Generation from Cache
- 打开控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,展开 Certificate Manager 文件夹和 CRL 签发点 子文件夹。
- 选择 MasterCRL 节点。
- 选择 Enable CRL cache。
- 保存更改。
7.3.5.2. 在 CS.cfg 中配置 CRL Generation from Cache
CS.cfg
文件配置此功能的说明,请参考 红帽认证系统规划、安装和部署指南中的 CS.cfg 中的缓存配置 CRL Generation。
7.4. 设置 Full 和 Delta CRL Schedules
Interval 1, 2, 3, 4, 5, 6, 7 ... Full CRL 1 4 7 ... Delta CRL 1, 2, 3, 4, 5, 6, 7 ...
7.4.1. 在控制台中配置 CRL 更新间隔
- 打开控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,展开 Certificate Manager 文件夹和 CRL 签发点 子文件夹。
- 选择 MasterCRL 节点。
- 在 Generate full CRL every # delta(s) 字段中输入所需的间隔。
- 通过指定证书重新调用、循环间隔或设置更新所需的时间来设置更新频率:
- 每次证书被撤销或释放证书时,选择更新 CRL。每次从 hold 选项撤销或释放证书时,更新 CRL 还需要填写两个 Grace period 设置。这是一个已知问题,错误会在 Red Hat Bugzilla 中跟踪。
- 每次证书被撤销或释放证书时,选择更新 CRL。
- 选中 Update CRL at 复选框,并输入以逗号分开的特定时间,如 01:50,04:55,06:55。
- 选择 更新 CRL 并输入所需间隔,如 240。
- 保存更改。

7.4.2. 为 CS.cfg 中的 CRL 配置更新间隔
CS.cfg
文件配置此功能的说明,请参阅 红帽认证系统规划、安装和部署指南中的 CS.cfg 中的 CRL 配置更新间隔 部分。
7.4.3. 在多天配置 CRL Generation Schedules
ca.crl.MasterCRL.dailyUpdates=01:00,03:00,18:00;02:00,05:00,17:00
ca.crl.MasterCRL.dailyUpdates=01:00,03:00,18:00,*23:00;02:00,05:00,21:00,*23:30
CS.cfg
文件时工作。
7.5. 启用撤销检查
7.6. 使用在线证书状态协议(OCSP)响应
7.6.1. 设置 OCSP Responder
- 为每个将发布到 OCSP 响应器的 CA 配置 CRL。
- 启用发布、设置发布程序,并在 OCSP 服务将处理每个 CA 中设置发布规则(第 8 章 发布证书和 CRL)。如果证书管理器发布到 LDAP 目录,并且将在线证书状态管理器设置为从该目录中读取,则不需要这一步。
- 证书配置集必须被配置为包括授权信息访问扩展,指向证书管理器在哪个位置侦听 OCSP 服务请求(第 7.6.4 节 “启用证书管理器的内部 OCSP 服务”)。
- 配置 OCSP Responder。
- 识别每个发布证书管理器到 OCSP 响应器(第 7.6.2 节 “将 CA 识别到 OCSP Responder”)。
- 如有必要,配置对对 OCSP 签名证书(第 16.7 节 “更改 CA 证书的信任设置”)的 CA 的信任设置。
- 在配置这两个子系统后,重启这两个子系统。
- 验证 CA 是否已正确连接到 OCSP 响应器(第 7.6.2.1 节 “验证证书管理器和在线证书状态管理器连接”)。
7.6.2. 将 CA 识别到 OCSP Responder
- 从 CA 的最终页面获取证书管理器的 base-64 CA 签名证书。
- 打开 Online Certificate Status Manager 代理页面。URL 的格式是 https://hostname:SSLport/ocsp/agent/ocsp。
- 在左侧框中,点。
- 在表单中,将编码的 CA 签名证书粘贴到标记为 Base 64 编码证书的文本区域中(包括标题和页脚)。
- 要验证证书是否已成功添加,请在左边框中点击 List Certificate Authorities。
7.6.2.1. 验证证书管理器和在线证书状态管理器连接
7.6.2.2. 配置 Revocation Info Stores: Internal Database
- 打开 Online Certificate Status Manager 控制台。
pkiconsole https://server.example.com:8443/ocsp
- 在 Configuration 选项卡中,选择 Online Certificate Status Manager,然后选择 Revocation Info Stores。右侧窗格显示在线证书状态管理器可以使用的两个存储库;默认情况下,它使用其内部数据库的 CRL。
- 选择 defStore,再单击 。
- 编辑 defStore 值。
- notFoundAsGood.如果问题中的任何 CRL 中找不到证书,则设置 OCSP 服务会返回 GOOD 的 OCSP 响应。如果没有选择此项,则响应是 UNKNOWN,当客户端遇到时,会出现错误消息。
- byName.OCSP Responder 仅支持基本响应类型,其中包括对 OCSP Responder 的 ID。基本响应类型中的 ResponderID 字段由
ocsp.store.defStore.byName
参数的值决定。如果byName
参数为 true 或缺失,则 OCSP 授权签名证书主题名称将用作 OCSP 响应的 ResponderID 字段。如果byName
参数为 false,则 OCSP 授权签名证书密钥哈希值将是 OCSP 响应的 ResponderID 字段。 - includeNextUpdate.包括下一次 CRL 更新时间的时间戳。
7.6.2.3. 配置 Revocation Info Stores: LDAP Directory
ldapStore
方法,则 OCSP 用户界面不会检查证书状态。
- 打开 Online Certificate Status Manager 控制台。
pkiconsole https://server.example.com:8443/ocsp
- 在 Configuration 选项卡中,选择 Online Certificate Status Manager,然后选择 Revocation Info Stores。右侧窗格显示在线证书状态管理器可以使用的两个存储库;默认情况下,它使用其内部数据库的 CRL。
- 要在 LDAP 目录中使用 CRLs,请单击 ldapStore 选项。以启用
- 选择 ldapStore,再单击 。
- 设置 ldapStore 参数。
- numConns.OCSP 服务应检查的 LDAP 目录总数。默认情况下,它被设置为 0。设置此值可显示对应的 主机、端口、baseDN 和 refreshInSec 字段。
- 主机.LDAP 目录的完全限定 DNS 主机名。
- 端口。LDAP 目录的非 SSL/TLS 端口。
- baseDN.开始搜索 CRL 的 DN。例如: O=example.com。
- refreshInSec.刷新连接的频率。默认值为 86400 秒(daily)。
- caCertAttr.保留默认值 cACertificate;binary,因为它是.它是证书管理器发布其 CA 签名证书的属性。
- crlAttr.保留默认值 certificateRevocationList;binary,因为它是。它是证书管理器发布 CRL 的属性。
- notFoundAsGood.如果问题中的任何 CRL 中找不到证书,则设置 OCSP 服务会返回 GOOD 的 OCSP 响应。如果没有选择此项,则响应是 UNKNOWN,当客户端遇到时,会出现错误消息。
- byName.OCSP Responder 仅支持基本响应类型,其中包括对 OCSP Responder 的 ID。基本响应类型中的 ResponderID 字段由
ocsp.store.defStore.byName
参数的值决定。如果byName
参数为 true 或缺失,则 OCSP 授权签名证书主题名称将用作 OCSP 响应的 ResponderID 字段。如果byName
参数为 false,则 OCSP 授权签名证书密钥哈希值将是 OCSP 响应的 ResponderID 字段。 - includeNextUpdate.Online Certificate Status Manager 可以包括下一个 CRL 更新时间的时间戳。
7.6.2.4. 测试 OCSP 服务设置
- 在浏览器或客户端中打开撤销检查。
- 从为 OCSP 服务启用的 CA 请求证书。
- 批准请求。
- 将证书下载到浏览器或客户端。
- 确保 CA 由浏览器或客户端信任。
- 检查证书管理器的内部 OCSP 服务的状态。打开 CA 代理服务页面,然后选择 OCSP Services 链接。
- 测试独立在线证书状态管理器子系统。打开 Online Certificate Status Manager agent services 页面,然后单击 List Certificate Authorities 链接。该页面应显示有关证书管理器的信息,以将 CRL 发布到在线证书状态管理器。该页面还总结了自上次启动以来在线证书状态管理器的活动。
- 撤销证书。
- 在浏览器或客户端中验证证书。服务器应该返回证书已被撤销。
- 再次检查证书管理器的 OCSP-service 状态,以验证是否发生了这些问题:
- 浏览器将 OCSP 查询发送到证书管理器。
- 证书管理器向浏览器发送 OCSP 响应。
- 浏览器用于响应验证证书并返回其状态,该浏览器无法验证证书。
- 再次检查独立的 OCSP 服务子系统,以验证是否发生了这些问题:
- 证书管理器将 CRL 发布到在线证书状态管理器。
- 浏览器将 OCSP 响应发送到在线证书状态管理器。
- 在线证书状态管理器将 OCSP 响应发送到浏览器。
- 浏览器用于响应验证证书并返回其状态,该浏览器无法验证证书。
7.6.3. 为 Bad Serial Numbers 设置响应
notFoundAsGood
参数设置 OCSP 如何使用无效序列号处理证书。这个参数会被默认启用。这意味着,如果证书存在错误的序列号,但证书无法有效,OCSP 会为证书返回 GOOD 状态。
notFoundAsGood
设置。在这种情况下,OCSP 使用带有错误序列号的证书返回 UNKNOWN 状态。客户端解析为错误并可以相应地做出响应。
- 打开 Online Certificate Status Manager 控制台。
pkiconsole https://server.example.com:8443/ocsp
- 在 Configuration 选项卡中,选择 Online Certificate Status Manager,然后选择 Revocation Info Stores。
- 选择 defStore,再单击 。
- 编辑
notFoundAsGood
值。选择复选框意味着 OCSP 返回 GOOD 值,即使证书中的序列号不正确。取消选择复选框意味着 OCSP 发送 UNKNOWN 的值,因为客户端可能会将错误作为错误。 - 重启 OCSP Manager。
]# systemctl restart pki-tomcatd@instance-name.service
7.6.4. 启用证书管理器的内部 OCSP 服务
- 进入 CA 的最终用户页面。例如:
http
s
://server.example.com:8443/ca/ee/ca
- 查找 CA 签名证书。
- 在证书中查找 Authority Info Access 扩展,并记录 Location URIName 值,如 http
s
://server.example.com:8443
/ca/ocsp。 - 更新注册配置集,以启用授权信息访问扩展,并将 Location 参数设置为证书管理器的 URI。有关编辑证书配置集的详情请参考 第 3.2 节 “设置证书配置集”。
- 重启 CA 实例。
]# systemctl restart pki-tomcatd@instance-name.service
CS.cfg
文件,并将 ca.ocsp 参数的值更改为 false。
ca.ocsp=false
7.6.5. 使用 OCSPClient 程序提交 OCSP 请求
]# OCSPClient -h server.example.com -p 8080 -d /etc/pki/pki-tomcat/alias -c "caSigningCert cert-pki-ca" --serial 2 CertID.serialNumber=2 CertStatus=Good
选项 | 描述 |
---|---|
-d database | 安全数据库位置(默认:当前目录) |
-h hostname | OCSP 服务器主机名(默认: example.com) |
-p port | OCSP 服务器端口号(默认: 8080) |
-t path | OCSP 服务路径(默认:/ocsp/ee/ocsp) |
-c nickname | CA 证书别名(defaut: CA Signing Certificate) |
-n times | 提交数(默认:1) |
--serial serial_number | 要检查的证书的序列号 |
--input input_file | 包含 DER 编码的 OCSP 请求的输入文件 |
--output output_file | 保存 DER 编码的 OCSP 响应的输出文件 |
-v, --verbose | 在详细模式下运行 |
--help | 显示帮助信息 |
7.6.6. 使用 GET 方法提交 OCSP 请求
- 为要查询的证书生成 OCSP 请求。例如:
]# openssl ocsp -CAfile ca.pem -issuer issuer.pem -serial serial_number -reqout - | base64 MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE=
- 粘贴 Web 浏览器的地址栏中的 URL,返回状态信息。浏览器必须能够处理 OCSP 请求。
https://server.example.com:8443/ocsp/ee/ocsp/MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE=
- OCSP Manager 使用浏览器可解释的证书状态进行响应。可能的状态是 GOOD、REVOKED 和 UNKNOWN。
- 为要查询的证书生成 OCSP 请求。例如:
]# openssl ocsp -CAfile ca.pem -issuer issuer.pem -serial serial_number -reqout - | base64 MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE=
- 使用 curl 连接到 OCSP Manager,以发送 OCSP 请求。
curl https://server.example.com:8443/ocsp/ee/ocsp/MEIwQDA+MDwwOjAJBgUrDgMCGgUABBT4cyABkyiCIhU4JpmIBewdDnn8ZgQUbyBZ44kgy35o7xW5BMzM8FTvyTwCAQE= > ocspresp.der
- 使用 openssl 解析响应:
openssl ocsp -respin ocspresp.der -resp_text
7.6.7. 为证书证书系统主任设置重定向:System 7.1 和 Earlier
/ocsp/
ocsp/ocsp/
的 URL 中指定,与证书证书系统nbsp;System 9 或 CertificateCertificate Systemnbsp;System 9 or CertificateCertificate Systemnbsp;System 8.1 的位置与证书证书系统nbsp;System 7.1,只是 .对于要发送到 OCSP 的授权信息访问扩展的 7.1 或更早的 CA 发布的证书,请创建一个重定向以将请求转发到适当的 URL。
- 停止 OCSP Responder。
]# systemctl stop pki-tomcatd@instance-name.service
- 进入 OCSP 的最终用户 web 应用程序目录。例如:
]# cd /var/lib/pki-ocsp/webapps/ocsp
- 更改到 OCSP Web 应用程序目录的
ROOT
/WEB-INF/]# cd /var/lib/pki-ocsp/webapps/ocsp/ROOT/WEB-INF/
- 在 OCSP 的 web 应用程序目录的
ROOT
文件夹中创建并打开lib/
目录。]# mkdir lib ]# cd lib/
- 创建链接回
/usr/share/java/pki/cms.jar
JAR 文件的符号链接。例如:]# ln -s /usr/share/java/pki/cms.jar cms.jar
- 移到主 web 应用目录。例如:
]# cd /var/lib/pki-ocsp/webapps/ocsp/
- 重命名当前实例(
ocsp
)目录。例如:]# mv /var/lib/pki-ocsp/webapps/ocsp/ocsp /var/lib/pki-ocsp/webapps/ocsp/ocsp2
- 更改到原始
ocsp/
目录中的WEB-INF/
目录。例如:]# cd /var/lib/pki-ocsp/webapps/ocsp/ocsp/WEB-INF
- 在原始的
ocsp/WEB-INF/
目录中,编辑web.xml
文件并在eeocspAddCRL
和csadmin-wizard
servlets 之间添加行映射。<servlet-mapping> <servlet-name> ocspOCSP </servlet-name> <url-pattern> /ee/ocsp/* </url-pattern> </servlet-mapping>
- 在
ROOT
目录中创建并安装web.xml
文件。例如:<?xml version="1.0" encoding="ISO-8859-1"?> <web-app> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <servlet> <servlet-name>ocspProxy</servlet-name> <servlet-class>com.netscape.cms.servlet.base.ProxyServlet</servlet-class> <init-param> <param-name>destContext</param-name> <param-value>/ocsp2</param-value> </init-param> <init-param> <param-name>destServlet</param-name> <param-value>/ee/ocsp</param-value> </init-param> </servlet> <servlet> <servlet-name>ocspOther</servlet-name> <servlet-class>com.netscape.cms.servlet.base.ProxyServlet</servlet-class> <init-param> <param-name>destContext</param-name> <param-value>/ocsp2</param-value> </init-param> <init-param> <param-name>srcContext</param-name> <param-value>/ocsp</param-value> </init-param> <init-param> <param-name>destServlet</param-name> <param-value></param-value> </init-param> <init-param> <param-name>matchURIStrings</param-name> <param-value>/ocsp/registry,/ocsp/acl,/ocsp/jobsScheduler,/ocsp/ug,/ocsp/server,/ocsp/log, /ocsp/auths,/ocsp/start,/ocsp/ocsp,/ocsp/services,/ocsp/agent,/ocsp/ee, /ocsp/admin</param-value> </init-param> <init-param> <param-name>destServletOnNoMatch</param-name> <param-value>/ee/ocsp</param-value> </init-param> <init-param> <param-name>appendPathInfoOnNoMatch</param-name> <param-value>/ocsp</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>ocspProxy</servlet-name> <url-pattern>/ocsp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ocspOther</servlet-name> <url-pattern>/ocsp/*</url-pattern> </servlet-mapping> </web-app>
- 编辑
/var/lib/pki-ocsp/conf/context.xml
文件,更改以下行:<Context> to <Context crossContext="true" >
- 编辑
/var/lib/pki-ocsp/webapps/ocsp2/services.template
文件并更改以下行:result.recordSet[i].uri); to result.recordSet[i].uri + "/");
- 启动 OCSP 实例。
]# systemctl restart pki-tomcatd@instance-name.service
部分 III. 管理 CA 服务的其他配置
第 8 章 发布证书和 CRL
- 配置发布到文件、LDAP 目录或 OCSP 响应程序。根据所使用的位置数量,可以使用单个发布程序或多个发布者。可以通过证书和 CRL 分割位置,或者分配范围定义,如证书类型。规则通过与发布者关联,确定要发布哪些类型,并告知什么位置。
- 设置规则以确定将哪些证书发布到位置。激活证书或 CRL 匹配的任何规则,因此同一证书可以通过与基于文件的规则匹配并匹配基于目录的规则,将相同的证书发布到文件以及 LDAP 目录中。可以为每个对象类型设置规则: CA 证书、CRL、用户证书和跨对证书。禁用不使用的所有规则。
- 配置 CRL。必须配置 CRL,然后才能发布。请参阅 第 7 章 撤销证书和发布 CRL。
- 在设置发布程序、映射程序和规则后发布。启用发布后,服务器开始立即发布。如果没有完全配置发布程序、映射程序和规则,发布可能无法正常工作。
8.1. 关于发布
/etc/CS/certificates
中的文件,该证书将作为文件发布到该位置。如果另一个规则与用户发布的所有证书匹配,并且该规则有一个发布者,它发布到 LDAP 属性 userCertificate;binary 属性,则会在用户条目的此属性中启用 LDAP 发布时指定的目录。
8.1.1. publishers
8.1.2. 映射程序
8.1.3. 规则
8.1.4. 发布到文件
- 对于每个服务器问题,它会以 DER-encoded 或 base-64 编码的格式创建一个包含证书的文件。每个文件都命名为
cert-
serial_number.der
或cert-
serial_number.b64
。serial_number 是文件中包含的证书的序列号。例如,使用序列号 1234 的 DER 编码证书的文件名是cert-1234.der
。 - 每次服务器生成 CRL 时,它会以 DER-encoded 或 base-64 编码的格式创建一个包含新 CRL 的文件。每个文件都命名为 issuing_point_name- this_update
.der
或 issuing_point_name- this_update.b64
,具体取决于格式。issued_point_name 标识发布 CRL 的 CRL 发出点,this_update 指定从文件中包含的 CRL 独立更新值派生的值。例如,DER 编码 CRL 的文件名以及值 This update: Friday 1:36:00 PST 2020,是MasterCRL-20200128-153600.der
。
8.1.5. OCSP 发布
8.1.6. LDAP 发布
- 对于每个证书,它会在用户条目的指定属性中创建一个带有证书的 DER 编码格式的 Blob。证书以 DER 编码的二进制 blob 的形式发布。
- 每次服务器生成 CRL 时,它都会创建一个 blob,它将以 CA 条目的指定属性的 DER 编码格式包含新的 CRL。
8.2. 配置发布到文件
- 登录到证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,从左侧的导航树中选择 Certificate Manager。选择 发布,然后选择 发布软件软件。publishers Management 选项卡(列出配置的发布程序实例)会在右侧打开。
- 点 Select publisher Plug-in Implementation 窗口,它列出了注册的发布程序模块。打开
- 选择 FileBasedPublisher 模块,然后打开编辑器窗口。这是让证书管理器将证书和 CRL 发布到文件的模块。
- 配置发布证书的信息:
- publisher ID,它是一个字母数字字符串,没有空格,如 PublishCertsToFile
- 证书管理器应发布文件的目录的路径。该路径可以是绝对路径,也可以是相对于 CertificateCertificate Systemnbsp;System 实例目录。例如:
/export/CS/certificates
。 - 要发布的文件类型,选中 DER 编码文件的复选框、base-64 编码文件或两者。
- 对于 CRL,时间戳的格式。公布的证书在文件名中包括序列号,而 CRL 使用时间戳。
- 对于 CRL,是否在文件中生成链接以进入最新的 CRL。如果启用,则该链接假定要与扩展一起使用的 CRL 发出的名称将在 crlLinkExt 字段中提供。
- 对于 CRL,是否压缩(zip)CRL 以及要使用的压缩级别。
8.3. 配置发布到 OCSP
8.3.1. 启用通过客户端身份验证发布到 OCSP
- 登录到证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,从左侧的导航树中选择 Certificate Manager。选择 发布,然后选择 发布软件软件。
- 点 Select publisher Plug-in Implementation 窗口,它列出了注册的发布程序模块。打开
- 选择 OCSPPublisher 模块,然后打开编辑器窗口。这是让证书管理器将 CRL 发布到在线证书状态管理器的 publisher 模块。
- publisher ID 必须是字母数字字符串,没有空格,如 PublishCertsToOCSP。
- 主机 可以是完全限定的域名,如 ocspResponder.example.com,也可以是 IPv4 或 IPv6 地址。
- 默认路径是要将 CRL 发送到的目录,如
/ocsp/agent/ocsp/addCRL
。 - 如果使用了客户端身份验证(选中了enableClientAuth ),则 nickname 字段则提供要用于身份验证的证书的 nickname。此证书必须已存在于 OCSP 安全数据库中,这通常是 CA 子系统证书。
- 在 OCSP Manager 上为 CA 创建用户条目。在发送新 CRL 时,用户用于对 OCSP 进行身份验证。需要两个操作:
- 在 CA 服务器后面命名 OCSP 用户条目,如 CA-hostname-EEport。
- 使用 publisher 配置中指定的任何证书作为 OCSP 用户帐户中的用户证书。这通常是 CA 的子系统证书。
设置子系统用户包括在 第 14.3.2.1 节 “创建用户” 中。
8.4. 配置发布到 LDAP 目录
- 配置将发布到证书的目录服务器。某些属性必须添加到条目中,并且必须配置绑定身份和身份验证方法。
- 为发布的每种对象类型配置发布程序: CA 证书、跨对证书、CRL 和用户证书。publisher 会声明将对象存储在哪一属性中。默认设置的属性是用于存储每个对象类型的 X.500 标准属性。此属性可以在发布器中更改,但通常不需要更改 LDAP 发布程序。
- 设置映射程序,使条目的 DN 从证书的主题名称派生出来。这通常不需要为 CA 证书、CRL 和用户证书设置。可为一种证书设置多个映射程序。例如,这可以发布来自位于目录树不同部分公司的两组用户的证书。为每个组创建一个映射程序来指定不同的树分支。有关设置映射程序的详情,请参考 第 8.4.3 节 “创建映射程序”。
- 创建将发布程序连接到映射程序的规则,如 第 8.5 节 “创建规则” 所述。
- 启用发布,如 第 8.6 节 “启用发布” 所述。
8.4.1. 配置 LDAP 目录
- 为 CA 设置条目。要让证书管理器发布其 CA 证书和密钥 CRL,该目录必须包含 CA 的条目。提示配置 LDAP 发布后,证书管理器会在 目录中自动创建或转换 CA 的条目。这个选项同时在 CA 和 CRL 映射程序实例中被设置,并默认启用。如果目录限制证书管理器在目录中创建条目,请在这些映射程序实例中关闭此选项,并在 目录中手动添加 CA 的条目。将 CA 的条目添加到目录时,根据 CA 的 DN 选择条目类型:
- 如果 CA 的 DN 以 cn 组件开头,请为 CA 创建一个新的 人 条目。选择其他类型的条目可能不允许指定 cn 组件。
- 如果 CA 的 DN 从组件开始,请为 CA 创建新的 organizationalunit 条目。
该条目不必处于 pkiCA 或 certificationAuthority 对象类中。证书管理器通过发布其 CA 的签名证书,自动将此条目转换为 pkiCA 或 certificationAuthority 对象类。注意pkiCA 对象类在 RFC 4523 中定义,而 Certified Authority 对象类在(obsolete)RFC 2256 中定义。根据 Directory 服务器使用的 schema 定义,可以接受任一对象类。在某些情况下,两个对象类都可用于同一 CA 条目。有关创建目录条目的更多信息,请参阅 Red Hat Directory Server 文档。 - 在 CA 和用户目录条目中添加正确的模式元素。
对象类型 模式 原因 最终用户证书 userCertificate;binary (attribute) 这是证书管理器发布证书的属性。这是一个多值属性,每个值都是 DER 编码的二进制 X.509 证书。名为 inetOrgPerson 的 LDAP 对象类允许此属性。strongAuthenticationUser 对象类允许此属性,并可与其他对象类结合使用,以允许将证书与其他对象类一起发布到目录条目。证书管理器不会自动将此对象类添加到相应 Directory 服务器的 schema 表中。如果它找到的目录对象不允许 userCertificate;binary 属性,添加或删除证书会失败。CA 证书 caCertificate;binary (attribute) 这是证书管理器发布证书的属性。服务器启动时,证书管理器将自己的 CA 证书发布到自己的 LDAP 目录条目。该条目对应于证书管理器的签发者名称。这是 pkiCA 或 certificationAuthority 对象类的必要属性。如果证书管理器可以找到 CA 的目录条目,则证书管理器将此对象类添加到 CA 的目录条目中。CRL certificateRevocationList;binary (attribute) 这是证书管理器发布 CRL 的属性。证书管理器将 CRL 发布到自己的 LDAP 目录条目。该条目对应于证书管理器的签发者名称。这是 pkiCA 或 certificationAuthority 对象类的属性。属性的值是 DER 编码的二进制 X.509 CRL。CA 的条目必须已经包含 pkiCA 或 certificationAuthority 对象类,才能将 CRL 发布到该条目。Delta CRL deltaRevocationList;binary (attribute) 这是证书管理器发布 delta CRL 的属性。证书管理器将 delta CRL 发布到自己的 LDAP 目录条目,独立于完整的 CRL。delta CRL 条目对应于证书管理器的签发者名称。此属性属于 deltaCRL 或 Certification Authority-V2 对象类。属性的值是 DER 编码的二进制 X.509 delta CRL。 - 为证书管理器设置绑定 DN,以用于访问目录服务器。证书管理器用户必须对目录具有读写权限,才能将证书和 CRL 发布到该目录,以便证书管理器可以修改与证书相关的信息的用户条目,以及 CA 的证书和 CRL 相关信息的 CA 条目。绑定 DN 条目可以是以下任意一种:
- 具有写入权限的现有 DN,如 Directory Manager。
- 被授予写入访问权限的新用户。条目可以通过证书管理器的 DN 识别,如 cn=testCA、ou=Research Dept、o=Example Corporation、st=California, c=US。注意请仔细考虑为此用户授予什么权限。通过为帐户创建 ACL,可以限制该用户在目录中写入的内容。有关授予证书管理器条目的写入权限的说明,请参阅目录服务器文档。
- 设置目录验证方法,以便证书管理器如何向 Directory 服务器进行身份验证。有三个选项:基本身份验证(简单用户名和密码);没有客户端身份验证的 SSL(简单用户名和密码);以及通过客户端身份验证(基于证书)的 SSL。有关设置这些与服务器通信的说明,请查看 Red Hat Directory Server 文档。
8.4.2. 配置 LDAP 发布程序
publisher | 描述 |
---|---|
LdapCaCertPublisher | 将 CA 证书发布到 LDAP 目录。 |
LdapCrlPublisher | 将 CRL 发布到 LDAP 目录。 |
LdapDeltaCrlPublisher | 将 delta CRL 发布到 LDAP 目录。 |
LdapUserCertPublisher | 将所有类型的终止证书发布到 LDAP 目录。 |
LdapCrossCertPairPublisher | 将跨签名证书发布到 LDAP 目录。 |
8.4.3. 创建映射程序
mapper | 描述 |
---|---|
LdapUserCertMap | 在 目录中找到用户条目的正确属性,以发布用户证书。 |
LdapCrlMap | 在 目录中找到 CA 条目的正确属性,以发布 CRL。 |
LdapCaCertMap | 在 目录中找到 CA 条目的正确属性,以发布 CA 证书。 |
- 登录到证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,从左侧的导航树中选择 Certificate Manager。选择 发布,然后选择 映射程序。映射程序管理 标签页(列出配置的映射程序)会在右侧打开。
- 要创建新映射程序实例,请单击 Select Mapper Plugin Implementation 窗口,它列出了已注册映射程序模块。选择一个模块并进行编辑。有关这些模块的完整信息,请参阅 第 C.2 节 “映射器插件模块 ”。。将打开
- 编辑映射程序实例,。有关每个映射器的详细信息,请参阅 第 C.2 节 “映射器插件模块 ”。
8.4.4. 完成配置:规则并启用
8.5. 创建规则
- 登录到证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,从左侧的导航树中选择 Certificate Manager。选择 发布,然后选择 Rules。Rules Management 标签页(列出配置的规则)在右侧打开。
- 要编辑现有规则,请从列表中选择该规则,然后点 Rule Editor 窗口。。这将打开
- 要创建规则,请单击 Select Rule Plug-in Implementation 窗口。。这将打开选择 Rule 模块。这是唯一默认模块。如果已经注册了任何自定义模块,它们也会可用。
- 编辑规则。
- 键入。这是规则适用的证书类型。对于 CA 签名证书,值为 cacert。对于跨签名证书,值为 xcert。对于所有其他证书类型,值为 certs。对于 CRLs,指定 crl。
- predicate.这为规则应用到的证书或 CRL 发出类型设置 predicate 值。CRL 发出点、delta CRL 和证书的 predicate 值列在 表 8.3 “predicate 表达式” 中。
- 启用。
- 映射器.发布到文件时不需要映射程序,只有 LDAP 发布版需要它们。如果此规则与发布到 LDAP 目录的发布者关联,请在这里选择一个适当的映射程序。所有其他形式的发布留空。
- 发布程序.将发布程序设置为与该规则关联。
predicate 类型 | predicate |
---|---|
CRL 签发点 |
issuingPointId==Issuing_Point_Instance_ID && isDeltaCRL==[true|false]
要只发布 master CRL,设置为DeltaCRL==false。要只发布 delta CRL,请设置 DeltaCRL==true。要发布这两个情况,请为 master CRL 以及 delta CRL 中的一个规则设置一个规则。
|
证书配置集 |
profileId==profile_name
要根据用来发布它们的配置集发布证书,请将 profileId== 设置为配置集名称,如 caServerCert。
|
8.6. 启用发布
- 登录到证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,从左侧的导航树中选择 Certificate Manager。选择 发布。右窗格显示了发布到与 LDAP 兼容的目录的详细信息。
- 要仅启用发布到文件,请选择 Enable Publishing。
- 要启用 LDAP 发布,请选择 Enable Publishing and Enable Default LDAP Connection。在 Destination 部分中,设置 Directory Server 实例的信息。
- 主机名.如果为 SSL 客户端通过身份验证的通信配置了 Directory 服务器,该名称必须与目录服务器的 SSL 服务器证书主体 DN 中的 cn 组件匹配。主机名可以是完全限定域名或 IPv4 或 IPv6 地址。
- 端口号.
- 目录管理器 DN.这是具有 Directory Manager 特权的目录条目的可分辨名称(DN)。证书管理器使用此 DN 访问目录树,并发布到 目录。为此 DN 设置的访问控制决定了证书管理器是否可以执行发布。可以创建另一个具有有限读写权限的 DN,只针对发布系统实际需要写入的属性。
- 密码。这是 CA 用来绑定到发布证书或 CRL 的 LDAP 目录的密码。证书管理器将此密码保存在其
password.conf
文件中。例如:CA LDAP Publishing:password
注意标识发布密码(CA LDAP Publishing)的参数名称在 ca.publish.ldappublish.ldap.ldapauth.bindPWPrompt 参数中的 Certificate Manager 的CS.cfg
文件中设置,并可编辑。 - 客户端证书。这将设置证书管理器用于在发布目录中进行 SSL 客户端身份验证的证书。默认情况下,证书管理器使用其 SSL 服务器证书。
- LDAP 版本.选择 LDAP 版本 3.
- 身份验证.证书管理器向 Directory 服务器进行身份验证的方式。选择是 基本身份验证 和 SSL 客户端身份验证。如果目录服务器是为基本身份验证或没有客户端身份验证的 SSL 通信而配置的,请选择 基本身份验证,并指定 Directory 管理器 DN 和密码的值。如果目录服务器被配置为与客户端身份验证进行 SSL 通信,请选择 SSL 客户端身份验证 和使用 SSL 通信 选项,并识别证书管理器必须用于 SSL 客户端身份验证的证书,以便对该目录进行 SSL 客户端身份验证。
8.7. 启用发布队列
图 8.1. 启用发布队列

CS.cfg
文件启用发布队列可让管理员设置发布的选项,如用于发布操作的线程数量和队列页面大小。
CS.cfg
文件配置此功能的说明,请参阅 红帽证书系统规划、安装和部署指南中的 启用 Publishing Queue 部分。
8.8. 设置恢复 CRL 下载
8.8.1. 使用 wget 检索 CRL
[root@server ~]# wget --no-check-certificate -d https://server.example.com:8443/ca/ee/ca/crl/MasterCRL.bin
参数 | 描述 |
---|---|
no 参数 | 检索完整的 CRL。 |
-N | 检索比本地副本(delta CRL)更新的 CRL。 |
-c | 检索部分下载的文件。 |
--no-check-certificate | 跳过连接的 SSL,因此不需要在主机和客户端之间配置 SSL。 |
-d | 打印调试信息。 |
8.9. 发布跨Pair 证书
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,选择左侧窗格中的 证书管理器 链接,然后选择 Publishing 链接。
- 单击 发布 下的 Rules 链接。这会打开右侧的 Rules Management 窗格。
- 如果规则存在并且已禁用,请选择 启用 复选框。如果规则已被删除,请单击 并创建一个新规则。
- 从类型下拉菜单中选择 xcerts。
- 确保选中了 启用 复选框。
- 从 mapper 下拉菜单中选择 LdapCaCertMap。
- 从 发布程序 下拉菜单中选择 LdapCrossCertPairPublisher。
8.10. 测试发布到文件
- 打开 CA 的最终用户页面,再请求证书。
- 如果需要,请通过代理服务页面批准请求。
- 从终端页面检索证书,并将证书下载到浏览器中。
- 检查服务器是否生成了包含证书的 DER 编码文件。打开应发布证书的二进制 blob 的目录。证书文件应命名为
cert-
serial_number.der
。 - 使用 Binary Binary 将 DER 编码的证书转换为其基本 64 编码的格式。有关此工具的更多信息,请参阅
BtoA(1)
man page。BtoA input_file output_file
input_file 设置包含 DER 编码证书的文件的路径,而 output_file 设置文件的路径,以写入 base-64 编码证书。 - 打开 ASCII 文件; base-64 编码证书与所示的证书类似:
-----BEGIN CERTIFICATE----- MMIIBtgYJYIZIAYb4QgIFoIIBpzCCAZ8wggGbMIIBRaADAgEAAgEBMA0GCSqGSIb3DQEBBAUAMFcxC AJBgNVBAYTAlVTMSwwKgYDVQQKEyNOZXRzY2FwZSBDb21tdW5pY2F0aWhfyyuougjgjjgmkgjkgmjg fjfgjjjgfyjfyj9ucyBDb3Jwb3JhdGlvbjpMEaMBgGA1UECxMRSXNzdWluZyhgdfhbfdpffjphotoo gdhkBBdXRob3JpdHkwHhcNOTYxMTA4MDkwNzM0WhcNOTgxMTA4MDkwNzMM0WjBXMQswCQYDVQQGEwJ VUzEsMCoGA1UEChMjTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yY2F0aW9ucyBDb3Jwb3Jhd GlvbjpMEaMBgGA1UECxMRSXNzdWluZyBBdXRob3JpdHkwHh -----END CERTIFICATE-----
- 使用 Pretty Print Certificate 工具将基本 64 编码的证书转换为可读的表单。有关此工具的更多信息,请参阅
PrettyPrintCert(1)
man page。PrettyPrintCert input_file [output_file]
input_file 设置 ASCII 文件的路径,其中包含 base-64 编码证书,以及 output_file (可选)设置要写入证书的路径。如果没有设置输出文件,证书信息将写入到标准输出中。 - 将输出与发布的证书进行比较;检查证书中的序列号和文件名中使用的序列号。如果一切匹配,证书管理器将正确配置为将文件发布证书。
- 撤销证书。
- 检查服务器是否生成了包含 CRL 的 DER 编码文件。打开服务器将 CRL 发布为二进制 blob 的目录。CRL 文件应当具有格式为 crl-this_update.der 的名称。this_update 指定从 CRL 依赖时间的 This Update 变量获取的值。
- 使用 Binary Binary 将 DER 编码的 CRL 转换为其基本 64 编码的格式。
BtoA input_file output_file
- 使用 Pretty Print CRL 工具,将 base 64 编码的 CRL 转换为可读格式。
PrettyPrintCrl input_file [output_file]
- 比较输出。
8.11. 查看证书和 CRLs 发布到文件
- 将 base-64 文件转换为二进制文件。例如:
AtoB /tmp/example.b64 /tmp/example.bin
- 使用 PrettyPrintCert 或 PrettyPrintCrl 工具将二进制文件转换为 prettyprint 格式。例如:
PrettyPrintCert example.bin example.cert
PrettyPrintCrl example.der example.crl
8.12. 更新目录中的证书和 CRL
- 搜索不同步和发布或未发布或取消发布的证书的内部数据库。
- 发布在 Directory 服务器停机期间发布的证书。同样,未发布在 Directory 服务器停机期间被撤销或过期的证书。
- 根据序列号发布或取消发布范围证书,从序列号 xx 向序列号 yy。
8.12.1. 手动更新目录中的证书
- 使用证书更新目录。
- 从目录中删除过期的证书。通过调度自动作业,可以从发布目录中删除过期的证书。详情请查看 第 12 章 设置自动化任务。
- 从目录中删除撤销的证书。
- 打开证书管理器代理服务页面。
- 选择 Update Directory Server 链接。
- 选择适当的选项,然后单击。证书管理器开始使用其内部数据库中的证书信息来更新目录。如果更改非常大,更新目录可能需要较长时间。在此期间,通过证书管理器进行的任何更改,包括发布任何证书或被撤销的任何证书,则可能不会包含在更新中。如果在更新目录的同时发布或撤销任何证书,请再次更新目录以反映这些更改。
- 通过将 predicate 参数的值更改为 profileId!=caCACert 来修改用户证书的默认发布规则。
- 使用 LdapCaCertPublisher publisher 插件模块添加另一个规则,使用 predicate 参数设置为 profileId=caCACert,以发布子协调 CA 证书。
8.12.2. 手动更新目录中的 CRL
- 打开证书管理器代理服务页面。
- 选择 Update Revocation List。
- 点。
8.13. 注册自定义映射程序和发布程序插件模块
- 创建自定义作业类。在本例中,自定义发布程序插件名为
MyPublisher.java
。 - 编译新类。
javac -d . -classpath $CLASSPATH MyPublisher.java
- 在 CA 的
WEB-INF
Web 目录中创建用于存放自定义类的目录,以便 CA 可以访问它们。mkdir /var/lib/pki/instance_name/ca/webapps/ca/WEB-INF/classes
- 将新插件文件复制到
新类
目录中,并将所有者设置为证书证书系统nbsp;System 系统用户(pkiuser
)。cp -pr com /var/lib/pki/instance_name/ca/webapps/ca/WEB-INF/classes chown -R pkiuser:pkiuser /var/lib/pki/instance_name/ca/webapps/ca/WEB-INF/classes
- 注册插件。
- 登录到证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,从左侧的导航树中选择 Certificate Manager。选择 发布。
- 要注册映射程序模块,请选择 映射程序,然后选择 映射程序插件注册 选项卡。要注册发布程序模块,请选择 publishers,然后选择 publisher Plug-in Registration 选项卡。
- 要注册插件,请点击。
- 设置插件名称和插件类名称。类名称是实施 Java 类的路径。如果这个类是软件包的一部分,请包含软件包名称。例如,要在名为 com.customplugins 的软件包中注册名为 customMapper 的类,其名称是 com.customplugins.customMapper。
第 9 章 注册证书的身份验证
- 在 代理批准的 注册中,终端请求将发送到代理进行批准。代理批准证书请求。
- 在自动注册中,终端请求通过插件进行身份验证,然后处理证书请求;不会参与注册流程中的代理。
- 在 CMC 注册 中,第三方应用程序可以创建由代理签名并自动处理的请求。
9.1. 配置代理(Approved Enrollment)
留空。
例如:
auth.instance_id=
9.2. 自动注册
- 基于目录的注册。最终实体使用其用户 ID 和密码其 DN 和密码通过 LDAP 目录进行身份验证。请参阅 第 9.2.1 节 “设置基于目录的身份验证”。
- 基于 PIN 的注册。使用其目录 ID、密码和 PIN 在目录条目中设置的 PIN,对最终用户实体进行身份验证。请参阅 第 9.2.2 节 “设置基于 PIN 的注册”。
- 基于证书的身份验证.某种实体(如服务器或令牌)的实体使用 CA 发布的证书向 CA 进行身份验证,该实体证明其身份。这最常用于续订,其中显示原始证书以验证续订过程。请参阅 第 9.2.3 节 “使用基于证书的验证”。
- AgentCertAuth.如果提交请求的实体作为子系统代理进行身份验证,此方法会自动批准证书请求。用户通过提供代理证书作为代理进行身份验证。如果所提供的证书由子系统识别为代理证书,则 CA 会自动处理证书请求。此形式的自动身份验证可与用于注册服务器证书的证书配置集关联。此插件默认启用,且没有参数。
- 基于文件格式的注册.用于路由器(SCEP)注册,会使用一个文本文件,其中包含 IP 地址、主机名或其他标识符列表,它是一个随机的 PIN。路由器使用其 ID 和 PIN 验证 CA,然后 CA 会将提供的凭证与文本文件中的身份列表进行比较。请参阅 第 9.2.4 节 “配置平面文件身份验证”。
9.2.1. 设置基于目录的身份验证
- 创建 UidPwdDirAuth 或 UdnPwdDirAuth 身份验证插件模块并配置实例的实例。
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,在导航树中选择 Authentication。注意UidPwdDirAuth 插件默认启用。
- 点。此时会出现 Select Authentication Plug-in Implementation 窗口。
- 为用户 ID 和密码身份验证选择 UidPwdDirAuth,或者选择 UdnPwdDirAuth 用于 DN 和密码身份验证。
- 在 Authentication Instance Editor 窗口中填写以下字段:
- 身份验证实例 ID。接受默认实例名称,或输入新名称。
- dnpattern.指定一个字符串,代表主题名称模式,以便根据目录属性和条目 DN 进行公式限制。
- ldapStringAttributes.指定端点实体应被视为身份验证的 LDAP 字符串属性列表。如果指定,与这些属性对应的值将从身份验证目录中复制到身份验证令牌,并由证书配置集用于生成主题名称。此参数输入值是可选的。
- ldapByteAttributes.指定端点实体应被视为身份验证的 LDAP 字节(二进制)属性列表。如果指定,与这些属性对应的值将从身份验证目录中复制到身份验证令牌,供其他模块使用,如向用户证书添加额外信息。此参数输入值是可选的。
- ldap.ldapconn.host.指定身份验证目录的完全限定 DNS 主机名。
- ldap.ldapconn.port.指定验证目录侦听请求的 TCP/IP 端口;如果选择了 ldap.ldapconn.secureConn. 复选框,则应为 SSL 端口号。
- ldap.ldapconn.secureConn.指定身份验证目录监听来自证书证书系统nbsp 的请求的端口类型 SSL 或非 SSL;系统.如果这是 SSL 端口,请选择此项。
- ldap.ldapconn.version.指定 LDAP 协议版本,可以是 2 或 3。默认值为 3,因为版本 3.x 以后所有目录服务器都是 LDAPv3。
- ldap.basedn.指定用于搜索身份验证目录的基本 DN。服务器使用 HTTP 输入的 uid 字段的值(用户在注册表单中输入的用户)和基本 DN 来构造 LDAP 搜索过滤器。
- ldap.minConns.指定身份验证目录允许的最小连接数。允许的可能值为 1 到 3。
- ldap.maxConns.指定身份验证目录允许的最大连接数。可见的值有 3 到 10。
- 点击。身份验证实例已设置并启用。
- 通过为特定证书设置策略,设置证书配置集用于注册用户。通过在证书配置集中配置输入来自定义注册表单,并包括插件验证用户身份所需的信息输入。如果默认输入不包含需要收集的所有信息,请提交使用第三方工具创建的请求。有关配置配置集的详情请参考 第 3.7.2 节 “在 Subject Alt Name 中插入 LDAP 目录属性值和其他信息”。
设置绑定 LDAP 连接
- 根据
CS.cfg
中的以下示例设置基于目录的身份验证:auths.instance.UserDirEnrollment.ldap.ldapBoundConn=true auths.instance.UserDirEnrollment.ldap.ldapauth.authtype=BasicAuth auths.instance.UserDirEnrollment.ldap.ldapauth.bindDN=cn=Directory Manager auths.instance.UserDirEnrollment.ldap.ldapauth.bindPWPrompt=externalLDAP externalLDAP.authPrefix=auths.instance.UserDirEnrollment cms.passwordlist=internaldb,replicationdb,externalLDAP
其中bindPWPrompt
是password.conf
文件中使用的标签或提示 ; 它也是optionpasswordlist
和authPrefix
选项下使用的名称。 - 在
password.conf
中添加来自CS.cfg
的标签或提示:externalLDAP=your_password
设置外部授权
CS.cfg
中配置以下选项:
groupsEnable
是一个布尔值选项,用于启用检索组。默认值为false
。基于组
的基本 DN。当它不同于基于默认n
时,需要指定它。- 组是
组的
DN 组件。默认值为ou=groups
。 groupObjectClass
是以下组对象类之一:groupofquenames
、groupofnames
。默认值为groupofquenames
。groupUseridName
是 group object member 属性中用户 ID 属性的名称。默认值为cn
。useridName
是用户 ID DN 组件的名称。默认值为uid
。searchGroupUserByUserdn
是一个布尔值选项,决定是否搜索userdn
或${groupUserIdName}=${uid}
属性的组对象 member 属性。默认值为true
。
auths.instance.UserDirEnrollment.pluginName=UidPwdDirAuth auths.instance.UserDirEnrollment.ldap.basedn=cn=users,cn=accounts,dc=local auths.instance.UserDirEnrollment.ldap.groupObjectClass=groupofnames auths.instance.UserDirEnrollment.ldap.groups=cn=groups auths.instance.UserDirEnrollment.ldap.groupsBasedn=cn=accounts,dc=local auths.instance.UserDirEnrollment.ldap.groupsEnable=true auths.instance.UserDirEnrollment.ldap.ldapconn.host=local auths.instance.UserDirEnrollment.ldap.ldapconn.port=636 auths.instance.UserDirEnrollment.ldap.ldapconn.secureConn=true
/instance_path/ca/profiles/ca/profile_id.cfg
文件,以配置配置集以使用 CS.cfg
中定义的 UserDirEnrollment
auth 实例,并在适当的情况下为基于组的授权提供 ACL。例如:
auth.instance_id=UserDirEnrollment auths.acl=group="cn=devlab-access,ou=engineering,dc=example,dc=com"
9.2.2. 设置基于 PIN 的注册
- 在 LDAP 目录中为 PIN 添加所需的 schema。
- 在设置的 PIN manager 用户中添加具有读写权限的 PIN manager 用户。
- 设置 ACI 以允许在使用 PIN 后删除 PIN,为 PIN 提供读写权限,并阻止用户创建或更改 PIN。
- 在每个用户条目中创建 PIN。
- 使用 PIN 工具添加 PINs 所需的 schema,将 PIN 添加到用户条目,然后将 PINs 分发到用户。
- 打开
/usr/share/pki/native-tools/
目录。 - 在文本编辑器中打开
setpin.conf
文件。 - 按照文件中概述的说明进行操作,并进行适当的更改。通常,需要更新的参数是 Directory Server 的主机名、Directory Manager 的绑定密码以及 PIN 管理器的密码。
- 使用 optfile 选项运行 setpin 命令,指向
setpin.conf
文件。setpin optfile=/usr/share/pki/native-tools/setpin.conf
该工具使用新属性(默认为 pinPerson)和一个新的对象类(默认为 pinPerson)修改 schema,并创建一个 pinmanager 用户,并只设置 ACI 以允许 pinmanager 用户修改 pin 属性。 - 要为特定用户条目生成 PIN,或提供用户定义的 PIN,创建一个输入文件,其中包含列出的条目的 DN。对于 ezample:
dn:uid=bjensen,ou=people,dc=example,dc=com dn:uid=jsmith,ou=people,dc=example,dc=com dn:jtyler,ou=people,dc=example,dc=com ...
有关构建输入文件的详情,请参考 证书系统命令行工具指南中的 PIN 生成器章节。 - 禁用 setpin 命令的设置模式。注释掉 setup 行,或者将值更改为 no。
vim /usr/share/pki/native-tools/setpin.conf setup=no
设置模式会创建所需的 uers 和对象类,但工具在设置模式下不会生成 PIN。 - 运行 setpin 命令在目录中创建 PIN。提示在不使用
write
选项的情况下运行该工具来生成 PIN 列表,而无需实际更改该目录。例如:setpin host=yourhost port=9446 length=11 input=infile output=outfile write "binddn=cn=pinmanager,o=example.com" bindpw="password" basedn=o=example.com "filter=(uid=u*)" hash=sha256
WARNING不要将hash
参数设置为none
。使用hash=none
运行 setpin 命令会导致 pin 以纯文本形式存储在用户 LDAP 条目中。 - 完成设置所需的身份验证方法后,使用输出文件向用户提供 PIN。
- 在证书配置集中设置特定证书的策略以注册用户。有关证书策略的详情,请参阅 第 3 章 制作发行证书规则(证书配置文件)。
- 创建并配置 UidPwdPinDirAuth 身份验证插件的实例。
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,在导航树中选择 Authentication。
- 点。此时会出现 Select Authentication Plug-in Implementation 窗口。
- 选择 UidPwdPinDirAuth 插件模块。
- 在 Authentication Instance Editor 窗口中填写以下字段:
- 身份验证实例 ID。接受默认实例名称或输入新名称。
- removePin.设置在最终用户成功验证后是否从身份验证目录中删除 PIN。从目录中删除 PIN 会限制用户多次注册,从而防止他们获得多个证书。
- pinAttr.指定 PIN 的身份验证目录属性。PIN Generator 程序将 属性设置为
setpin.conf
文件中的 objectclass 参数的值;此参数的默认值是 pin。 - dnpattern.指定一个字符串,代表主题名称模式,以便根据目录属性和条目 DN 进行公式限制。
- ldapStringAttributes.指定端点实体应被视为身份验证的 LDAP 字符串属性列表。此参数输入值是可选的。
- ldapByteAttributes.指定端点实体应被视为身份验证的 LDAP 字节(二进制)属性列表。如果指定,与这些属性对应的值将从身份验证目录中复制到身份验证令牌,供其他模块使用,如向用户证书添加额外信息。此参数输入值是可选的。
- ldap.ldapconn.host.指定身份验证目录的完全限定 DNS 主机名。
- ldap.ldapconn.port.指定身份验证目录侦听来自证书证书系统nbsp 的 TCP/IP 端口;系统.
- ldap.ldapconn.secureConn.指定身份验证目录侦听请求的端口的类型 SSL 或非 SSL。如果这是 SSL 端口,请选择此项。
- ldap.ldapconn.version.指定 LDAP 协议版本,可以是 2 或 3。默认情况下,这是 3,因为除 3.x 之后的所有目录服务器版本都是 LDAPv3。
- ldap.ldapAuthentication.bindDN.指定在从身份验证目录中删除 PIN 时要绑定的用户条目。仅在选择了 removePin 复选框时指定此参数。建议有一个单独的用户条目,该用户条目只能修改目录中创建和使用 目录中的 PIN 属性。例如,不要使用 Directory Manager 的条目,因为它具有修改整个目录内容的特权。
- 密码。指定与 ldap.ldapauthbindDN 参数指定的 DN 关联的密码。保存更改后,服务器会将密码存储在单点登录密码缓存中,并使用它来后续启动。只有在选择了 removePin 复选框时,才需要设置此参数。
- ldap.ldapAuthentication.clientCertNickname.指定用于对认证目录进行 SSL 客户端身份验证的证书 nickname 来删除 PIN。确保证书有效且已由身份验证目录的证书数据库中信任的 CA 签名,并且身份验证目录的
certmap.conf
文件已配置为将证书正确映射到目录中的 DN。只适用于 PIN 才可以删除。 - ldap.ldapAuthentication.authtype.指定从身份验证目录中删除 PIN 所需的身份验证类型、基本身份验证或 SSL 客户端身份验证。
- Basic auth 指定基本身份验证。使用此选项时,为 ldap.ldapAuthentication.bindDN 和 password 参数输入正确的值,服务器使用 ldap.ldapAuthentication.bindDN 属性中的 DN 绑定到该目录。
- SslClientAuth 指定 SSL 客户端身份验证。使用此选项时,将 ldap.ldapconn.secureConn 参数的值设置为 true,将 ldap.ldapAuthentication.clientCertNickname 参数的值设置为用于 SSL 客户端身份验证的 nickname。
- ldap.basedn.指定用于搜索身份验证目录的基本 DN;服务器使用 HTTP 输入中的 uid 字段的值(用户在注册表单中输入的用户)和基本 DN 来构造 LDAP 搜索过滤器。
- ldap.minConns.指定身份验证目录允许的最小连接数。允许的可能值为 1 到 3。
- ldap.maxConns.指定身份验证目录允许的最大连接数。可见的值有 3 到 10。
- 点击。
- 通过在证书配置集中配置输入来自定义注册表单。包括插件验证用户身份所需的信息。如果默认输入不包含需要收集的所有信息,请提交使用第三方工具创建的请求。
9.2.3. 使用基于证书的验证
9.2.4. 配置平面文件身份验证
9.2.4.1. 配置 flatFileAuth 模块
- 打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,在导航树中选择 Authentication。
- 选择 flatFileAuth 身份验证模块。
- 单击。
- 要更改文件位置和名称,请重置 fileName 字段。要更改身份验证名称参数,请将 keyAttributes 值重置为 SCEP 注册表单中提交的另一个值,如 CN。也可以通过逗号(如 UID、CN )来分隔多个名称参数,也可以使用多个名称参数。要更改 password 参数名称,请重置 authAttributes 字段。
- 保存编辑。
9.2.4.2. 编辑 flatfile.txt
flatfile.txt
文件用于验证每个 SCEP 注册。每次向路由器发布新的 PIN 时,都必须手动更新此文件。
/var/lib/pki/pki-ca/ca/
中,并为每个身份验证条目指定两个参数,站点的 UID(通常是它的 IP 地址,可以是 IPv4 或 IPv6),以及路由器发出的 PIN。
UID:192.168.123.123 PIN:HU89dj
UID:192.168.123.123 PIN:HU89dj UID:12.255.80.13 PIN:fiowIO89 UID:0.100.0.100 PIN:GRIOjisf
... flatfile.txt entry ... UID:192.168.123.123 PIN:HU89dj UID:12.255.80.13 PIN:fiowIO89 ... error log entry ... [13/Jun/2020:13:03:09][http-9180-Processor24]: FlatFileAuth: authenticating user: finding user from key: 192.168.123.123 [13/Jun/2020:13:03:09][http-9180-Processor24]: FlatFileAuth: User not found in password file.
9.3. CMC 身份验证插件
CMCAuth
- 当 CA 代理为 CMC 请求签名时,请使用此插件。要使用
CMCAuth
插件,请在注册配置集中设置以下内容:auth.instance_id=CMCAuth
默认情况下,以下注册配置集使用CMCAuth
插件:- 对于系统证书:
caCMCauditSigningCert
caCMCcaCert
caCMCECserverCert
caCMCECsubsystemCert
caCMCECUserCert
caCMCkraStorageCert
caCMCkraTransportCert
caCMCocspCert
caCMCserverCert
caCMCsubsystemCert
- 对于用户证书:
caCMCUserCert
caECFullCMCUserCert
caFullCMCUserCert
CMCUserSignedAuth
- 当用户提交签名或基于 SharedSecret 的 CMC 请求时,请使用此插件。要使用
CMCUserSignedAuth
插件,请在注册配置集中设置以下内容:auth.instance_id=CMCUserSignedAuth
用户签名的 CMC 请求必须由用户的证书签名,该证书包含与请求的证书相同的subjectDN
属性。如果用户已获取了一个签名证书,则您只能使用用户签名的 CMC 请求,以证明其用于其他证书的身份。基于 SharedSecret 的 CMC 请求表示请求由请求本身的私钥签名。在这种情况下,CMC 请求必须使用 Shared Secret 机制进行身份验证。基于 SharedSecret 的 CMC 请求通常是用来获取用户的第一个签名证书,稍后用于获取其他证书。详情请查看 第 9.4 节 “CMC SharedSecret 身份验证”。默认情况下,以下注册配置集使用CMCUserSignedAuth
插件:caFullCMCUserSignedCert
caECFullCMCUserSignedCert
caFullCMCSharedTokenCert
caECFullCMCSharedTokenCert
9.5. 测试注册
- 打开"终端"页面。
http
s
://server.example.com:8443/ca/ee/ca
- 在 Enrollment 选项卡中,打开自定义注册表单。
- 填写值并提交请求。
- 提示时输入密钥数据库的密码。
- 输入正确的密码时,客户端会生成密钥对。不要中断密钥进程。在完成密钥生成后,请求将提交到服务器以发布证书。服务器对证书配置文件的请求进行约束,只有在请求满足所有要求时才会发布证书。签发证书后,在浏览器中安装证书。
- 验证证书是否在浏览器的证书数据库中安装。
- 如果基于 PIN 的目录身份验证配置了 PIN 删除,则使用同一 PIN 为另一个证书重新注册。请求应该被拒绝。
9.6. 注册自定义身份验证插件
- 创建自定义身份验证类。在本例中,自定义身份验证插件名为
UidPwdDirAuthenticationTestms.java
。 - 编译新类。
javac -d . -classpath $CLASSPATH UidPwdDirAuthenticationTestms.java
- 在 CA 的
WEB-INF
web 目录中创建一个目录来存放自定义类,以便 CA 可以访问它们以获取报名表。mkdir /usr/share/pki/ca/webapps/ca/WEB-INF/classes
- 将新插件文件复制到
新类
目录中,并将所有者设置为证书证书系统nbsp;System 系统用户(pkiuser
)。cp -pr com /usr/share/pki/ca/webapps/ca/WEB-INF/classes chown -R pkiuser:pkiuser /usr/share/pki/ca/webapps/ca/WEB-INF/classes
- 登录到控制台。
pkiconsole https://server.example.com:8443/ca
- 注册插件。
- 在 Configuration 选项卡中,单击导航树中的 Authentication。
- 在右侧窗格中,单击 Authentication Plug-in Registration 选项卡。选项卡中列出了已经注册的模块。
- 要注册插件,请点击。此时会出现 Register Authentication Plug-in Implementation 窗口。
- 通过填写以下两个字段来注册的模块:
- 插件名称。模块的名称。
- 类名称。此模块的类全名。这是实现 Java™ 类的路径。如果这个类是软件包的一部分,请包含软件包名称。例如,要在名为 com.customplugins 的软件包中注册名为 customAuth 的类,类名称为 com.customplugins.customAuth。
- 在注册该模块后,将模块添加为活跃的身份验证实例。
- 在 Configuration 选项卡中,单击导航树中的 Authentication。
- 在右侧窗格中,单击 Authentication Instance 选项卡。
- 点。
- 从列表中选择自定义模块
UidPwdDirAuthenticationTestms.java
以添加模块。填写该模块的适当配置。
- 创建新的端到端注册表,以使用新的身份验证模块。
cd /var/lib/pki/pki-tomcat/ca/profiles/ca cp -p caDirUserCert.cfg caDirUserCertTestms.cfg vi caDirUserCertTestms.cfg desc=Test ms - This certificate profile is for enrolling user certificates with directory-based authentication. visible=true enable=true enableBy=admin name=Test ms - Directory-Authenticated User Dual-Use Certificate Enrollment
auth.instance_id=testms
... - 将新配置集添加到 CA 的
CS.cfg
文件中。提示编辑前备份CS.cfg
文件。vim /var/lib/pki/instance-name/ca/conf/CS.cfg profile.list=caUserCert,caDualCert,caSignedLogCert,caTPSCert,caRARouterCert,caRouterCert,caServerCert,caOtherCert,caCACert,caInstallCACert,caRACert,caOCSPCert,caTransportCert,caDirUserCert,caAgentServerCert,caAgentFileSigning,caCMCUserCert,caFullCMCUserCert,caSimpleCMCUserCert,caTokenDeviceKeyEnrollment,caTokenUserEncryptionKeyEnrollment,caTokenUserSigningKeyEnrollment,caTempTokenDeviceKeyEnrollment,caTempTokenUserEncryptionKeyEnrollment,caTempTokenUserSigningKeyEnrollment,caAdminCert,caInternalAuthServerCert,caInternalAuthTransportCert,caInternalAuthKRAstorageCert,caInternalAuthSubsystemCert,caInternalAuthOCSPCert,DomainController,
caDirUserCertTestms
... profile.caDirUserCertTestms.class_id=caEnrollImpl profile.caDirUserCertTestms.config=/var/lib/pki/pki-tomcat/ca/profiles/ca/caDirUserCertTestms.cfg - 重启 CA。
systemctl restart pki-tomcatd@instance_name.service
9.7. 使用命令行手动检查证书状态
pki
命令行界面的详情,请参考 第 2.5.1.1 节 “pki CLI initialization”。
- 显示待处理的证书请求列表:
$ pki agent_authentication_parameters ca-cert-request-find --status pending
此命令列出所有待处理的证书请求。 - 下载特定证书请求:
$ pki agent_authentication_parameters ca-cert-request-review id --file request.xml
- 在编辑器或一个单独的终端中打开
request.xml
文件,并查看请求的内容以确保其是合法的。然后,回答提示:如果请求有效,回答"批准 并按 Enter 键。如果请求无效,请回答 reject 并按 Enter。组织可以订阅语义差别 以拒绝 和 取消 ;它们都无法发布证书。
9.8. 使用 Web 界面手动检查证书状态
- 在网页浏览器中打开以下 URL:
https://server_host_name:8443/ca/agent/ca
- 作为代理进行身份验证。有关以用户身份进行身份验证和配置浏览器的详情,请参考 第 2.4.1 节 “浏览器初始化”。
- 在左侧的边栏中,单击 List requests 链接。
- 选择 Show all requests for Request type and Show pending requests for Request status 来过滤请求。
- 点右下角的。
- results 页面会列出等待查看的所有待处理请求。点击请求号来查看请求。
- 检查请求信息并确保它是合法的请求。如有必要,修改策略信息以更正任何错误,或对证书进行任何更改,例如更改 未有效的 after 字段。(可选)保留额外的备注。下拉菜单包括几个检查状态更新。选择 Approve request 以批准批准请求或拒绝请求以拒绝它,然后单击 。机构可以订阅语义差别,以拒绝请求和 取消请求 ;它们都没有签发证书。
第 10 章 注册证书授权(访问 Evaluators)
10.1. 授权机制
类型
、op
、值
),评估表达式,如 group='Certificate Manager Agents'
,并根据评估结果返回布尔值。
10.2. 默认评估器
CS.cfg
文件中会默认列出以下条目:
accessEvaluator.impl.group.class=com.netscape.cms.evaluators.GroupAccessEvaluator accessEvaluator.impl.ipaddress.class=com.netscape.cms.evaluators.IPAddressAccessEvaluator accessEvaluator.impl.user.class=com.netscape.cms.evaluators.UserAccessEvaluator accessEvaluator.impl.user_origreq.class=com.netscape.cms.evaluators.UserOrigReqAccessEvaluator
组
访问评估器评估用户的组成员资格属性。例如,在以下注册配置集条目中,只有 CA 代理才可以使用该配置集进行注册:
authz.acl=group="Certificate Manager Agents"
ipaddress
access evaluator 评估请求主体的 IP 地址。例如,在以下注册配置集条目中,只有指定 IP 地址的主机才可以使用该配置集进行注册:
authz.acl=ipaddress="a.b.c.d.e.f"
例如,在以下注册配置集条目中,只有与列出的用户匹配的用户才可以使用该配置集进行注册:
authz.acl=user="bob"
user_origreq
访问 evaluator 根据前一个匹配的请求评估经过身份验证的用户。此特殊评估器专门设计用于续订的用户,确保请求续订的用户是拥有原始请求的用户。例如,在以下续订注册配置集条目中,经过身份验证的用户的 UID 必须与请求续订的用户 UID 匹配:
authz.acl=user_origreq="auth_token.uid"
第 11 章 使用自动通知
11.1. 关于 CA 自动通知
11.1.1. 自动通知的类型
- 证书颁发的.通知消息会自动发送给已签发证书的用户。如果用户的证书请求被拒绝,则会向用户发送拒绝消息。
- 证书撤销.在撤销用户证书时,会自动向用户发送通知消息。
- 在 Queue 中请求。当请求使用为代理设置的电子邮件地址时,当请求进入代理时,通知消息会自动发送到一个或多个代理。此通知类型在每次消息进入队列时发送电子邮件。有关队列作业中请求的更多信息,请参阅 第 12.1.2.2 节 “requestInQueueNotifier (RequestInQueueJob)”。还有一个作业,将通知发送到队列状态的代理,其中包括队列状态在特定时间段内的摘要。
11.1.2. 确定最终用户地址
11.2. 为 CA 设置自动通知
11.2.1. 在控制台中设置自动通知
- 打开证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 打开 Configuration 选项卡。
- 在左侧的导航树中打开 Certificate Manager 标题。然后选择 通知。Notification 标签页会出现在窗口的右侧。
- 可以为三种事件发送通知:新发布的证书、撤销证书和新证书请求。要为任何事件发送通知,选择选项卡,选中" 启用 "复选框,并在以下字段中指定信息:
- 发件人的电子邮件地址 .键入收到发送问题的用户的发件人完整电子邮件地址。
- 收件人的电子邮件地址 .这些是将检查队列的代理的电子邮件地址。要列出多个接收者,请使用逗号将电子邮件地址分开。仅适用于队列中的新请求。
- 主题.键入通知的主题标题。
- 内容模板路径.键入路径,包括文件名,到包含模板用来构造消息内容的目录。
- 点。注意确保邮件服务器设置正确。请参阅 第 11.4 节 “为证书证书系统配置邮件服务器; 系统通知”。
- 自定义通知消息模板。如需更多信息,请参阅 第 11.3 节 “自定义通知消息”。
- 测试配置。请参阅 第 11.2.3 节 “测试配置”。
11.2.2. 通过编辑 CS.cfg 文件配置特定通知
- 停止 CA 子系统。
systemctl stop pki-tomcatd@instance_name.service
- 打开该实例的
CS.cfg
文件。此文件位于实例的conf/
目录中。 - 编辑正在启用的通知类型的所有配置参数。对于证书发出通知,有四个参数:
ca.notification.certIssued.emailSubject ca.notification.certIssued.emailTemplate ca.notification.certIssued.enabled ca.notification.certIssued.senderEmail
对于证书撤销通知,有四个参数:ca.notification.certRevoked.emailSubject ca.notification.certRevoked.emailTemplate ca.notification.certRevoked.enabled ca.notification.certRevoked.senderEmail
对于证书请求通知,有五个参数:ca.notification.requestInQ.emailSubject ca.notification.requestInQ.emailTemplate ca.notification.requestInQ.enabled ca.notification.requestInQ.recipientEmail ca.notification.requestInQ.senderEmail
通知消息的参数在 第 11.2 节 “为 CA 设置自动通知” 中解释。 - 保存该文件。
- 重启 CA 实例。
systemctl start pki-tomcatd@instance_name.service
- 如果创建了作业来发送自动化消息,请检查邮件服务器是否已正确配置。请参阅 第 11.4 节 “为证书证书系统配置邮件服务器; 系统通知”。
- 自动发送的消息可以自定义;如需更多信息,请参阅 第 11.3 节 “自定义通知消息”。
11.2.3. 测试配置
- 将队列通知中请求的通知电子邮件地址更改为可访问代理或管理员电子邮件地址。
- 打开终端页面,并使用代理批准的报名表请求证书。当请求排队进行代理批准时,应该发送 request-in-queue 电子邮件通知。检查消息以查看它是否包含配置信息。
- 登录到代理接口,并批准请求。当服务器发布证书时,用户会向请求中列出的地址收到证书签发的电子邮件通知。检查消息以查看它是否具有正确的信息。
- 登录到代理接口,并撤销证书。用户电子邮件帐户应包含一条电子邮件消息读取证书已被撤销。检查消息以查看它是否具有正确的信息。
11.3. 自定义通知消息
11.3.1. 自定义 CA 通知消息
Your certificate request has been processed successfully. SubjectDN= $SubjectDN IssuerDN= $IssuerDN notAfter= $NotAfter notBefore= $NotBefore Serial Number= 0x$HexSerialNumber To get your certificate, please follow this URL: https://$HttpHost:$HttpPort/displayBySerial?op=displayBySerial& serialNumber=$SerialNumber Please contact your admin if there is any problem. And, of course, this is just a \$SAMPLE\$ email notification form.
THE EXAMPLE COMPANY CERTIFICATE ISSUANCE CENTER Your certificate has been issued! You can pick up your new certificate at the following website: https://$HttpHost:$HttpPort/displayBySerial?op=displayBySerial& serialNumber=$SerialNumber This certificate has been issued with the following information: Serial Number= 0x$HexSerialNumber Name of Certificate Holder = $SubjectDN Name of Issuer = $IssuerDN Certificate Expiration Date = $NotAfter Certificate Validity Date = $NotBefore Contact IT by calling X1234, or going to the IT website http://IT if you have any problems.
/var/lib/pki/instance_name/ca/emails
目录中。
文件名 | 描述 |
---|---|
certIssued_CA | 发布证书时,纯文本通知电子邮件模板到结束实体。 |
certIssued_CA.html | 签发证书时,基于 HTML 的通知电子邮件模板以结束实体。 |
certRequestRejected.html | 当证书请求被拒绝时,基于 HTML 的通知电子邮件模板到最终实体。 |
certRequestRevoked_CA | 撤销证书时,用于纯文本通知电子邮件到结束实体的模板。 |
certRequestRevoked_CA.html | 撤销证书时,基于 HTML 的通知电子邮件模板以结束实体。 |
reqInQueue_CA | 当请求进入队列时,向代理发出纯文本通知电子邮件的模板。 |
reqInQueue_CA.html | 当请求进入队列时,适用于基于 HTML 的通知电子邮件模板到代理。 |
文件名 | 描述 |
---|---|
rnJob1.txt | 用于创建发送到最终用户的消息内容的模板,告知他们其证书即将过期,并在证书过期之前被续订或替换。 |
rnJob1Summary.txt |
构建要发送到代理和管理员的摘要报告的模板。使用
rnJob1Item.txt 模板来格式化消息中的项目。
|
rnJob1Item.txt | 用于格式化摘要报告中包含的项目的模板。 |
riq1Item.html | 用于格式化摘要表中所含项目的模板,该模板使用 riq1Summary.html 模板进行构建。 |
riq1Summary.html |
用于公式表示报告或表的模板,用于概述证书管理器的代理队列中的待处理请求数量。
|
publishCerts |
报告或表的模板,用于汇总要发布到该目录的证书。使用
publishCertsItem.html 模板格式化表中的项目。
|
publishCertsItem.html |
用于格式化摘要表中所含项目的模板。
|
ExpiredUnpublishJob |
汇总从目录中过期的证书的报告或表的模板。使用
ExpiredUnpublishJobItem 模板来格式化表中的项目。
|
ExpiredUnpublishJobItem |
用于格式化摘要表中所含项目的模板。
|
令牌 | 描述 |
---|---|
$CertType |
指定证书的类型,可以是以下任意一种:
|
$ExecutionTime | 给出作业运行的时间。 |
$HexSerialNumber | 为以十六进制格式发布的证书指定序列号。 |
$HttpHost | 授予证书管理器的完全限定主机名,以便最终实体应连接到其证书以检索其证书。 |
$HttpPort | 给出证书管理器的结束日期(非 TLS)端口号。 |
$InstanceID |
提供发送通知的子系统的 ID。
|
$IssuerDN | 提供签发证书的 CA 的 DN。 |
$NotAfter | 提供有效期日期。 |
$NotBefore | 给出有效期限的开始日期。 |
$RecipientEmail | 给出接收者的电子邮件地址。 |
$RequestId | 给出请求 ID。 |
$RequestorEmail | 给出请求者的电子邮件地址。 |
$RequestType | 提出的请求类型。 |
$RevocationDate | 给出证书被撤销的日期。 |
$SenderEmail | 给出发件人的电子邮件地址;这与通知配置中的 Sender 的 E-mail Address 字段中指定的地址 相同。 |
$SerialNumber | 为发出的证书指定序列号 ; 序列号显示为生成的消息中的十六进制值。 |
$Status | 请求状态。 |
$SubjectDN | 提供证书主体的 DN。 |
$SummaryItemList | 列出摘要通知中的项目。每个项目对应作业检测或从发布目录中删除的证书。 |
$SummaryTotalFailure | 指定摘要报告失败的项目总数。 |
$SummaryTotalNum | 指定在队列中待处理的证书请求总数或要从概述报告中的目录中更新或删除的证书总数。 |
$SummaryTotalSuccess | 显示摘要报告中项目总数的数目。 |
11.4. 为证书证书系统配置邮件服务器; 系统通知
11.5. 为 CA 创建自定义通知
第 12 章 设置自动化任务
12.1. 关于自动任务
12.1.1. 设置自动化任务
- 启用和配置作业调度程序 ; 如需更多信息,请参阅 第 12.2 节 “设置作业调度程序”。
- 为这些作业模块启用和配置作业模块并设置首选项 ; 如需更多信息,请参阅 第 12.3 节 “设置特定作业”。
- 通过更改与通知类型关联的模板,自定义这些作业发送的电子邮件通知消息。消息内容由纯文本消息和 HTML 消息组成;通过更改 HTML 模板来修改外观。如需更多信息,请参阅 第 11.3.1 节 “自定义 CA 通知消息”。
12.1.2. Automated 任务类型
12.1.2.1. certRenewalNotifier (RenewalNotificationJob)
12.1.2.2. requestInQueueNotifier (RequestInQueueJob)
12.1.2.3. publishCerts (PublishCertsJob)
12.1.2.4. unpublishExpiredCerts (UnpublishExpiredJob)
12.2. 设置作业调度程序
CS.cfg
文件来完成。
- 打开证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡导航树中,单击 Job Scheduler。这将打开 General Settings 选项卡,其中显示作业调度程序当前是否已启用。
- 单击 Enable Jobs Schedule 复选框,以启用或禁用作业调度程序。禁用作业调度程序会关闭所有作业。
- 设置调度程序在 Check Frequency 字段中检查作业的频率。频率是作业调度程序守护进程线程的启动和调用符合 cron 规格的已配置作业的频率。默认情况下,它被设置为一分钟。注意输入此信息的窗口可能太小以查看输入信息。拖动证书管理器控制台的基石,以扩大整个窗口。
- 点。
12.3. 设置特定作业
12.3.1. 使用证书管理器控制台配置特定作业
- 打开证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 确认作业调度程序已启用。如需更多信息,请参阅 第 12.2 节 “设置作业调度程序”。
- 在 Configuration 选项卡中,从导航树中选择 Job Scheduler。然后选择 Jobs 以打开 Job Instance 选项卡。从列表中选择作业实例,再单击。Job Instance Editor 打开显示当前作业配置。
图 12.1. 作业配置
- 选择 enabled 以打开作业。
- 通过在对话框的字段中指定配置设置来设置配置设置。
- 有关 certRenewalNotifier,请参阅 第 12.3.3 节 “certRenewalNotifier 的配置参数”。
- 对于 requestInQueueNotifier,请参阅 第 12.3.4 节 “requestInQueueNotifier 的配置参数”。
- 有关 发布证书,请参阅 第 12.3.5 节 “发布证书的配置参数”。
- 有关 unpublishExpiredCerts,请参阅 第 12.3.6 节 “unpublishExpiredCerts 的配置参数”。
- 有关设置 cron 时间频率的详情,请参考 第 12.3.7 节 “自动任务的频率设置”。
- 点击。
- 点查看主窗口中的任何更改。
- 如果作业被配置为发送自动消息,请检查邮件服务器是否设置正确。请参阅 第 11.4 节 “为证书证书系统配置邮件服务器; 系统通知”。
- 自定义电子邮件消息文本和外观。
12.3.2. 通过编辑配置文件配置作业
- 确保已启用并配置了 Jobs Scheduler;请参阅 第 12.2 节 “设置作业调度程序”。
- 停止 CA 子系统实例。
systemctl stop pki-tomcatd@instance_name.service
- 在文本编辑器中打开该服务器实例的
CS.cfg
文件。 - 编辑正在配置的作业模块的所有配置参数。
- 要配置 certRenewalNotifier 作业,请编辑以 作业Scheduler.job.certRenewalNotifier 开头的所有参数;请参阅 第 12.3.3 节 “certRenewalNotifier 的配置参数”。
- 要配置 requestInQueueNotifier 作业,请编辑以 作业Scheduler.job.requestInQueueNotifier 开始的所有参数;请参阅 第 12.3.4 节 “requestInQueueNotifier 的配置参数”。
- 要配置发布证书作业,请编辑以 job Scheduler.job. publishCerts 开头的所有参数; 请参阅 第 12.3.5 节 “发布证书的配置参数”。
- 要配置 未发布ExpiredCerts 作业,请编辑以 job Scheduler.job.unpublishExpiredCerts 开头的所有参数;请参阅 第 12.3.6 节 “unpublishExpiredCerts 的配置参数”。
- 保存该文件。
- 重启服务器实例。
systemctl start pki-tomcatd@instance_name.service
- 如果作业将发送自动消息,请检查邮件服务器是否设置正确。请参阅 第 11.4 节 “为证书证书系统配置邮件服务器; 系统通知”。
- 自定义自动作业消息。
12.3.3. certRenewalNotifier 的配置参数
参数 | 描述 |
---|---|
enabled | 指定作业是启用或禁用的。值 true 启用作业; false 可禁用它。 |
cron |
设置应运行此作业时的时间表。这将设置作业调度程序守护进程线程检查发送续订通知的证书的时间。这些设置必须遵循 第 12.3.7 节 “自动任务的频率设置” 中的约定。例如:
0 3 * * 1-5
示例中的作业会在周一到下午 3:00 运行。
|
notifyTriggerOffset | 设定第一次发送通知的证书过期日期前的时长(以天为单位)。 |
notifyEndOffset | 设定证书过期后(以天为单位)在证书没有替换的情况下,继续发送通知的时间。 |
senderEmail | 设置通知消息的发送者,该发件人将收到任何发送问题的通知。 |
emailSubject | 设置通知消息的主题行文本。 |
emailTemplate | 将路径(包括 文件名)设置为包含模板用来创建消息内容的目录。 |
summary.enabled | 设定续订通知的摘要报告应编译和发送。值 true 启用发送概述; false 可禁用它。如果启用,请设置剩余的摘要参数;服务器需要它们来发送摘要报告。 |
summary.recipientEmail | 指定概述信息的接收者。这些可以是需要知道用户证书或其他用户状态的代理。通过使用逗号分隔每个电子邮件地址来设定多个接收者。 |
summary.senderEmail | 指定摘要消息的发件人电子邮件地址。 |
summary.emailSubject | 提供摘要消息的主题行。 |
summary.itemTemplate | 将路径(包括 文件名)指定到包含模板的目录,用于创建概述报告中各个项目的内容和格式。 |
summary.emailTemplate | 将路径(包括 文件名)指定到包含用于创建摘要报告电子邮件通知的 目录。 |
12.3.4. requestInQueueNotifier 的配置参数
CS.cfg
文件或证书管理器控制台中配置的每个参数的详细信息。
参数 | 描述 |
---|---|
enabled | 设定作业是否已启用(true)还是禁用(false)。 |
cron |
设置作业应运行时的时间表。这是作业调度程序守护进程线程检查待处理请求的队列的时间。这个设置必须遵循 第 12.3.7 节 “自动任务的频率设置” 中的约定。例如:
0 0 * * 0 |
subsystemid | 指定运行作业的子系统。对于证书管理器,唯一可能的值是 ca。 |
summary.enabled | 指定作业完成的摘要应该被编译和发送。值 true 启用摘要报告; false 可禁用它们。如果启用,请设置剩余的摘要参数;服务器需要它们来发送摘要报告。 |
summary.emailSubject | 设置摘要消息的主题行。 |
summary.emailTemplate | 指定包含用于创建摘要报告的模板的目录的路径,包括文件名。 |
summary.senderEmail | 指定通知消息的发送者,该发件人将收到任何发送问题的通知。 |
summary.recipientEmail | 指定概述信息的接收者。这些可以是需要处理待处理请求或其他用户的代理。通过使用逗号分隔每个电子邮件地址来列出多个接收者。 |
12.3.5. 发布证书的配置参数
参数 | 描述 |
---|---|
enabled | 设置作业是否启用。启用 true 的值为 true;禁用 false。 |
cron |
设置作业运行的时间调度。这是作业调度程序守护进程线程检查证书以从发布目录中删除过期的证书的时间。这个设置必须遵循 第 12.3.7 节 “自动任务的频率设置” 中的约定。例如:
0 0 * * 6 |
summary.enabled | 指定作业发布的证书的摘要应该被编译并发送。value true 启用摘要; false 可禁用它们。如果启用,请设置剩余的摘要参数;服务器需要它们来发送摘要报告。 |
summary.emailSubject | 提供摘要消息的主题行。 |
summary.emailTemplate | 指定包含用于创建摘要报告的模板的目录的路径,包括文件名。 |
summary.itemTemplate | 指定包含模板的目录的路径,包括文件名,用于创建摘要报告收集的每个项目的内容和格式。 |
summary.senderEmail | 指定摘要消息的发送者,该发件人将收到任何发送问题的通知。 |
summary.recipientEmail | 指定概述信息的接收者。这些可以是需要知道用户证书或其他用户状态的代理。可以通过使用逗号分隔每个电子邮件地址来设置多个接收者。 |
12.3.6. unpublishExpiredCerts 的配置参数
CS.cfg
文件中或证书管理器控制台)配置的每个参数的详细信息。
参数 | 描述 |
---|---|
enabled | 设置作业是否启用。启用 true 的值为 true;禁用 false。 |
cron |
设置作业运行的时间调度。这是作业调度程序守护进程线程检查证书以从发布目录中删除过期的证书的时间。这个设置必须遵循 第 12.3.7 节 “自动任务的频率设置” 中的约定。例如:
0 0 * * 6 |
summary.enabled | 指定作业发布的证书的摘要应该被编译并发送。value true 启用摘要; false 可禁用它们。如果启用,请设置剩余的摘要参数;服务器需要它们来发送摘要报告。 |
summary.emailSubject | 提供摘要消息的主题行。 |
summary.emailTemplate | 指定包含用于创建摘要报告的模板的目录的路径,包括文件名。 |
summary.itemTemplate | 指定包含模板的目录的路径,包括文件名,用于创建摘要报告收集的每个项目的内容和格式。 |
summary.senderEmail | 指定摘要消息的发送者,该发件人将收到任何发送问题的通知。 |
summary.recipientEmail | 指定概述信息的接收者。这些可以是需要知道用户证书或其他用户状态的代理。可以通过使用逗号分隔每个电子邮件地址来设置多个接收者。 |
12.3.7. 自动任务的频率设置
Minute Hour Day_of_month Month_of_year Day_of_week
字段 | 值 |
---|---|
minute | 0-59 |
hour | 0-23 |
几号 | 1-31 |
年月 | 1-12 |
周几 | 0-6 (where 0=Sunday) |
15 * * * *
0 12 12 4 *
0 0 1,15 * 1
15 3 * * 1-5
12.4. 注册一个 Job 模块
- 创建自定义作业类。在本例中,自定义作业插件名为
MyJob.java
。 - 编译新类。
javac -d . -classpath $CLASSPATH MyJob.java
- 在 CA 的
WEB-INF
Web 目录中创建用于存放自定义类的目录,以便 CA 可以访问它们。mkdir /var/lib/pki/instance_name/ca/webapps/ca/WEB-INF/classes
- 将新插件文件复制到
新类
目录中,并将所有者设置为证书证书系统nbsp;System 系统用户(pkiuser
)。cp -pr com /var/lib/pki/instance_name/ca/webapps/ca/WEB-INF/classes chown -R pkiuser:pkiuser /var/lib/pki/instance_name/ca/webapps/ca/WEB-INF/classes
- 注册插件。
- 登录到证书管理器控制台。
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,选择左侧导航树中的 Job Scheduler。选择 Jobs。Job Instance 标签页会打开,它会列出所有当前配置的作业。选择 Job Plugin Registration 选项卡。
- 单击以添加新模块。
- 在 Register Job Scheduler Plugin Implementation 窗口中,提供以下信息:
- 插件名称。输入插件模块的名称。
- 类名称。输入此模块类的全名;这是实施 Java™ 类的路径。如果这个类是软件包的一部分,请包含软件包名称。例如,若要在名为 com.customplugins 的软件包中注册一个名为 customJob 的类,请键入 com.customplugins.customJob。
- 点击。
部分 IV. 管理 subsystem 实例
第 13 章 基本子系统管理
13.1. PKI 实例
- 独立的 PKI 实例
- 作为单一基于 Java 的 Apache Tomcat 实例运行,
- 包含一个 PKI 子系统(CA、KRA、OCSP、TKS 或 TP)以及
- 如果在同一物理机器或虚拟机(VM)上共存,则必须使用唯一端口。
- 共享 PKI 实例
- 作为单一基于 Java 的 Apache Tomcat 实例运行,
- 可以包含与单独的 PKI 实例相同的 PKI 子系统,
- 可以包含最多一种 PKI 子系统的任意组合:
- CA
- TKS
- CA, KRA
- CA, OCSP
- TKS, TPS
- CA、KRA、TKS、TPS
- CA, KRA, OCSP, TKS, TPS
- 以此类推。
- 允许该实例中包含的所有子系统共享相同的端口,以及
- 如果多个端口在同一物理机器或虚拟机上在一起,则必须利用唯一端口。
13.2. PKI 实例执行管理
13.2.1. 启动、停止和重启 PKI 实例
systemd
的其他系统程序一样。
- 以 root 用户身份登录服务器计算机。
- 运行 systemctl 命令,指定操作和实例名称:
systemctl start|stop|restart pki-tomcatd@instance_name.service
例如:systemctl restart pki-tomcatd@pki-tomcat.service
13.2.2. 在机器重启后重启 PKI 实例
- 如果子系统使用的 Directory 服务器实例安装在本地计算机上,请重新启动 Administration Server 和 Directory Server 进程。
systemctl start dirsrv-admin.service systemctl start dirsrv@instance_name.service
- 启动证书证书系统nbsp; 系统子系统实例。
systemctl start pki-tomcatd@instance_name.service
13.2.3. 检查 PKI 实例状态
systemctl -l status pki-tomcatd@pki-tomcat.service pki-tomcatd@pki-tomcat.service - PKI Tomcat Server pki-tomcat Loaded: loaded (/lib/systemd/system/pki-tomcatd@.service; enabled) Active: inactive (dead) since Fri 2015-11-20 19:04:11 MST; 12s ago Process: 8728 ExecStop=/usr/libexec/tomcat/server stop (code=exited, status=0/SUCCESS) Process: 8465 ExecStart=/usr/libexec/tomcat/server start (code=exited, status=143) Process: 8316 ExecStartPre=/usr/bin/pkidaemon start tomcat %i (code=exited, status=0/SUCCESS) Main PID: 8465 (code=exited, status=143) Nov 20 19:04:10 pki.example.com server[8728]: options used: -Dcatalina.base=/var/lib/pki/pki-tomcat -Dcatalina.home=/usr/share/tomcat -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/lib/pki/pki-tomcat/temp -Djava.util.logging.config.file=/var/lib/pki/pki-tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager Nov 20 19:04:10 pki.example.com server[8728]: arguments used: stop Nov 20 19:04:11 pki.example.com server[8465]: Nov 20, 2015 7:04:11 PM org.apache.catalina.core.StandardServer await Nov 20 19:04:11 pki.example.com server[8465]: INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance. Nov 20 19:04:11 pki.example.com server[8465]: PKIListener: org.apache.catalina.core.StandardServer[before_stop] Nov 20 19:04:11 pki.example.com server[8465]: PKIListener: org.apache.catalina.core.StandardServer[stop] Nov 20 19:04:11 pki.example.com server[8465]: PKIListener: org.apache.catalina.core.StandardServer[configure_stop] Nov 20 19:04:11 pki.example.com server[8465]: Nov 20, 2015 7:04:11 PM org.apache.coyote.AbstractProtocol pause Nov 20 19:04:11 pki.example.com server[8465]: INFO: Pausing ProtocolHandler ["http-bio-8080"] Nov 20 19:04:11 pki.example.com systemd[1]: Stopped PKI Tomcat Server pki-tomcat.
systemctl -l status pki-tomcatd@pki-tomcat.service pki-tomcatd@pki-tomcat.service - PKI Tomcat Server pki-tomcat Loaded: loaded (/lib/systemd/system/pki-tomcatd@.service; enabled) Active: active (running) since Fri 2015-11-20 19:09:09 MST; 3s ago Process: 8728 ExecStop=/usr/libexec/tomcat/server stop (code=exited, status=0/SUCCESS) Process: 9154 ExecStartPre=/usr/bin/pkidaemon start tomcat %i (code=exited, status=0/SUCCESS) Main PID: 9293 (java) CGroup: /system.slice/system-pki\x2dtomcatd.slice/pki-tomcatd@pki-tomcat.service ������9293 java -DRESTEASY_LIB=/usr/share/java/resteasy-base -Djava.library.path=/usr/lib64/nuxwdog-jni -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/var/lib/pki/pki-tomcat -Dcatalina.home=/usr/share/tomcat -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/lib/pki/pki-tomcat/temp -Djava.util.logging.config.file=/var/lib/pki/pki-tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.security.manager -Djava.security.policy==/var/lib/pki/pki-tomcat/conf/catalina.policy org.apache.catalina.startup.Bootstrap start Nov 20 19:09:10 pki.example.com server[9293]: Nov 20, 2015 7:09:10 PM org.apache.catalina.core.StandardService startInternal Nov 20 19:09:10 pki.example.com server[9293]: INFO: Starting service Catalina Nov 20 19:09:10 pki.example.com server[9293]: Nov 20, 2015 7:09:10 PM org.apache.catalina.core.StandardEngine startInternal Nov 20 19:09:10 pki.example.com server[9293]: INFO: Starting Servlet Engine: Apache Tomcat/7.0.54 Nov 20 19:09:10 pki.example.com server[9293]: Nov 20, 2015 7:09:10 PM org.apache.catalina.startup.HostConfig deployDescriptor Nov 20 19:09:10 pki.example.com server[9293]: INFO: Deploying configuration descriptor /etc/pki/pki-tomcat/Catalina/localhost/ROOT.xml Nov 20 19:09:12 pki.example.com server[9293]: Nov 20, 2015 7:09:12 PM org.apache.catalina.startup.HostConfig deployDescriptor Nov 20 19:09:12 pki.example.com server[9293]: INFO: Deployment of configuration descriptor /etc/pki/pki-tomcat/Catalina/localhost/ROOT.xml has finished in 2,071 ms Nov 20 19:09:12 pki.example.com server[9293]: Nov 20, 2015 7:09:12 PM org.apache.catalina.startup.HostConfig deployDescriptor Nov 20 19:09:12 pki.example.com server[9293]: INFO: Deploying configuration descriptor /etc/pki/pki-tomcat/Catalina/localhost/pki#admin.xml
13.2.4. 配置 PKI 实例以自动启动重启
# systemctl enable dirsrv-admin.service # systemctl enable dirsrv.target # systemctl enable pki-tomcatd@pki-tomcat.service
# systemctl disable pki-tomcatd@pki-tomcat.service # systemctl disable dirsrv.target # systemctl disable dirsrv-admin.service
13.2.5. 为证书证书 Systemnbsp 设置 sudo 权限; 系统服务
pkiadmin
系统组。(详情请参考 Red Hat Certificate System 9 规划、安装和部署指南。) 所有为 CertificateCertificate Systemnbsp 的操作系统用户; 然后,系统管理员会添加到该组中。如果存在 pkiadmin
系统组,则可以被授予 sudo 访问权限来执行某些任务。
- 编辑
/etc/sudoers
文件;在 Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux 7 中,可以使用 visudo 命令实现这一目的:# visudo
- 根据机器上安装的内容,为 Directory Server、管理服务器、PKI 管理工具和每个 PKI 子系统实例添加一行,为 pkiadmin 组授予 sudo 权限:
# For Directory Server services %pkiadmin ALL = PASSWD: /usr/bin/systemctl * dirsrv.target %pkiadmin ALL = PASSWD: /usr/bin/systemctl * dirsrv-admin.service # For PKI instance management %pkiadmin ALL = PASSWD: /usr/sbin/pkispawn * %pkiadmin ALL = PASSWD: /usr/sbin/pkidestroy * # For PKI instance services %pkiadmin ALL = PASSWD: /usr/bin/systemctl * pki-tomcatd@instance_name.service
13.3. 打开 subsystem 控制台和服务
13.3.1. 查找 subsystem Web Services 页面
https://server.example.com:8443/ca/services
https
://server.example.com:8443/ca/ee/ca
https://1.2.3.4:8443/ca/services https://[00:00:00:00:123:456:789:00:]:8443/ca/services
用于 SSL | 用于客户端身份验证[a] | Web 服务 | Web 服务位置 |
---|---|---|---|
证书管理器 | |||
否 | 结束实体 | ca/ee/ca/ | |
是 | 否 | 结束实体 | ca/ee/ca |
是 | 是 | 代理 | ca/agent/ca |
是 | 否 | 服务 | ca/services |
是 | 否 | 控制台(Console) | pkiconsole https://host:port/ca |
密钥恢复授权 | |||
是 | 是 | 代理 | kra/agent/kra |
是 | 否 | 服务 | kra/services |
是 | 否 | 控制台(Console) | pkiconsole https://host:port/kra |
在线证书状态管理器 | |||
是 | 是 | 代理 | ocsp/agent/ocsp |
是 | 否 | 服务 | ocsp/services |
是 | 否 | 控制台(Console) | pkiconsole https://host:port/ocsp |
令牌密钥服务 | |||
是 | 否 | 服务 | tks/services |
是 | 否 | 控制台(Console) | pkiconsole https://host:port/tks |
令牌处理系统 | |||
是 | 服务 | index.cgi | |
13.3.2. 启动证书证书 Systemnbsp;System Administrative Console
pkiconsole https://server.example.com:admin_port/subsystem_type
pkiconsole https://server.example.com:8443/kra
pkiconsole https://1.2.3.4:8443/ca pkiconsole https://[00:00:00:00:123:456:789:00:]:8443/ca
13.3.3. 为 Java 管理控制台启用 SSL
- 使用这个系统的任何管理员存储证书。证书应该来自 CA 本身,或者从哪个 CA 签署该子系统的证书。
- 打开子系统控制台。
- 选择左侧的 "用户和组" 选项。
- 在 Users 选项卡中,选择管理用户,再单击 。
- 点。
- 粘贴到 base-64 编码的 SSL 客户端证书中,如保存在 web 浏览器中的管理员证书。
确保客户端证书适用于 SSL 客户端身份验证;否则,服务器将不接受客户端证书,并将在/var/log/
instanceID/system
中的错误日志中发布错误消息:failure (14290): Error receiving connection SEC_ERROR_INADEQUATE_CERT_TYPE - Certificate type not approved for application.)
- 停止子系统。
systemctl stop pki-tomcatd@instance_name.service
- 打开实例配置目录
/var/lib/pki/instance_name/subsystem_type/conf
。 - 打开文件
CS.cfg
。 - 将 authType 参数的值从 pwd 更改为 sslclientauth :
authType=sslclientauth
- 保存该文件。
- 打开
server.xml
文件。 - 将 admin 接口连接器部分中的 clientAuth="false" 属性更改为 clientAuth="want "。
<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true"
clientAuth="want"
sslProtocol="SSL" ..... serverCertFile="/var/lib/pki/pki-tomcat/conf/serverCertNick.conf" passwordFile="/var/lib/pki/pki-tomcat/conf/password.conf" passwordClass="org.apache.tomcat.util.net.jss.PlainPasswordFile" certdbDir="/var/lib/pki/pki-tomcat/alias"/>want 值表示首选客户端身份验证,但不是必需的。这样,客户端通过可轻松使用它(如控制台)的接口进行身份验证,同时仍然允许客户端验证(安全域内的其他子系统)使用常规连接进行连接。 - 启动子系统。
systemctl start pki-tomcatd@instance_name.service
.redhat-idm-console
目录中。
.p12
文件中,然后使用 pk12util 导入该文件,或者将浏览器的证书和密钥数据库复制到 .redhat-idm-console
目录中。(这个步骤假定证书从浏览器导出到 .p12
文件中。)
- 将管理员用户证书和密钥从浏览器导出到文件,如
admin.p12
。 - 打开用户的控制台目录。
/user-directory/.redhat-idm-console
- 如有必要,创建新的安全数据库。
certutil -N -d .
- 停止证书证书 Systemnbsp;System 实例。
systemctl stop pki-tomcatd@instance_name.service
- 使用 pk12util 导入证书。
# pk12util -i /tmp/admin.p12 -d /user-directory/.redhat-idm-console -W [p12filepassword]
如果这个过程成功,命令会输出以下内容:pk12util: PKCS12 IMPORT SUCCESSFUL
- 从浏览器中导出发布 CA 证书的 64 位 Blob,并将其保存到类似
ca.crt
的文件。 - 从与 admin 用户证书关联的基本 64blob 中导入 CA 证书。
certutil -A -d . -n ca -t CT,C,C -i ./ca.crt
- 启动证书证书系统nbsp;System 实例。
systemctl start pki-tomcatd@instance_name.service
- 启动控制台;现在,它会提示输入证书。
13.4. 在 Java 安全管理器下运行子系统
13.4.1. 关于安全管理器策略文件
- 来自
/usr/share/tomcat/conf
目录中的默认 Tomcat 策略中的catalina.policy
文件 ; 每当更新常规 Tomcat 文件时更新。 - 在
/var/lib/pki/instance_name/subsystem_type/conf 目录中提供的
pki.policy
文件,它随子系统实例提供。 - 在
/var/lib/pki/instance_name/subsystem_type/conf 目录中有一个
custom.policy
文件,其中包含用户定义的安全策略。
catalina.policy
文件时,这三个文件也会连接在一起,该文件也位于 /var/lib/pki/instance_name/subsystem_type/conf
目录中。
pki.policy
文件包含授予 PKI 子系统使用的 Tomcat、LDAP 和 symkey 服务对不受限制的访问权限的权限。例如:
// These permissions apply to Tomcat java as utilized by PKI instances grant codeBase "file:/usr/share/java/tomcat/-" { permission java.security.AllPermission; };
custom.policy
文件默认为空;管理员可以在文件中写入策略,除了给定的 PKI 策略和 Tomcat 策略外,还会使用该文件。
13.4.2. 在不使用 Java 安全管理器的情况下启动 subsystem 实例
/etc/pki/default.cfg
文件的 [Tomcat] 部分下的 pki_security_manager=true
创建)但是,可以启动或重启实例,并在不启动 Java 安全管理器的情况下运行 它,如下所示。
过程 13.1. 在没有 Java Security Manager 的情况下启动实例
- 停止该实例。
# systemctl stop pki-tomcatd@instance_name.service
- 编辑
/etc/sysconfig/instance_name
文件并关闭安全管理器:SECURITY_MANAGER="false"
- 启动实例。
# systemctl start pki-tomcatd@instance_name.service
13.5. 配置 LDAP 数据库
- 存储和检索证书请求
- 存储和检索证书记录
- 存储 CRL
- 存储 ACL
- 存储特权用户和角色信息
- 存储和检索最终用户的加密密钥记录
/slapd-
DS_name/db/
目录中的其他 Directory Server 数据库。这些数据库通过 /etc/pki/default.cfg
文件中的 pki_ds_database
变量的值确定的值(CS_instance_name-CA,CS_instance_name-KRA,CS_instance_name-OCSP OCSP ,CS_instance_name-TKS, CS_instance_name-TPS 默认是实例配置期间给出的默认格式。例如,对于名为 ca1 的证书管理器,数据库名称为 ca1-CA。同样,数据库名称由 /etc/pki/default.cfg
文件中的 pki_ds_base_dn
变量的值决定,(o=CS_instance_name-CA, o=CS_instance_name-KRA, o=CS_instance_name-OCSP, o=CS_instance_name-OCSP, O=CS_instance_name-TKS,默认是 o=CS_instance_name-TPS,也在配置期间设置。
13.5.1. 更改内部数据库配置
- 登录子系统管理控制台。
pkiconsole https://server.example.com:admin_port/subsystem_type
- 在 Configuration 选项卡中,选择 Internal Database 选项卡。
- 通过更改主机名、端口和绑定 DN 字段来更改目录服务器实例。hostname 是安装 Directory 服务器的机器的完全限定主机名,如 certificate. example.com。CertificateCertificate Systemnbsp;System 使用此名称来访问目录。默认情况下,用作内部数据库的 Directory 服务器实例的主机名显示为 localhost,而不是实际主机名。这是为了防止内部数据库在系统外部可见,因为 localhost 上的服务器只能从本地计算机进行访问。因此,默认配置可最大程度减少从本地机器外连接到这个目录服务器实例的风险。如果内部数据库的可见性仅限于本地子网,可以将主机名更改为 localhost 以外的其他名称。例如,如果证书Certificate Systemnbsp;System 和 Directory Server 安装在单独的机器上以进行负载平衡,请指定安装目录服务器的机器的主机名。端口号是用于与 Directory 服务器的非 SSL 通信的 TCP/IP 端口。DN 应该是 Directory Manager DN。CertificateCertificate Systemnbsp;System 子系统在访问目录树与目录通信时使用此 DN。
- 点。配置已被修改。如果更改需要重新启动服务器,则会出现包含该消息的提示。在这种情况下,重启服务器。
13.5.2. 在目录服务器中使用证书系统发布的证书
- 在 Directory Server 主机上:
- 停止 Directory 服务器实例:
# systemctl stop dirsrv@instance_name
- 生成证书签名请求(CSR)。例如,生成一个使用 2048 位 RSA 加密的 CSR,并将其存储在
~/ds.csr
文件中:# PKCS10Client -d /etc/dirsrv/slapd-instance_name/ -p password -a rsa -l 2048 -o ~/ds.csr -n "CN=$HOSTNAME" PKCS10Client: Debug: got token. PKCS10Client: Debug: thread token set. PKCS10Client: token Internal Key Storage Token logged in... PKCS10Client: key pair generated. PKCS10Client: CertificationRequest created. PKCS10Client: b64encode completes. Keypair private key id: -3387b397ebe254b91c5d6c06dc36618d2ea8b7e6 -----BEGIN CERTIFICATE REQUEST----- ... -----END CERTIFICATE REQUEST----- PKCS10Client: done. Request written to file: ~/ds.csr
- 启动 Directory 服务器实例,以启用 CA 来处理请求:
# systemctl start dirsrv@instance_name
- 将 CSR 提交到证书系统的 CA。例如:
# pki -d /etc/dirsrv/slapd-instance_name/ ca-cert-request-submit --profile caServerCert --csr-file ~/ds.csr ----------------------------- Submitted certificate request ----------------------------- Request ID: 13 Type: enrollment Request Status: pending Operation Result: success
- 在证书系统主机上:
- 将 CA 代理证书导入到网络安全服务(NSS)数据库中以签署 CMC 完整请求:
- 创建新目录。例如:
# mkdir ~/certs_db/
- 在新创建的目录中初始化数据库:
# certutil -N -d ~/certs_db/
- 显示 CA 签名证书的序列号:
# pki -p 8080 ca-cert-find --name "CA Signing Certificate" --------------- 1 entries found --------------- Serial Number: 0x87bbe2d ...
- 使用上一步中的序列号,将 CA 签名证书下载到
~/certs_db/CA.pem
文件中:# pki -p 8080 ca-cert-show 0x87bbe2d --output ~/certs_db/CA.pem
- 将 CA 签名证书导入到 NSS 数据库中:
# pki -d ~/certs_db/ -c password client-cert-import "CA Certificate" --ca-cert ~/certs_db/CA.pem
- 导入代理证书:
# pk12util -d ~/certs_db/ -i ~/.dogtag/instance_name/ca_admin_cert.p12 Enter Password or Pin for "NSS FIPS 140-2 Certificate DB": password Enter password for PKCS12 file: password pk12util: PKCS12 IMPORT SUCCESSFUL
- 通过 CMS(CMC)请求创建证书管理:
- 创建一个配置文件,如
~/sslserver-cmc-request.cfg
,其中包含以下内容:# NSS database directory where the CA agent certificate is stored. dbdir=~/certs_db/ # NSS database password. password=password # Token name (default is internal). tokenname=internal # Nickname for CA agent certificate. nickname=caadmin # Request format: pkcs10 or crmf. format=pkcs10 # Total number of PKCS10/CRMF requests. numRequests=1 # Path to the PKCS10/CRMF request. # The content must be in Base-64 encoded format. # Multiple files are supported. They must be separated by space. input=~/ds.csr # Path for the CMC request. output=~/sslserver-cmc-request.bin
- 创建 CMC 请求:
# CMCRequest ~/sslserver-cmc-request.cfg ... The CMC enrollment request in base-64 encoded format: ... The CMC enrollment request in binary format is stored in ~/sslserver-cmc-request.bin
- 提交 CMC 请求:
- 创建一个配置文件,如
~/sslserver-cmc-submit.cfg
,其中包含以下内容:# PKI server host name. host=server.example.com # PKI server port number. port=8443 # Use secure connection. secure=true # Use client authentication. clientmode=true # NSS database directory where the CA agent certificate is stored. dbdir=~/certs_db/ # NSS database password. password=password # Token name (default: internal). tokenname=internal # Nickname of CA agent certificate. nickname=caadmin # CMC servlet path servlet=/ca/ee/ca/profileSubmitCMCFull?profileId=caCMCserverCert # Path for the CMC request. input=~/sslserver-cmc-request.bin # Path for the CMC response. output=~/sslserver-cmc-response.bin
- 提交请求:
# HttpClient sslserver-cmc-submit.cfg ... The response in binary format is stored in ~/sslserver-cmc-response.bin
- (可选)验证结果:
# CMCResponse -d ~/certs_db/ -i ~/sslserver-cmc-response.bin ... Number of controls is 1 Control #0: CMCStatusInfoV2 OID: {1 3 6 1 5 5 7 7 25} BodyList: 1 Status: SUCCESS
- 显示 Directory 服务器证书的序列号:
# pki -p 8080 ca-cert-find --name "DS Certificate" --------------- 1 entries found --------------- Serial Number: 0xc3eeb0c ...
- 使用上一步中的序列号下载证书:
# pki -p 8080 ca-cert-show 0xc3eeb0c --output ~/ds.crt
- 将 Directory Server 和 CA 证书的证书复制到 Directory Server 主机上。例如:
# scp ~/ds.crt ~/certs_db/CA.pem ds.example.com:~/
- 停止证书系统:
# systemctl stop pki-tomcatd@instance_name.service
- 在 Directory Server 主机上:
- 停止 Directory 服务器实例:
# systemctl stop dirsrv@instance_name
- 替换证书。详情请查看 Red Hat Directory Server Administration Guide 中的对应部分:
- 删除旧的证书和密钥 CA 证书。请参阅 删除证书。
- 安装证书系统发布的 CA 证书。请参阅安装 CA 证书。
- 为证书系统发布的目录服务器安装证书。请参阅安装证书。
- 启动 Directory 服务器实例:
# systemctl start dirsrv@instance_name
- 启动证书系统:
# systemctl stop pki-tomcatd@instance_name.service
- 另外,还可配置基于证书的身份验证。详情请查看 第 13.5.3 节 “使用内部数据库启用 SSL/TLS 客户端身份验证”。
13.5.3. 使用内部数据库启用 SSL/TLS 客户端身份验证
13.5.4. 限制对内部数据库的访问
- 登录到 Directory 服务器控制台。
- 选择 CertificateCertificate Systemnbsp;System internal database 条目,然后单击。
- 选择 Configuration 选项卡。
- 在导航树中,展开 Plug-ins 并选择 Pass- via Authentication。
- 在右窗格中,取消选择 启用插件 复选框。
- 点。服务器提示重新启动服务器。
- 点 Tasks 选项卡,然后点 。
- 关闭 Directory 服务器控制台。
- 服务器重启时,打开内部数据库实例的 Directory 服务器控制台。此时会出现 Login to Directory 对话框; Distinguished Name 字段显示 Directory Manager DN; 输入密码。只有在输入了正确的密码时,内部数据库的 Directory 服务器控制台才会打开。
13.6. 查看安全域配置
ou=Security Domain,dc=example,dc=com
cn=KRAList,ou=Security Domain,dc=example,dc=com objectClass: top objectClass: pkiSecurityGroup cn: KRAList
dn: cn=server.example.com:8443,cn=KRAList,ou=Security Domain,dc=example,dc=com objectClass: top objectClass: pkiSubsystem cn: kra.example.com:8443 host: server.example.com SecurePort: 8443 SecureAgentPort: 8443 SecureAdminPort: 8443 UnSecurePort: 8080 DomainManager: false Clone: false SubsystemName: KRA server.example.com 8443
13.7. 管理 子系统的 SELinux 策略
13.7.1. 关于 SELinux
13.7.2. 查看子系统的 SELinux 策略
- 运行 system-config-selinux 命令,或通过访问主系统菜单的 → → 来打开该实用程序。
- 要检查 CertificateCertificate Systemnbsp;System SELinux 策略的版本,请单击左侧栏中的 Policy Module 部分。
- 要查看单个文件和进程上设置的策略,请点击 File Labeling 部分。若要查看子系统的端口分配的策略,请单击 Network Port 部分。
13.7.3. 重新标记 nCipher netHSM 上下文
例 13.1. netHSM SELinux Policy
# default labeling for nCipher /opt/nfast/scripts/init.d/(.*) gen_context(system_u:object_r:initrc_exec_t,s0) /opt/nfast/sbin/init.d-ncipher gen_context(system_u:object_r:initrc_exec_t,s0) /opt/nfast(/.*)? gen_context(system_u:object_r:pki_common_t, s0) /dev/nfast(/.*)? gen_context(system_u:object_r:pki_common_dev_t,0)
pki_*_t
域与标记为 pki_common_t
和 pki_common_dev_t
的文件进行通信。
/opt/nfast
中),请运行 restorecon 以确保正确标记所有文件:
restorecon -R /dev/nfast restorecon -R /opt/nfast
13.8. 备份和恢复证书证书证书nbsp;系统
- 内部数据库。子系统使用 LDAP 数据库来存储其数据。目录服务器提供自己的备份脚本和程序。
- 实例目录.instance 目录包含所有配置文件、安全数据库和其他实例文件。这可以使用 tar 或 zip 等实用程序备份。
13.8.1. 备份和恢复 LDAP 内部数据库
13.8.1.1. 备份 LDAP 内部数据库
db2ldif
工具会创建一个 LDIF 文件,您可以使用ldif2db
工具恢复。db2bak
命令创建一个备份文件,您可以使用bak2db
工具恢复。
13.8.1.1.1. 使用 db2ldif 备份
-n
选项指定。
/root/
目录下写入的权限,因此您需要提供可写入的路径。
- 备份 PKI 子系统使用的每个目录服务器数据库。您可以使用 pki-server ca-db-config-show 命令检查给定子系统的数据库名称。例如:
# db2ldif -V -n pki-tomcat-CA -a /var/lib/dirsrv/slapd-pki1/ldif/pki-ca-backup.ldif Exported ldif file: /var/lib/dirsrv/slapd-pki1/ldif/pki-ca-backup.ldif ldiffile: /var/lib/dirsrv/slapd-pki1/ldif/pki-ca-backup.ldif [05/Nov/2020:10:17:53.835635923 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [05/Nov/2020:10:17:53.845938266 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [05/Nov/2020:10:17:53.851851787 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [05/Nov/2020:10:17:53.874058831 -0500] - INFO - ldbm_back_ldbm2ldif - export pki-tomcat-CA: Processed 67 entries (100%). [05/Nov/2020:10:17:53.884181122 -0500] - INFO - dblayer_pre_close - All database threads now stopped
- 除了备份所有单独的子数据库外,您还可以通过添加
用户Root
作为-n
选项备份主数据库。例如:# db2ldif -V -n userRoot -a /var/lib/dirsrv/slapd-pki1/ldif/userRoot.ldif
ldif2db
恢复 LDIF 文件,请参阅 第 13.8.1.2.1 节 “使用 ldif2db 恢复”。
13.8.1.1.2. 使用 db2bak 备份
# db2bak Back up directory: /var/lib/dirsrv/slapd-pki1/bak/pki1-2020_11_05_11_20_21
/var/lib/dirsrv/slapd- <instance_name> /bak
文件夹中创建备份,其中 db2bak 具有正确的写入权限。
13.8.1.2. 恢复 LDAP 内部数据库
ldif2db
或 bak2db
及对应的文件来恢复数据库。
13.8.1.2.1. 使用 ldif2db 恢复
db2ldif
创建 LDIF 文件,请停止 Directory 服务器实例,并使用 ldif2db 命令导入文件。您可以指定要从备份中恢复的单个数据库。例如:
- 停止 Directory 服务器实例:
# systemctl stop dirsrv@instance_name
- 为
-n
选项指定的子系统导入-i
选项指定的文件:# ldif2db -V -n pki-tomcat-CA -i /var/lib/dirsrv/slapd-pki1/ldif/pki-ca-backup.ldif importing data ... [06/Nov/2020:09:27:07.103094925 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [06/Nov/2020:09:27:07.118712207 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 ……... [06/Nov/2020:09:27:09.213947960 -0500] - INFO - import_main_offline - import pki-tomcat-CA: Closing files... [06/Nov/2020:09:27:09.470742715 -0500] - INFO - dblayer_pre_close - All database threads now stopped [06/Nov/2020:09:27:09.479321728 -0500] - INFO - import_main_offline - import pki-tomcat-CA: Import complete. Processed 67 entries in 2 seconds. (33.50 entries/sec)
- 启动 Directory 服务器实例:
# systemctl start dirsrv@instance_name
13.8.1.2.2. 使用 bak2db 恢复
db2bak
创建备份文件,请停止 Directory 服务器并使用 bak2db 命令导入文件;您可以指定单个数据库从备份中恢复。例如:
- 停止 Directory 服务器实例:
# systemctl stop dirsrv@instance_name
- 为
-n
选项指定的子系统导入文件:# bak2db /var/lib/dirsrv/slapd-pki1/bak/pki1-2020_11_06_09_40_21/ -n pki-tomcat-CA -V [06/Nov/2020:09:41:02.984808879 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [06/Nov/2020:09:41:02.991860094 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 ...... [06/Nov/2020:09:41:12.853686475 -0500] - INFO - dblayer_copy_directory - Restoring file 40 (/var/lib/dirsrv/slapd-pki1/db/pki-tomcat-CA/seeAlso.db) [06/Nov/2020:09:41:12.873881494 -0500] - WARN - dblayer_start - DB already started. [06/Nov/2020:09:41:12.883966616 -0500] - INFO - dblayer_pre_close - All database threads now stopped [06/Nov/2020:09:41:12.888381193 -0500] - INFO - dblayer_restore - Removing staging area /var/lib/dirsrv/slapd-pki1/db/../fribak.
您也可以使用 命令(不使用-n
选项)从备份中恢复完整的数据库。例如:# bak2db /var/lib/dirsrv/slapd-pki1/bak/pki1-2020_11_06_09_40_21/ -V [06/Nov/2020:09:53:01.977785135 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [06/Nov/2020:09:53:01.994426925 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 ......... [06/Nov/2020:09:53:02.800340285 -0500] - INFO - dblayer_restore - Restoring file 68 (/var/lib/dirsrv/slapd-pki1/db/DBVERSION) [06/Nov/2020:09:53:02.814235053 -0500] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-pki1/bak/pki1-2020_11_06_09_40_21/DBVERSION to /var/lib/dirsrv/slapd-pki1/db/DBVERSION [06/Nov/2020:09:53:03.317071092 -0500] - INFO - dblayer_pre_close - All database threads now stopped
- 启动 Directory 服务器实例:
# systemctl start dirsrv@instance_name
13.8.2. 备份和恢复实例目录
- 停止子系统实例。
systemctl stop pki-tomcatd@instance_name.service
- 将目录保存到压缩文件中:
# cd /var/lib/pki/ # tar -chvf /export/archives/pki/instance_name.tar instance_name/
例如:# cd /var/lib/pki/ # tar -chvf /tmp/test.tar pki-tomcat/ca/ pki-tomcat/ca/ pki-tomcat/ca/registry/ pki-tomcat/ca/registry/ca/ ...........
- 重启子系统实例。
systemctl start instance_name
别名
数据库备份和完整实例目录备份)替换当前目录(如果数据损坏或硬件已损坏)。要恢复数据,使用 解压缩或 tar 工具解压缩 存档文件,并通过现有文件复制存档。
- 解压缩存档:
cd /export/archives/pki/ tar -xvf instance_name.tar
例如:# cd /tmp/ # tar -xvf test.tar pki-tomcat/ca/ pki-tomcat/ca/registry/ pki-tomcat/ca/registry/ca/ pki-tomcat/ca/registry/ca/default.cfg .........
- 如果子系统实例尚未停止,则停止它。
systemctl stop pki-tomcatd@instance_name.service
- 复制存档的文件以恢复实例目录:
cp -r /export/archives/pki/instance_name /var/lib/pki/instance_name
例如:# cp -r /tmp/pki-tomcat/ca/ /var/lib/pki/pki-tomcat/ca/
- 重启子系统实例。
systemctl start pki-tomcatd@instance_name.service
13.9. 运行自助测试
13.9.1. 运行自助测试
13.9.1.1. 从控制台运行自助测试
- 登录到控制台。
pkiconsole https://server.example.com:admin_port/subsystem_type
- 选择左侧窗格中顶部的子系统名称。
- 选择" 自助测试" 选项卡。
- 点。为子系统配置的 self-tests 将运行。如果有任何关键自我证明失败,服务器将会停止。
- 此时会出现 On-Demand Self Tests Results 窗口,显示针对这个结果的已记录事件。
13.9.1.2. 运行 TPS Self-Tests
- pki tps-selftest-find
- pki tps-selftest-run
- pki tps-selftest-show
13.9.2. 自我测试日志记录
selftest.log
添加到包含启动自tests 和 on-demand self-tests 的报告的日志目录中。通过更改 CS.cfg
文件中的日志的设置来配置此日志。详情请参阅 红帽证书系统规划、安装和部署指南中的 修改自助测试配置 部分。
13.9.3. 配置 POSIX 系统 ACL
13.9.3.1. 为 CA、KRA、OCSP、TKS 和 TPS 设置 POSIX 系统 ACL
- 停止该实例。
systemctl stop pki-tomcatd@instance_name.service
- 将实例的目录和文件的 pkiadmin 组设置为 pkiadmin 组。
# setfacl -R -L -m g:pkiadmin:r,d:g:pkiadmin:r /var/lib/pki/instance_name
- 在所有目录中应用执行(x)ACL 权限:
# find -L /var/lib/pki/instance_name -type d -exec setfacl -L -n -m g:pkiadmin:rx,d:g:pkiadmin:rx {} \;
- 从实例的 signedAudit/ 目录及其相关文件中删除 pkiadmin 组的组可读性:
# setfacl -R -L -x g:pkiadmin,d:g:pkiadmin /var/lib/pki/instance_name/logs/signedAudit
- 为实例的 signedAudit/ 目录及其相关文件设置 pkiaudit 组的组可读性:
# setfacl -R -L -m g:pkiaudit:r,d:g:pkiaudit:r /var/lib/pki/instance_name/logs/signedAudit
- 重新对签名Audit/ 目录及其所有子目录重新执行(x)ACL 权限:
# find -L /var/lib/pki/instance_name/logs/signedAudit -type d -exec setfacl -L -n -m g:pkiaudit:rx,d:g:pkiaudit:rx {} \;
- 启动实例。
systemctl start pki-tomcatd@instance_name.service
- 使用 getfacl 命令显示当前 ACL 设置,确认文件访问控制是否已正确应用:
# getfacl /var/lib/pki/instance_name /var/lib/pki/instance_name/subsystem_type/logs/signedAudit/ getfacl: Removing leading '/' from absolute path names # file: var/lib/pki/instance_name # owner: pkiuser # group: pkiuser user::rwx group::rwx group:pkiadmin:r-x mask::rwx other::r-x default:user::rwx default:group::rwx default:group:pkiadmin:r-x default:mask::rwx default:other::r-x # file: var/lib/pki/instance_name/logs/signedAudit # owner: pkiuser # group: pkiaudit user::rwx group::rwx group:pkiaudit:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:pkiaudit:r-x default:mask::rwx default:other::---
第 14 章 管理证书证书系统启动; 系统用户和组
14.1. 关于授权
- 用户使用 CertificateCertificate Systemnbsp;System 用户 ID 和密码或证书向接口进行身份验证。
- 服务器将用户 ID 和密码与数据库中存储的用户 ID 和密码匹配,或者检查数据库中存储的证书来验证用户。使用基于证书的验证时,服务器还会检查证书是否有效,并通过将证书的 DN 与用户条目关联并查找用户的组成员资格。使用基于密码的身份验证时,服务器会根据用户 ID 检查密码,然后通过将用户 ID 与组中包含的用户 ID 关联来查找用户的组成员资格。
- 当用户试图执行操作时,授权机制会比较用户 ID、用户所属的组,或者用户所属的 IP 地址,或者该用户的 IP 地址针对该用户、组或 IP 地址。如果存在允许该操作的 ACL,则操作继续进行。
14.2. 默认组
- 管理员。此组被授予对管理界面中所有可用任务的完全访问权限。
- 代理。此组被授予对代理服务接口中所有可用任务的完全访问权限。
- 审核员.通过此组查看签名的审计日志,可以访问此组。这个组没有任何其他特权。
- 企业管理员。在配置期间,每个子系统实例将自动分配一个特定于子系统的角色,作为企业管理员。这些角色在安全域的子系统之间自动提供可信关系,这样每个子系统都可以高效地与其他子系统交互。
14.2.1. 管理员
角色 | 描述 |
---|---|
安全域管理员 |
默认情况下,托管域的 CA 管理员将作为安全性域管理员分配。
|
Enterprise CA 管理员 |
|
企业 KRA 管理员 |
|
Enterprise OCSP 管理员 |
|
Enterprise TKS 管理员 |
|
Enterprise TPS 管理员 |
|
14.2.2. 审核员
14.2.3. 代理
- 证书管理器代理组。
- 密钥恢复授权代理组。
- Online Certificate Status Agents 组。
- 令牌密钥服务代理组。
- 令牌处理系统代理组。
14.2.4. 企业级组
- Enterprise CA 管理员
- 企业 KRA 管理员
- Enterprise OCSP 管理员
- Enterprise TKS 管理员
- Enterprise TPS 管理员
14.3. 管理 CA、OCSP、KRA 或 TKS 的用户和组
14.3.1. 管理组
14.3.1.1. 创建新组
- 登录到管理控制台。
pkiconsole https://server.example.com:8443/subsystem_type
- 从左侧的导航菜单中选择" 用户和组 "。
- 选择 Groups 选项卡。
- 点,然后填写组信息。只能添加已存在于内部数据库中的用户。
- 编辑 ACL 以授予组特权。如需更多信息,请参阅 第 14.5.4 节 “编辑 ACL”。如果没有在组的 ACL 中添加 ACI,组将无法访问任何部分 CertificateCertificate Systemnbsp;System。
14.3.1.2. 更改组中的成员
- 登录到管理控制台。
- 从左侧的导航树中选择" 用户和组 "。
- 点 Groups 标签页。
- 从名称列表中选择组,再点击。
- 进行适当的更改。
- 要更改组描述,在 Group description 字段中输入新描述。
- 要从组中删除用户,选择用户,。
- 要添加用户,请单击。从对话框中选择要添加的用户, 。
14.3.2. 管理用户(管理员、代理和审核员)
14.3.2.1. 创建用户
14.3.2.1.1. 使用命令行创建用户
- 添加用户帐户。例如,将
示例
用户添加到 CA:# pki -d ~/.dogtag/pki-instance_name/ca/alias/ -c password -n caadmin \ ca-user-add example --fullName "Example User" --------------------- Added user "example" --------------------- User ID: example Full name: Example User
此命令使用caadmin
用户添加新帐户。 - (可选)将用户添加到组中。例如,将
示例
用户添加到证书管理器代理
组中:# pki -d ~/.dogtag/pki-instance_name/ -p password -n "caadmin" \ user-add-membership example Certificate Manager Agents
- 创建证书请求:
- 如果您的证书系统环境中存在密钥恢复授权(KRA):
# CRMFPopClient -d ~/.dogtag/pki-instance_name/ -p password \ -n "user_name" -q POP_SUCCESS -b kra.transport -w "AES/CBC/PKCS5Padding" \ -v -o ~/user_name.req
此命令在~/user_name.req
文件中以CRMF
格式存储证书签名请求(CSR)。 - 如果您的证书系统环境中不存在密钥恢复授权(KRA):
# PKCS10Client -d ~/.dogtag/pki-instance_name/ -p password \ -n "user_name" -o ~/user_name.req
此命令将 CSR 以pkcs10
格式存储在~/user_name.req
文件中。
- 创建注册请求:
- 使用以下内容创建
~/cmc.role_crmf.cfg
文件:#numRequests: Total number of PKCS10 requests or CRMF requests. numRequests=1 #input: full path for the PKCS10 request or CRMF request, #the content must be in Base-64 encoded format #Multiple files are supported. They must be separated by space. input=~/user_name.req #output: full path for the CMC request in binary format output=~/cmc.role_crmf.req #tokenname: name of token where agent signing cert can be found (default is internal) tokenname=internal #nickname: nickname for agent certificate which will be used #to sign the CMC full request. nickname=PKI Administrator for Example.com #dbdir: directory for cert8.db, key3.db and secmod.db dbdir=~/.dogtag/pki-instance_name/ #password: password for cert8.db which stores the agent #certificate password=password #format: request format, either pkcs10 or crmf format=crmf
根据您的环境和上一步中使用的 CSR 格式设置参数。 - 将之前创建的配置文件传递给
CMCRequest
工具,以创建 CMC 请求:# CMCRequest ~/cmc.role_crmf.cfg
- 通过 CMS 提交证书管理(CMC)请求:
- 使用以下内容创建
~/HttpClient_role_crmf.cfg
文件:# #host: host name for the http server host=server.example.com #port: port number port=8443 #secure: true for secure connection, false for nonsecure connection secure=true #input: full path for the enrollment request, the content must be in binary format input=~/cmc.role_crmf.req #output: full path for the response in binary format output=~/cmc.role_crmf.resp #tokenname: name of token where SSL client authentication cert can be found (default is internal) #This parameter will be ignored if secure=false tokenname=internal #dbdir: directory for cert8.db, key3.db and secmod.db #This parameter will be ignored if secure=false dbdir=~/.dogtag/pki-instance_name/ #clientmode: true for client authentication, false for no client authentication #This parameter will be ignored if secure=false clientmode=true #password: password for cert8.db #This parameter will be ignored if secure=false and clientauth=false password=password #nickname: nickname for client certificate #This parameter will be ignored if clientmode=false nickname=PKI Administrator for Example.com #servlet: servlet name servlet=/ca/ee/ca/profileSubmitCMCFull
根据您的环境设置参数。 - 将请求提交到 CA:
# HttpClient ~/HttpClient_role_crmf.cfg Total number of bytes read = 3776 after SSLSocket created, thread token is Internal Key Storage Token client cert is not null handshake happened writing to socket Total number of bytes read = 2523 MIIJ1wYJKoZIhvcNAQcCoIIJyDCCCcQCAQMxDzANBglghkgBZQMEAgEFADAxBggr ... The response in data format is stored in ~/cmc.role_crmf.resp
- 验证结果:
# CMCResponse ~/cmc.role_crmf.resp Certificates: Certificate: Data: Version: v3 Serial Number: 0xE Signature Algorithm: SHA256withRSA - 1.2.840.113549.1.1.11 Issuer: CN=CA Signing Certificate,OU=pki-instance_name Security Domain Validity: Not Before: Friday, July 21, 2017 12:06:50 PM PDT America/Los_Angeles Not After: Wednesday, January 17, 2018 12:06:50 PM PST America/Los_Angeles Subject: CN=user_name ... Number of controls is 1 Control #0: CMCStatusInfoV2 OID: {1 3 6 1 5 5 7 7 25} BodyList: 1 Status: SUCCESS
- (可选)将证书作为用户导入到自己的
~/.dogtag/pki-instance_name/
数据库:# certutil -d ~/.dogtag/pki-instance_name/ -A -t "u,u,u" -n "user_name certificate" -i ~/cmc.role_crmf.resp
- 在用户记录中添加证书:
- 列出用户发布的证书,以发现证书的序列号。例如,列出在证书主体中包含
示例
用户名的证书:pki -d ~/.dogtag/pki-instance_name/ -c password -n caadmin ca-user-cert-find example ----------------- 1 entries matched ----------------- Cert ID: 2;6;CN=CA Signing Certificate,O=EXAMPLE;CN=PKI Administrator,E=example@example.com,O=EXAMPLE Version: 2 Serial Number: 0x6 Issuer: CN=CA Signing Certificate,O=EXAMPLE Subject: CN=PKI Administrator,E=example@example.com,O=EXAMPLE ---------------------------- Number of entries returned 1
下一步中需要证书的序列号。 - 使用证书仓库中的序列号将证书添加到证书系统数据库中的用户帐户。例如,对于 CA 用户:
pki -c password -n caadmin ca-user-cert-add example --serial 0x6
14.3.2.1.2. 使用控制台创建用户
- 登录到管理控制台。
pkiconsole https://server.example.com:8443/subsystem_type
- 在 Configuration 选项卡中,选择" 用户和组 "。点 。
- 在编辑用户信息对话框中填写信息。大多数信息都是标准用户信息,如用户名、电子邮件地址和密码。此窗口还包含一个名为 User State 的字段,它可以包含任何字符串,用于添加关于用户的附加信息;最重要的是,此字段可以显示为活动用户。
- 选择用户所属的组。用户的组成员资格决定了用户具有什么权限。将代理、管理员和审核员分配到适当的子系统组。
- 存储用户的证书。
- 通过 CA 最终用户服务页面请求用户证书。
- 如果没有为用户配置集配置自动注册,则批准证书请求。
- 使用通知电子邮件中提供的 URL 检索证书,并将 base-64 编码证书复制到本地文件或剪贴板。
- 选择新用户条目,然后单击。
- 单击,并粘贴到 base-64 编码证书中。
14.3.2.2. 更改证书证书系统启动;系统用户的证书
- 登录到管理控制台。
- 选择 "用户和组 "。
- 从用户 ID 列表中选择要编辑的用户,然后点。
- 单击以添加新证书。
- 在 Import Certificate 窗口中,将新证书粘贴到文本区域中。包含 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 标记行。
14.3.2.3. 续订管理员、代理和审核员用户证书
- 在 CA 的最终用户表单中续订 admin 用户证书,如 第 5.5.1.1.2 节 “基于证书的续订” 所述。这必须与第一次签发证书(或它的克隆)相同。可使用末尾实体页面中基于证书的续订表格来续订代理证书。自助服务 SSL 客户端证书.此表单可识别和更新保存在浏览器的证书存储中直接存储的证书。注意
- 将更新的用户证书添加到内部 LDAP 数据库中的用户条目。
- 打开子系统的控制台。
pkiconsole https://server.example.com:admin_port/subsystem_type
- 配置 | 用户和组群 | 用户 | 管理 | 证书 | 导入
- 在 Configuration 选项卡中,选择" 用户和组 "。
- 在 Users 选项卡中,使用更新的证书双击用户条目,然后单击 。
- 单击,并粘贴到 base-64 编码证书中。
这可以通过使用 ldapmodify 将更新的认证直接添加到内部 LDAP 数据库中的用户条目,方法是替换用户条目中的userCertificate
属性,如 uid=admin,ou=body,dc=subsystem -base-DN。
14.3.2.4. 删除证书证书系统启动; 系统用户
- 登录到管理控制台。
- 从左侧的导航菜单中选择" 用户和组 "。
- 从用户 ID 列表中选择用户,然后点。
- 提示时确认删除。
14.4. 为 TPS 创建和管理用户
- 代理,用于执行实际令牌管理操作,如设置令牌状态和更改令牌策略
- 管理员,负责管理 TPS 子系统的用户,并对令牌进行有限控制
- Operator 没有管理控制,但可以查看和列出通过 TPS 执行的令牌、证书和活动
https://server.example.com:8443/tps/ui/
访问。
14.4.1. 列出和搜索用户
14.4.1.1. 通过 Web UI
- 点 Accounts 选项卡。
- 点 Users 菜单项。用户列表会出现在页面上。
- 要搜索某些用户,请在搜索字段中输入关键字并按
Enter
键。要再次列出所有用户,请删除关键字并按Enter
。
14.4.1.2. 从命令行
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-user-find
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-user-show username
14.4.2. 添加用户
14.4.2.1. 通过 Web UI
- 点 Accounts 选项卡。
- 点 Users 菜单项。
- 点 Users 页面中的 Add 按钮。
- 填写用户 ID、全名和 TPS 配置集。
- 点 Save 按钮。
14.4.2.1.1. 从命令行
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-user-add username --fullName full_name
14.4.3. 为用户设置配置集
CS.cfg
中,将 CA 的令牌配置集映射到令牌类型。配置令牌映射包括在 第 6.7 节 “映射解析器配置” 中。
- 点 Accounts 选项卡。
- 点 Users 菜单项。
- 点您要修改的用户的用户名。
- 点 Edit 链接。
- 在 TPS Profile 字段中输入由逗号分开的配置集名称,或者输入
All Profiles
。 - 点 Save 按钮。
14.4.4. 管理用户角色
14.4.4.1. 通过 Web UI
- 点 Accounts 选项卡。
- 点 Groups 菜单项。
- 点您要更改的组名称,如 TPS Agents。
- 将用户添加到此组中:
- 点击 Add 按钮。
- 输入用户 ID。
- 点击 Add 按钮。
- 从这个组中删除用户:
- 选中用户旁边的复选框。
- 点 删除按钮。
- 点确定按钮。
14.4.4.2. 从命令行
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-group-find
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-group-member-find group_name
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-group-member-add group_name user_name
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-group-member-del group_name user_name
14.4.5. 管理用户角色
- 要列出用户证书,请运行:
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-user-cert-find user_name
- 向用户添加证书:
- 获取新用户的用户证书。请求和提交证书在 第 5 章 请求、注册和管理证书 中进行了说明。重要TPS 管理员必须具有签名证书。推荐的配置集是手动用户签名和加密证书注册。
- 运行以下命令:
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-user-cert-add user_name --serial cert_serial_number
- 要从用户中删除证书,请运行:
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-user-cert-del user_name cert_id
14.4.6. 更新 TPS 代理和管理员证书
- 通过 CA 的最终用户表单续订用户证书,如 第 5.5.1.1.2 节 “基于证书的续订” 所述。这必须与第一次签发证书(或它的克隆)相同。通过使用最终实体页面中的基于证书的续订表格(自助式 用户 SSL 客户端证书)可以续订代理证书。此表单可识别和更新保存在浏览器的证书存储中直接存储的证书。注意
- 向用户添加新证书并删除旧证书,如 第 14.4.5 节 “管理用户角色” 所述。
14.4.7. 删除用户
- 点 Accounts 选项卡。
- 点 Users 菜单项。
- 选中要删除的用户旁边的复选框。
- 点 删除按钮。
- 点确定按钮。
pki -d client_db_dir -c client_db_password -n admin_cert_nickname tps-user-del user_name
14.5. 为用户配置访问控制
14.5.1. 关于访问控制
allow|deny (operation) user|group|IP="name"
allow (read) group="Administrators"
allow (read,modify) group="Administrators"
allow (read) group="Administrators" || group="Auditors"
Allow (read,modify) group="Auditors" || user="BrianC"
group="Administrators" || group!="Auditors"
group="* Managers"
user="BobC" || user!="JaneK"
user="anybody"
user="*johnson"
ipaddress="12.33.45.99" ipaddress!="23.99.09.88"
ipaddress="0:0:0:0:0:0:13.1.68.3"
ipaddress="12.33.45.*"
user="BobC" || group="Auditors" || group="Administrators"
14.5.2. 更改 subsystem 的访问控制设置
CS.cfg
文件配置此功能的说明,请参阅 Red Hat Certificate System Planning、Installation System Planning、Installation System Planning、Installing and deployment Guide 中的 subsystem 的访问控制设置 一节。
14.5.3. 添加 ACL
- 登录到管理控制台。
- 选择 Access Control List。
- 点 Access Control Editor。打开
- 填写
Resource name
和Available rights
字段。 - 要添加访问控制指令(ACI),请单击并提供 ACI 信息。
- 从 Access 字段中选择允许或拒绝单选按钮,以允许或拒绝指定的组、用户或 IP 地址。有关允许或拒绝访问的详情,请参考 第 14.5.1 节 “关于访问控制”。
- 设置权利。可用的选项为 读取 和修改。要选择两者,请在选择条目时按住 或 按钮。
- 指定在 syntax 字段中授予或拒绝访问的用户、组或 IP 地址。有关语法的详情,请查看 第 14.5.1 节 “关于访问控制”。
- 点 Access Control Editor 窗口。返回
- 单击以存储 ACI。
14.5.4. 编辑 ACL
- 登录到管理控制台。
- 在左侧导航菜单中选择 Access Control List。
- 从列表中选择要编辑的 ACL,然后单击。ACL 在 Access Control Editor 窗口中打开。
- 要添加 ACI,请单击并提供 ACI 信息。要编辑 ACI,请从 ACL Editor 窗口的 ACI 条目 文本区域中的列表中选择 ACI。点 。
- 从 Access 字段中选择允许或拒绝单选按钮,以允许或拒绝指定的组、用户或 IP 地址。有关允许或拒绝访问的详情,请参考 第 14.5.1 节 “关于访问控制”。
- 为访问控制设置权限。这些选项是 读取 和修改。要设置两者,请使用 或 按钮。
- 指定在 syntax 字段中授予或拒绝访问的用户、组或 IP 地址。有关语法的详情,请查看 第 14.5.1 节 “关于访问控制”。
第 15 章 配置子系统日志
pki_subsystem_log_path
中指定的任何目录中。 常规审计日志位于日志目录中,而签名的审计日志被写入 /var/log/pki/instance_name/subsystem_name/signedAudit
。可以通过修改配置来更改日志的默认位置。
15.1. 关于证书证书系统nbsp;系统日志
15.1.1. 系统日志
系统
记录了对服务器(所有 HTTP 和 HTTPS 请求)的请求的信息以及来自服务器的响应。此日志中记录的信息包括访问服务器的客户端机器的 IP 地址(包括 IPv4 和 IPv6)、执行的操作(如搜索、添加和编辑);以及访问的结果,如返回的条目数量:
id_number processor - [date:time] [number_of_operations] [result] servlet: message
例 15.1. TKS 系统日志
10439.http-13443-Processor25 - [19/May/2020:14:16:51 CDT] [11] [3] UGSubsystem: Get User Error User not found
15.1.2. 事务日志
事务
、记录任何执行或提交至子系统的操作。
id_number.processor - [date:time] [number_of_operations] [result] servlet: message
例 15.2. 事务日志
11438.http-8443-Processor25 - [27/May/2020:07:56:18 CDT] [1] [1] archival reqID 4 fromAgent agentID: CA-server.example.com-8443 authenticated by noAuthManager is completed DN requested: UID=recoverykey,E=recoverykey@email.com,CN=recover key serial number: 0x3
15.1.3. 调试日志
[date:time] [processor]: servlet: message
[10/Jun/2020:05:14:51][main]: Established LDAP connection using basic authentication to host localhost port 389 as cn=Directory Manager
[06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestowner$ value=KRA-server.example.com-8443
例 15.3. CA 证书请求日志消息
[06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.profileapprovedby$ value=admin [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.cert_request$ value=MIIBozCCAZ8wggEFAgQqTfoHMIHHgAECpQ4wDDEKMAgGA1UEAxMBeKaBnzANBgkqhkiG9w0BAQEFAAOB... [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.profile$ value=true [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.cert_request_type$ value=crmf [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestversion$ value=1.0.0 [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.req_locale$ value=en [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestowner$ value=KRA-server.example.com-8443 [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.dbstatus$ value=NOT_UPDATED [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.subject$ value=uid=jsmith, e=jsmith@example.com [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requeststatus$ value=begin [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.user$ value=uid=KRA-server.example.com-8443,ou=People,dc=example,dc=com [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.req_key$ value=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDreuEsBWq9WuZ2MaBwtNYxvkLP^M HcN0cusY7gxLzB+XwQ/VsWEoObGldg6WwJPOcBdvLiKKfC605wFdynbEgKs0fChV^M k9HYDhmJ8hX6+PaquiHJSVNhsv5tOshZkCfMBbyxwrKd8yZ5G5I+2gE9PUznxJaM^M HTmlOqm4HwFxzy0RRQIDAQAB [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.authmgrinstname$ value=raCertAuth [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.uid$ value=KRA-server.example.com-8443 [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.userid$ value=KRA-server.example.com-8443 [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestor_name$ value= [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.profileid$ value=caUserCert [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.userdn$ value=uid=KRA-server.example.com-4747,ou=People,dc=example,dc=com [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.requestid$ value=20 [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.auth_token.authtime$ value=1212782378071 [06/Jun/2020:14:59:38][http-8443;-Processor24]: ProfileSubmitServlet: key=$request.req_x509info$ value=MIICIKADAgECAgEAMA0GCSqGSIb3DQEBBQUAMEAxHjAcBgNVBAoTFVJlZGJ1ZGNv^M bXB1dGVyIERvbWFpbjEeMBwGA1UEAxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4X^M DTA4MDYwNjE5NTkzOFoXDTA4MTIwMzE5NTkzOFowOzEhMB8GCSqGSIb3DQEJARYS^M anNtaXRoQGV4YW1wbGUuY29tMRYwFAYKCZImiZPyLGQBARMGanNtaXRoMIGfMA0G^M CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDreuEsBWq9WuZ2MaBwtNYxvkLPHcN0cusY^M 7gxLzB+XwQ/VsWEoObGldg6WwJPOcBdvLiKKfC605wFdynbEgKs0fChVk9HYDhmJ^M 8hX6+PaquiHJSVNhsv5tOshZkCfMBbyxwrKd8yZ5G5I+2gE9PUznxJaMHTmlOqm4^M HwFxzy0RRQIDAQABo4HFMIHCMB8GA1UdIwQYMBaAFG8gWeOJIMt+aO8VuQTMzPBU^M 78k8MEoGCCsGAQUFBwEBBD4wPDA6BggrBgEFBQcwAYYuaHR0cDovL3Rlc3Q0LnJl^M ZGJ1ZGNvbXB1dGVyLmxvY2FsOjkwODAvY2Evb2NzcDAOBgNVHQ8BAf8EBAMCBeAw^M HQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMCQGA1UdEQQdMBuBGSRyZXF1^M ZXN0LnJlcXVlc3Rvcl9lbWFpbCQ=
[07/Jul/2020:06:25:40][http-11180-Processor25]: OCSPServlet: OCSP Request: [07/Jul/2020:06:25:40][http-11180-Processor25]: OCSPServlet: MEUwQwIBADA+MDwwOjAJBgUrDgMCGgUABBSEWjCarLE6/BiSiENSsV9kHjqB3QQU
15.1.3.1. 安装日志
/var/log/pki/
目录中创建,其名称为 pki-subsystem_name-spawn.timestamp
。
例 15.4. CA Install Log
... 2015-07-22 20:43:13 pkispawn : INFO ... finalizing 'pki.server.deployment.scriptlets.finalization' 2015-07-22 20:43:13 pkispawn : INFO ....... cp -p /etc/sysconfig/pki/tomcat/pki-tomcat/ca/deployment.cfg /var/log/pki/pki-tomcat/ca/archive/spawn_deployment.cfg.20150722204136 2015-07-22 20:43:13 pkispawn : DEBUG ........... chmod 660 /var/log/pki/pki-tomcat/ca/archive/spawn_deployment.cfg.20150722204136 2015-07-22 20:43:13 pkispawn : DEBUG ........... chown 26445:26445 /var/log/pki/pki-tomcat/ca/archive/spawn_deployment.cfg.20150722204136 2015-07-22 20:43:13 pkispawn : INFO ....... generating manifest file called '/etc/sysconfig/pki/tomcat/pki-tomcat/ca/manifest' 2015-07-22 20:43:13 pkispawn : INFO ....... cp -p /etc/sysconfig/pki/tomcat/pki-tomcat/ca/manifest /var/log/pki/pki-tomcat/ca/archive/spawn_manifest.20150722204136 2015-07-22 20:43:13 pkispawn : DEBUG ........... chmod 660 /var/log/pki/pki-tomcat/ca/archive/spawn_manifest.20150722204136 2015-07-22 20:43:13 pkispawn : DEBUG ........... chown 26445:26445 /var/log/pki/pki-tomcat/ca/archive/spawn_manifest.20150722204136 2015-07-22 20:43:13 pkispawn : INFO ....... executing 'systemctl enable pki-tomcatd.target' 2015-07-22 20:43:13 pkispawn : INFO ....... executing 'systemctl daemon-reload' 2015-07-22 20:43:13 pkispawn : INFO ....... executing 'systemctl restart pki-tomcatd@pki-tomcat.service' 2015-07-22 20:43:14 pkispawn : INFO END spawning subsystem 'CA' of instance 'pki-tomcat' 2015-07-22 20:43:14 pkispawn : DEBUG
15.1.3.2. Tomcat 错误和访问日志
- admin.timestamp
- catalina.timestamp
- catalina.out
- host-manager.timestamp
- localhost.timestamp
- localhost_access_log.timestamp
- manager.timestamp
15.1.3.3. self-Tests 日志
CS.cfg
文件中的设置来配置。有关如何通过编辑 CS.cfg
文件配置日志的说明,请参阅 红帽证书系统规划、安装和部署指南中的 启用 Publishing Queue 部分。
15.2. 管理日志
15.2.1. 日志设置概述
15.2.1.1. Are Logged 的服务
Service | 描述 |
---|---|
ACL | 日志与访问控制列表相关的事件。 |
管理 | 记录与管理活动相关的事件,如控制台和实例之间的 HTTPS 通信。 |
All | 记录与所有服务相关的事件。 |
身份验证 | 使用身份验证模块记录与活动相关的事件。 |
证书颁发机构 | 记录与证书管理器相关的事件。 |
数据库 | 记录与内部数据库活动相关的事件。 |
HTTP |
记录与服务器 HTTP 活动相关的事件。请注意,HTTP 事件实际上被记录到属于带有 CertificateCertificate Systemnbsp 的 Apache 服务器出错日志;System to 提供 HTTP 服务。
|
密钥恢复授权 | 记录与 KRA 相关的事件。 |
LDAP | 记录与 LDAP 目录相关的事件,用于发布证书和 CRL。 |
OCSP | 记录与 OCSP 相关的事件,如 OCSP 状态 GET 请求。 |
其他 | 记录与其他活动相关的事件,如命令行实用程序和其他进程。 |
请求队列 | 记录与请求队列活动相关的事件。 |
用户和组群 | 记录与实例的用户和组相关的事件。 |
15.2.1.2. 日志级别(Message Categories)
日志级别 | 消息类别 | 描述 |
---|---|---|
0-1 | Tracing | 这些消息包含精细的调试信息。此级别不应定期使用,因为它可能会影响性能。 |
2-5 | 调试 | 这些消息包含调试信息。不建议使用这个级别,因为它会生成太多的信息。 |
6-10 | INFORMATIONAL | 这些消息提供有关证书证书证书系统状态的一般信息;System,包括证书证书系统nbsp 等状态消息 ;System initialization complete and Request for operation successful。 |
11-15 | 警告 | 这些消息只是警告信息,且不会指示服务器正常操作中的任何故障。 |
> 15 | 失败 | 这些消息表示导致服务器正常运行的错误和失败,包括执行证书服务操作失败(用户身份 验证失败 或证书被撤销的 )和意外情况,可能导致不相关的错误(服务器无法通过从客户端发出的同一频道来发回请求)。设置以上 15 级将尽量减少日志,因为只会记录失败。 |
15.2.1.3. buffered 和 Unbuffered Logging
- 缓冲区已满。当缓冲区大小等于或大于由 bufferSize 配置参数指定的值时,缓冲已满。此参数的默认值为 512 KB。
- 达到缓冲区的冲刷间隔。当从最后一个缓冲区刷新开始的时间间隔等于或大于 flushInterval 配置参数指定的值时,就会达到冲刷间隔。此参数的默认值为 5 秒。
- 当当前日志从控制台读取时。查询当前日志时,服务器会检索最新的日志。
15.2.1.4. 日志文件轮转
- 达到对应文件的大小限制。对应日志文件的大小等于或大于 maxFileSize 配置参数指定的值。此参数的默认值为 100 KB。
- 相应文件的 age 限值会被达到。对应的日志文件等于 rolloverInterval 配置参数指定的时间间隔,或早于 rolloverInterval 配置参数。此参数的默认值为 2592000 秒(每隔三十天)。
15.2.2. 在控制台中配置日志
CS.cfg
文件配置日志。也可以通过控制台或配置文件创建专用日志,如签名的审计日志和自定义日志。
- 在 Configuration 选项卡的导航树中,选择 Log。
- Log Event Listener Management 选项卡列出当前配置的监听程序。要创建新日志实例,请单击 Select Log Event Listener Plug-in Implementation 窗口中的列表选择一个模块插件。,然后从
- 设置或修改 Log Event Listener Editor 窗口中的字段。表 15.3 “日志记录事件 Listener 字段” 中列出了不同的参数。
字段 | 描述 |
---|---|
日志事件 Listener ID | 赋予标识监听器的唯一名称。名称可具有任意字母(A 到 zZ)、数字(0 到 9)、一个下划线(_)和连字符(-),但它不能包含其他字符或空格。 |
type | 给出日志文件的类型。系统 会创建错误和系统日志; 事务 记录审计日志。 |
enabled | 设定日志是否活跃。仅启用的日志可实际记录事件。该值可以是 true 或 false。 |
level | 在文本字段中设置日志级别。级别必须在字段中手动输入;没有选择菜单。选择是 Debug、信息、Warning、Failure、Misconfiguration、Catastrophe 和 Security。更多信息请参阅 第 15.2.1.2 节 “日志级别(Message Categories)”。 |
fileName | 会向日志文件指定完整路径,包括文件名。子系统用户应具有对该文件的读/写入权限。 |
bufferSize | 以 KB(KB)为单位设置日志的缓冲区大小。当缓冲区达到这个大小后,缓冲区的内容会被清除并复制到日志文件中。默认大小为 512 KB。有关缓冲日志记录的更多信息,请参阅 第 15.2.1.3 节 “buffered 和 Unbuffered Logging”。 |
flushInterval | 设置在缓冲区内容清除并添加到日志文件中的时间。默认间隔为 5 秒。 |
maxFileSize | 以 KB(KB)为单位设置大小,日志文件可以在轮转之前变为。达到这个大小后,文件会被复制到轮转的文件中,日志文件将启动新的。有关日志文件轮转的更多信息,请参阅 第 15.2.1.4 节 “日志文件轮转”。默认大小为 2000 KB。 |
rolloverInterval | 设置服务器的频率来轮转活跃日志文件。可用选项包括 hourly、daily、weekly、monthly 和 year。默认是 monthly。更多信息请参阅 第 15.2.1.4 节 “日志文件轮转”。 |
15.2.3. 在 CS.cfg 文件中配置日志
CS.cfg
文件配置日志的说明,请参考 Red Hat 证书系统规划、安装和部署指南中的 CS.cfg 文件配置日志 部分。
15.2.4. 管理审计日志
/var/log/pki/instance_name/subsystem_name/
目录,其他类型会写入 /var/log/pki/instance_name/ subsystem_name/ signedAudit/
。可以通过修改配置来更改日志的默认位置。
15.2.4.1. 审计事件列表
15.2.4.2. 安装后启用签名审计日志
pki_audit_group
部署参数启用签名的审计日志。但是,在创建实例时不会配置签名的审计日志,可以通过将审计日志目录的所有权重新分配给 auditor 系统用户组(如 pkiaudit
)来启用它们。
- 停止实例:
systemctl stop pki-tomcatd@instance_name.service
- 将签名的审计日志目录的组所有权设置为 PKI auditors 操作系统组,如
pkiaudit
。这允许 PKI auditors 组中的用户具有对signedAudit
目录的读取访问权限,以验证日志文件上的签名。无用户(除了 CertificateCertificate Systemnbsp;System user account, pkiuser)的用户应该有权访问此目录中的日志文件。chgrp -R pkiaudit /var/log/pki/instance_name/subsystem_name/signedAudit
- 重启实例:
systemctl start pki-tomcatd@instance_name.service
15.2.4.3. 在控制台中配置签名审计日志
- 打开控制台。注意要通过编辑
CS.cfg
文件创建和配置审计日志,请参阅 红帽认证系统规划、安装和部署指南中的 CS.cfg 文件中的配置日志 部分。 - 在 Configuration 选项卡的导航树中,选择 Log。
- 在 Log Event Listener Management 选项卡中,选择 SignedAudit 条目。
- 单击。
- 在 Log Event Listener Editor 窗口中必须重置三个字段。
- 填写 signedAuditCertNickname。这是用于为审计日志签名的证书的别名。在配置子系统时会创建审计签名证书;它有一个 nickname,如 auditSigningCert cert-instance_name 子系统_name。注意要获取审计签名证书 nickname,请使用 certutil 列出子系统的证书数据库。例如:
certutil -L -d /var/lib/pki-tomcat/alias Certificate Authority - Example Domain CT,c, subsystemCert cert-pki-tomcat u,u,u Server-Cert cert-pki-tomcat u,u,u auditSigningCert cert-pki-tomcat CA u,u,Pu
- 将 logSigning 字段设置为 true 来启用签名日志记录。
- 设置日志记录到审计日志的任何事件。附录 E, 审计事件 列出可记录的事件。日志事件用逗号分开,且没有空格。
- 为日志设置任何其他设置,如文件名、日志级别、文件大小或轮转调度。注意默认情况下,常规审计日志位于 /var/log/pki/instance_name/ 子系统_name /subsystem_name/ 目录中,而签名的审计日志被写入
/var/log/pki/ instance_name /subsystem_name/
signedAudit/ - 保存日志配置。
Verify(1)
手册页。
15.2.4.4. 处理审计日志故障
- Servlet 被禁用,不会处理新请求。
- 所有待定和新请求都会被终止。
- 该子系统已关机。
15.2.4.5. 签名日志文件
signtool -d secdb_dir -k cert_nickname -Z output input
- secdb_dir 指定包含 CA 的证书、密钥和安全模块数据库的目录路径。
- cert_nickname 指定用于签名的证书的 nickname。
- 输出指定 JAR 文件的名称(签名的 zip 文件)。
- input 指定包含日志文件的目录的路径。
15.2.4.6. 过滤审计事件
类型 | 格式 | 示例 |
---|---|---|
存在 | (attribute=*) | (ReqID=*) |
等于 | (属性=值) | (Outcome=Failure) |
子字符串 | (attribute=initial*any*...*any*final) | (SubjectID=*admin*) |
AND 操作 | (&(filter_1)(filter_2)...(filter_n)) | (&(SubjectID=admin)(Outcome=Failure)) |
OR 操作 | (|(filter_1)(filter_2)...(filter_n)) | (|(SubjectID=admin)(Outcome=Failure)) |
不 操作 | (!(filter)) | (!(SubjectID=admin)) |
例 15.5. 过滤审计事件
InfoName
字段设置为 rejectReadon 或 cancelReason :
- 编辑
/var/lib/pki/instance_name/subsystem_type/conf/CS.cfg
文件并设置以下参数:log.instance.SignedAudit.filters.PROFILE_CERT_REQUEST=(Outcome=Failure) log.instance.SignedAudit.filters.CERT_REQUEST_PROCESSED=(|(InfoName=rejectReason)(InfoName=cancelReason))
- 重启证书系统:
# systemctl restart pki-tomcatd@instance_name.service
15.2.5. 管理日志模块
类
目录中;实施必须在类路径上。
- 创建自定义作业类。在本例中,自定义日志插件名为
MyLog.java
。 - 将新类编译到实例的 lib 目录中。
javac -d . /var/lib/pki/pki-tomcat/lib -classpath $CLASSPATH MyLog.java
- 在 CA 的
WEB-INF
Web 目录中创建用于存放自定义类的目录,以便 CA 可以访问它们。mkdir /var/lib/pki/pki-tomcat/webapps/ca/WEB-INF/classes
- 将所有者设置为 CertificateCertificate Systemnbsp;System system user(
pkiuser
)。chown -R pkiuser:pkiuser /var/lib/pki/pki-tomcat/lib
- 注册插件。
- 登录到控制台。
- 在 Configuration 选项卡中,从导航树中选择 Logs。然后选择 Log Event Listener Plug-in Registration 选项卡。
- 点。此时会出现 Register Log Event Listener Plug-in Implementation 窗口。
- 为插件模块和 Java™ 类名称命名。Java™ 类名称是实施 Java™ 类的完整路径。如果这个类是软件包的一部分,请包含软件包名称。例如,在名为
com.customplugins
的软件包中注册一个名为 customLog 的类,类名称为 com.customplugins.customLog。 - 点击。
15.3. 使用日志
15.3.1. 在控制台中查看日志
- 登录到控制台。
- 选择 Status 选项卡。
- 在 Logs 下,选择要查看的日志。
- 在 Display Options 部分中设置查看首选项。
- entries - 要显示的最大条目数。达到这个限制时,CertificateCertificate Systemnbsp;System 会返回与搜索请求匹配的条目。零(0)表示没有返回任何信息。如果字段为空,服务器会返回每个匹配的条目,无论找到的数量如何。
- Source - 选择证书Certificate Systemnbsp; 系统组件或服务,用于显示哪些日志消息。选择 All 表示日志记录到此文件的所有组件的消息。
- level - 选择代表过滤消息的日志级别的消息类别。
- 文件名 - 选择要查看的日志文件。选择 Current 来查看当前活跃的系统日志文件。
- 点。下表显示了系统日志条目。条目以反向时间顺序排列,当前条目位于顶部。使用面板右边的滚动箭头滚动浏览日志条目。每个条目都显示以下信息:
- Source - 记录消息的组件或资源。
- level - 对应条目的严重性。
- date - 记录条目的日期。
- time - 记录条目的时间。
- details - 日志的简单描述。
- 要查看完整条目,请双击该条目,或者选择 条目,然后单击。
15.3.2. 使用签名审计日志
15.3.2.1. 列出审计日志
server.example.com
上托管的 CA 上的审计日志文件:
# pki -h server.example.com -p 8443 -n auditor ca-audit-file-find ----------------- 3 entries matched ----------------- File name: ca_audit.20170331225716 Size: 2883 File name: ca_audit.20170401001030 Size: 189 File name: ca_audit Size: 6705 ---------------------------- Number of entries returned 3 ----------------------------
~/.dogtag/nssdb/
目录中以向 CA 进行身份验证。有关命令和替代验证方法中使用的参数的详情,请查看 pki(1) man page。
15.3.2.2. 下载审计日志
server.example.com
上托管的 CA 下载审计日志文件:
- (可选)列出 CA 上可用的日志文件。请参阅 第 15.3.2.1 节 “列出审计日志”。
- 下载日志文件。例如,要下载
ca_audit
文件:# pki -U https://server.example.com:8443 -n auditor ca-audit-file-retrieve ca_audit
该命令使用客户端证书,使 auditor nickname 存储在~/.dogtag/nssdb/
目录中以向 CA 进行身份验证。有关命令和替代验证方法中使用的参数的详情,请查看 pki(1) man page。
grep
实用程序搜索特定的日志条目,例如:
# grep "\[AuditEvent=ACCESS_SESSION_ESTABLISH\]" log_file
15.3.2.3. 验证签名审计日志
- 初始化 NSS 数据库并导入 CA 证书。详情请参阅 Red Hat Certificate System 9 规划、安装和部署指南中的 第 2.5.1.1 节 “pki CLI initialization” 和 将 证书导入到 NSS 数据库 部分。
- 如果 PKI 客户端数据库中不存在审计签名证书,请导入:
- 搜索您要验证的子系统日志的审计签名证书。例如:
# pki ca-cert-find --name "CA Audit Signing Certificate" --------------- 1 entries found --------------- Serial Number: 0x5 Subject DN: CN=CA Audit Signing Certificate,O=EXAMPLE Status: VALID Type: X.509 version 3 Key Algorithm: PKCS #1 RSA with 2048-bit key Not Valid Before: Fri Jul 08 03:56:08 CEST 2016 Not Valid After: Thu Jun 28 03:56:08 CEST 2018 Issued On: Fri Jul 08 03:56:08 CEST 2016 Issued By: system ---------------------------- Number of entries returned 1 ----------------------------
- 将审计签名证书导入到 PKI 客户端中:
# pki client-cert-import "CA Audit Signing Certificate" --serial 0x5 --trust ",,P" --------------------------------------------------- Imported certificate "CA Audit Signing Certificate" ---------------------------------------------------
- 下载审计日志。请参阅 第 15.3.2.2 节 “下载审计日志”。
- 验证审计日志。
- 创建一个文本文件,其中包含您要按时间顺序验证的审计日志文件列表。例如:
# cat > ~/audit.txt << EOF ca_audit.20170331225716 ca_audit.20170401001030 ca_audit EOF
- 使用
AuditVerify
程序验证签名。例如:# AuditVerify -d ~/.dogtag/nssdb/ -n "CA Audit Signing Certificate" \ -a ~/audit.txt Verification process complete. Valid signatures: 10 Invalid signatures: 0
有关使用AuditVerify
的详情,请查看 AuditVerify(1) man page。
15.3.3. 显示操作系统级别审计日志
auditd
日志。
ausearch
工具程序作为 root 用户,或使用 sudo
程序作为特权用户。
15.3.3.1. 显示审计日志删除事件
-k
参数查找与该密钥匹配的事件:
# ausearch -k rhcs_audit_deletion
15.3.3.2. 显示对 Secret 和私钥的 NSS 数据库的访问
-k
参数查找与该密钥匹配的事件:
# ausearch -k rhcs_audit_nssdb
15.3.3.3. 显示时间更改事件
-k
参数查找与该密钥匹配的事件:
# ausearch -k rhcs_audit_time_change
15.3.3.4. 显示软件包更新事件
-m
参数查找与该类型匹配的事件:
# ausearch -m SOFTWARE_UPDATE
15.3.3.5. 显示 PKI 配置的更改
-k
参数查找与该密钥匹配的事件:
# ausearch -k rhcs_audit_config
15.3.4. 智能卡错误代码
返回码 | 描述 |
---|---|
常规错误代码 | |
6400 | 没有特定诊断 |
6700 | Lc 中错误的长度 |
6982 | 未满足安全状态 |
6985 | 不满足使用的条件 |
6a86 | P1 P2 错误 |
6d00 | 无效的指令 |
6e00 | 无效的类 |
安装 Load Errors | |
6581 | 内存故障 |
6a80 | data 字段中的参数不正确 |
6a84 | 没有足够的内存空间 |
6a88 | 未找到引用的数据 |
删除错误 | |
6200 | 应用程序已被逻辑删除 |
6581 | 内存故障 |
6985 | 不能删除引用的数据 |
6a88 | 未找到引用的数据 |
6a82 | 未找到应用程序 |
6a80 | 命令数据中的不正确的值 |
获取数据错误 | |
6a88 | 未找到引用的数据 |
获取状态错误 | |
6310 | 可用数据更多 |
6a88 | 未找到引用的数据 |
6a80 | 命令数据中的不正确的值 |
加载错误 | |
6581 | 内存故障 |
6a84 | 没有足够的内存空间 |
6a86 | P1/P2 错误 |
6985 | 不满足使用的条件 |
第 16 章 管理子系统证书
16.1. 所需的 子系统证书
16.1.1. 证书管理器证书
16.1.1.1. CA 签名密钥对和证书
- 如果证书管理器是 root CA,则其 CA 签名证书是自签名的,即证书的主题名称和签发者名称相同。
- 如果证书管理器是从属 CA,则其 CA 签名证书由另一个 CA 签名,通常是位于 CA 层次结构的级别(可能或不能是 root CA)中的级别。root CA 的签名证书必须导入到单独的客户端和服务器中,然后才能使用证书管理器向它们发布证书。
16.1.1.2. OCSP 签名密钥对和证书
16.1.1.3. 子系统证书
16.1.1.4. SSL 服务器密钥对和证书
16.1.1.5. 审计日志签名密钥对和证书
16.1.2. 在线证书状态管理器证书
16.1.2.1. OCSP 签名密钥对和证书
16.1.2.2. SSL 服务器密钥对和证书
16.1.2.3. 子系统证书
16.1.2.4. 审计日志签名密钥对和证书
16.1.2.5. 识别在线证书状态管理器证书
- 如果在线证书 Status Manager 的服务器证书由发布 CRL 的 CA 签名,则不需要进行任何操作。
- 如果在线证书状态管理器的服务器证书由签署从属证书管理器证书的同一 root CA 签名,那么 root CA 必须在从属证书管理器的证书数据库中被标记为可信 CA。
- 如果在线证书状态管理器的 SSL 服务器证书由不同的 root CA 签名,则必须将 root CA 证书导入到从属证书管理器的证书数据库中并标记为可信 CA。
16.1.3. 密钥恢复授权证书
16.1.3.1. 传输密钥对和证书
16.1.3.2. 存储密钥对
16.1.3.3. SSL 服务器证书
16.1.3.4. 子系统证书
16.1.3.5. 审计日志签名密钥对和证书
16.1.4. TKS 证书
16.1.4.1. SSL 服务器证书
16.1.4.2. 子系统证书
16.1.4.3. 审计日志签名密钥对和证书
16.1.5. TPS 证书
16.1.5.1. SSL 服务器证书
16.1.5.2. 子系统证书
16.1.5.3. 审计日志签名密钥对和证书
16.1.6. 关于 subsystem 证书和密钥类型
pkispawn
实用程序的配置文件中指定密钥类型和密钥大小。
例 16.1. CA 的密钥类型相关配置参数
pkispawn
。
pki_ocsp_signing_key_algorithm=SHA256withRSA pki_ocsp_signing_key_size=2048 pki_ocsp_signing_key_type=rsa pki_ca_signing_key_algorithm=SHA256withRSA pki_ca_signing_key_size=2048 pki_ca_signing_key_type=rsa pki_sslserver_key_algorithm=SHA256withRSA pki_sslserver_key_size=2048 pki_sslserver_key_type=rsa pki_subsystem_key_algorithm=SHA256withRSA pki_subsystem_key_size=2048 pki_subsystem_key_type=rsa pki_admin_keysize=2048 pki_admin_key_size=2048 pki_admin_key_type=rsa pki_audit_signing_key_algorithm=SHA256withRSA pki_audit_signing_key_size=2048 pki_audit_signing_key_type=rsa
- 红帽证书系统规划、安装和部署指南中的 了解
pkispawn
实用程序 部分。 - pki_default.cfg(5) man page 了解参数和示例的描述。
16.1.7. 使用 HSM 存储子系统证书
key3.db
和 cert8.db
,在 /var/lib/pki/instance_name/alias
目录中。但是,Red Hat Certificate Systemnbsp;Hat Certificate Red Hat Certificate Systemnbsp;System 还支持硬件安全模块(HSM),可以在网络上集中存储密钥和证书的外部设备。使用 HSM 可以使一些功能(如克隆)变得容易,因为实例的密钥和证书可以被轻松访问。
server.xml
文件。例如:
serverCert="nethsm:Server-Cert cert-instance_ID
16.2. 通过控制台请求证书
16.2.1. 请求签名证书
- 打开子系统控制台。例如:
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,在导航树中选择 System Keys and Certificates。
- 在右侧面板中,选择 本地证书 选项卡。
- 点。
- 选择请求证书 单选按钮。
- 选择请求签名的证书类型。
- 选择哪个 CA 类型将向请求签名,可以是 root CA 或从属 CA。
- 设置密钥对信息并设置位置来生成密钥(令牌),可以是内部安全数据库目录或列出的外部令牌之一。要创建新证书,您必须创建新密钥对。使用现有密钥对将只续订现有证书。
- 选择消息摘要算法。
- 给主题名称命名。为单独的 DN 属性输入值,以构建主题 DN 或输入完整字符串。证书请求表单支持通用名称、组织单元和请求者名称字段的所有 UTF-8 字符。这个支持不包括支持国际化的域名。
- 指定证书的有效性期限的开始和结束日期,以及有效期限将在这些日期开始和结束的时间。默认有效期为 5 年。
- 设置证书的标准扩展。默认选择所需的扩展。要更改默认选择,请阅读 附录 B, 证书和 CRL 的默认、限制和扩展 中的说明。注意设置 CA 层次结构需要证书扩展。从属 CA 必须具有证书,其中包括将扩展标识为从属 SSL CA(允许他们为 SSL 发出证书)或从属电子邮件 CA(允许他们为安全电子邮件发布证书)。禁用证书扩展意味着无法设置 CA 层次结构。
- 基本限制。相关字段是 CA 设置和认证路径长度的数字设置。
- 扩展密钥使用情况.
- 授权密钥标识符。
- 主题键标识符。
- 关键使用.设定数字签名(位 0)、非推荐(位 1)、密钥证书签名(位 5)和 CRL 符号(位 6)位。该扩展标记为"PKIX 标准"和 RFC 2459 的建议。有关密钥使用扩展的描述,请参阅 RFC 2459。
- 基本64 SEQUENCE.这适用于自定义扩展。将 MIME 64 DER 格式的扩展粘贴到文本字段中。
要添加多个扩展,请使用 ExtJoiner 程序。有关使用工具的详情,请参考 证书系统命令行工具指南。 - 向导生成密钥对并显示证书签名请求。请求采用 base-64 编码的 PKCS #10 格式,并通过标记行 -----BEGIN NEW CERTIFICATE REQUEST----- 和 -----END NEW CERTIFICATE REQUEST----- 绑定。例如:
-----BEGIN NEW CERTIFICATE REQUEST----- MIICJzCCAZCgAwIBAgIBAzANBgkqhkiG9w0BAQQFADBC6SAwHgYDVQQKExdOZXRzY2FwZSBDb21tdW5pY2 F0aW9uczngjhnMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyNzE5MDAwMFoXDTk5MDIyMzE5MDA wMnbjdgngYoxIDAeBgNVBAoTF05ldHNjYXBlIENvbW11bmljYXRpb25zMQ8wDQYDVQQLEwZQZW9wbGUxFz AVBgoJkiaJkIsZAEBEwdzdXByaXlhMRcwFQYDVQQDEw5TdXByaXlhIFNoZXR0eTEjMCEGCSqGSIb3Dbndg JARYUc3Vwcml5Yhvfggsvwryw4y7214vAOBgNVHQ8BAf8EBAMCBLAwFAYJYIZIAYb4QgEBAQHBAQDAgCAM A0GCSqGSIb3DQEBBAUAA4GBAFi9FzyJlLmS+kzsue0kTXawbwamGdYql2w4hIBgdR+jWeLmD4CP4x -----END NEW CERTIFICATE REQUEST-----
向导还会将证书请求复制到配置目录中创建的文本文件,该文件位于/var/lib/pki/instance_name/subsystem_type/conf/
中。文本文件的名称取决于请求的证书类型。可能的文本文件列在 表 16.1 “为证书签名请求创建的文件” 中。表 16.1. 为证书签名请求创建的文件 文件名 证书签名请求 cacsr.txt CA 签名证书 ocspcsr.txt 证书管理器 OCSP 签名证书 ocspcsr.txt OCSP 签名证书 在将证书请求发送到 CA 之前,不要修改证书请求。该请求可以通过向导自动提交,或复制到剪贴板,并通过其端点页面手动提交到 CA。注意向导的自动提交功能只能向远程证书管理器提交请求。它不能用于将请求提交到第三方 CA。要将其提交到第三方 CA,请使用证书请求文件。 - 检索证书。
- 打开证书管理器端点页面。
https://server.example.com:8443/ca/ee/ca
- 点 Retrieval 选项卡。
- 填写提交证书请求时创建的请求 ID 号,然后单击。
- 下一页显示证书请求的状态。如果状态 已经完成,则证书有一个链接。点 签发的证书 链接。
- 新证书信息以用户用户打印格式显示,采用 base-64 编码格式,采用 PKCS #7 格式。
- 将 base-64 编码的证书(包括 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 标记行)复制到文本文件。保存文本文件,并使用它来将证书副本存储在子系统的内部数据库中。请参阅 第 14.3.2.1 节 “创建用户”。
16.2.2. 请求其他证书
- 打开子系统控制台。例如:
pkiconsole https://server.example.com:8443/ca
- 在 Configuration 选项卡中,在导航树中选择 System Keys and Certificates。
- 在右侧面板中,选择 本地证书 选项卡。
- 点。
- 选择请求证书 单选按钮。
- 选择请求的证书类型。请求的证书的类型因子系统而异。注意如果选择创建"其他"证书,则 Certificate Type 字段将变为 active。填写要创建的证书类型,可以是 caCrlSigning,用于 CRL 签名证书的 caSignedLogCert for a 审计日志签名证书,或为 SSL 客户端证书的客户端。
- 选择哪个 CA 将对请求进行签名。选项是使用本地 CA 签名证书或创建请求提交给另一个 CA。
- 设置密钥对信息并设置位置来生成密钥(令牌),可以是内部安全数据库目录或列出的外部令牌之一。要创建新证书,您必须创建新密钥对。使用现有密钥对将只续订现有证书。
- 给主题名称命名。为单独的 DN 属性输入值,以构建主题 DN 或输入完整字符串。注意对于 SSL 服务器证书,通用名称必须是证书证书系统nbsp 的完全限定主机名;System,格式为 machine_name.domain.domain。CA 证书请求表单支持通用名称、组织单元和请求者名称字段的所有 UTF-8 字符。这个支持不包括支持国际化的域名。
- 指定证书的有效性期限的开始和结束日期,以及有效期限将在这些日期开始和结束的时间。默认有效期为 5 年。
- 设置证书的标准扩展。默认选择所需的扩展。要更改默认选择,请阅读 附录 B, 证书和 CRL 的默认、限制和扩展 中的说明。
- 扩展密钥使用情况.
- 授权密钥标识符。
- 主题键标识符。
- 关键使用.设定数字签名(位 0)、非推荐(位 1)、密钥证书签名(位 5)和 CRL 符号(位 6)位。该扩展标记为"PKIX 标准"和 RFC 2459 的建议。有关密钥使用扩展的描述,请参阅 RFC 2459。
- 基本64 SEQUENCE.这适用于自定义扩展。将 MIME 64 DER 格式的扩展粘贴到文本字段中。
要添加多个扩展,请使用 ExtJoiner 程序。有关使用工具的详情,请参考 证书系统命令行工具指南。 - 向导生成密钥对并显示证书签名请求。请求采用 base-64 编码的 PKCS #10 格式,并通过标记行 -----BEGIN NEW CERTIFICATE REQUEST----- 和 -----END NEW CERTIFICATE REQUEST----- 绑定。例如:
-----BEGIN NEW CERTIFICATE REQUEST----- MIICJzCCAZCgAwIBAgIBAzANBgkqhkiG9w0BAQQFADBC6SAwHgYDVQQKExdOZXRzY2FwZSBDb21tdW5pY2 F0aW9uczngjhnMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyNzE5MDAwMFoXDTk5MDIyMzE5MDA wMnbjdgngYoxIDAeBgNVBAoTF05ldHNjYXBlIENvbW11bmljYXRpb25zMQ8wDQYDVQQLEwZQZW9wbGUxFz AVBgoJkiaJkIsZAEBEwdzdXByaXlhMRcwFQYDVQQDEw5TdXByaXlhIFNoZXR0eTEjMCEGCSqGSIb3Dbndg JARYUc3Vwcml5Yhvfggsvwryw4y7214vAOBgNVHQ8BAf8EBAMCBLAwFAYJYIZIAYb4QgEBAQHBAQDAgCAM A0GCSqGSIb3DQEBBAUAA4GBAFi9FzyJlLmS+kzsue0kTXawbwamGdYql2w4hIBgdR+jWeLmD4CP4x -----END NEW CERTIFICATE REQUEST-----
向导还会将证书请求复制到配置目录中创建的文本文件,该文件位于/var/lib/pki/instance_name/subsystem_type/conf/
中。文本文件的名称取决于请求的证书类型。可能的文本文件列在 表 16.2 “为证书签名请求创建的文件” 中。表 16.2. 为证书签名请求创建的文件 文件名 证书签名请求 kracsr.txt KRA 传输证书 sslcsr.txt SSL 服务器证书 othercsr.txt 其他证书,如证书管理器 CRL 签名证书或 SSL 客户端证书 在将证书请求发送到 CA 之前,不要修改证书请求。该请求可以通过向导自动提交,或复制到剪贴板,并通过其端点页面手动提交到 CA。注意向导的自动提交功能只能向远程证书管理器提交请求。它不能用于将请求提交到第三方 CA。要将请求提交给第三方 CA,请使用其中一个证书请求文件。 - 检索证书。
- 打开证书管理器端点页面。
https://server.example.com:8443/ca/ee/ca
- 点 Retrieval 选项卡。
- 填写提交证书请求时创建的请求 ID 号,然后单击。
- 下一页显示证书请求的状态。如果状态 已经完成,则证书有一个链接。点 签发的证书 链接。
- 新证书信息以用户用户打印格式显示,采用 base-64 编码格式,采用 PKCS #7 格式。
- 将 base-64 编码的证书(包括 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 标记行)复制到文本文件。保存文本文件,并使用它来将证书副本存储在子系统的内部数据库中。请参阅 第 14.3.2.1 节 “创建用户”。
16.3. 更新 subsystem 证书
16.3.1. 在 End-Entities Forms 中重新生成证书
- 按照 第 5.5 节 “续订证书” 中所述,更新 CA 端到端形式的证书。这需要续订子系统证书的序列号。
- 将证书导入到子系统的数据库,如 第 16.6.1 节 “在证书系统数据库中安装证书” 所述。证书可以使用 certutil 或 console 导入。例如:
certutil -A -n "ServerCert cert-example" -t u,u,u -d /var/lib/pki/instance_name/alias -a -i /tmp/example.cert
16.3.2. 在控制台中更新证书
图 16.1. 续订子系统证书

16.3.3. 使用 certutil 更新证书
- 获取令牌数据库的密码。
cat /var/lib/pki/instance_name/conf/password.conf internal=263163888660
- 打开证书被续订的实例的证书数据库目录。
cd /var/lib/pki/instance_name/alias
- 列出要续订的证书的密钥和别名。要续订证书,用于生成的密钥对以及提供给新证书的主题名称必须与旧证书中的相同。
# certutil -K -d . certutil: Checking token "NSS Certificate DB" in slot "NSS User Private Key and Certificate Services" Enter Password or Pin for "NSS Certificate DB": < 0> rsa 69481646e38a6154dc105960aa24ccf61309d37d caSigningCert cert-pki-tomcat CA
- 复制
别名
目录作为备份,然后从证书数据库中删除原始证书。例如:certutil -D -n "ServerCert cert-example" -d .
- 运行 certutil 命令,并将选项设置为现有证书中的值。
certutil -d . -R -n "NSS Certificate DB:cert-pki-tomcat CA" -s "cn=CA Authority,o=Example Domain" -a -o example.req2.txt
生成新证书和密钥对与续订证书之间的区别是-n
选项的值。要生成全新的请求和密钥对,而-k
会设置密钥类型,而-g
则用于设置位长度。对于续订请求,-n
选项使用证书 nickname 来访问存储在安全数据库中的现有密钥对。有关参数的详情,请查看 certutil(1) man page。 - 提交证书请求,然后检索它并安装它,如 第 5.4 节 “请求和接收证书” 所述。
16.3.4. 更新系统证书
- 如果系统证书已过期:
- 创建临时证书:
# pki-server cert-create sslserver --temp
- 将临时证书导入证书系统的网络安全服务(NSS)数据库中:
# pki-server cert-import sslserver
- 启动证书系统:
# systemctl start pki-tomcatd@instance_name.service
- 显示证书并记录过期系统证书的 ID:
# pki-server cert-find
- 创建新的永久证书:
# pki-server cert-create certificate_ID
- 停止证书系统:
# systemctl stop pki-tomcatd@instance_name.service
- 导入新证书来替换过期的证书:
# pki-server cert-import certificate_ID
- 启动证书系统:
# systemctl start pki-tomcatd@instance_name.service
16.4. 更改 子系统证书的名称
CS.cfg
配置文件中的所有必要设置中更新证书 nickname。
CS.cfg
文件后,始终重启子系统。
CA 签署证书 |
|
OCSP 签署证书 |
|
Subsystem Certificate |
|
服务器证书 |
|
审计签署证书 |
|
传输证书 |
|
Storage Certificate |
|
服务器证书 |
|
Subsystem Certificate |
|
审计日志签名证书 |
|
OCSP 签署证书 |
|
服务器证书 |
|
Subsystem Certificate |
|
审计日志签名证书 |
|
KRA 传输证书[a] |
|
服务器证书 |
|
Subsystem Certificate |
|
审计日志签名证书 |
|
[a]
如果 KRA 传输证书 nickname 发生变化,这需要在 TKS 配置中更改,即使 TKS 证书都保持不变。
|
服务器证书 |
|
Subsystem Certificate |
|
审计日志签名证书 |
|
16.5. 使用跨Pair 证书
16.5.1. 安装跨Pair 证书
16.5.2. 搜索跨Pair 证书
/usr/lib[64]/mozldap/ldapsearch -D "cn=directory manager" -w secret -p 389 -h server.example.com -b "o=server.example.com-pki-ca" -s sub "(crossCertificatePair=*)"
16.6. 管理证书数据库
16.6.1. 在证书系统数据库中安装证书
16.6.1.1. 通过控制台安装证书
- CertificateCertificate Systemnbsp;System 子系统使用的任何证书
- 来自外部 CA 或其他证书证书系统nbsp 的任何可信 CA 证书;系统 CA
- 证书链
- 打开控制台。
pkiconsole https://server.example.com:secure_port/subsystem_type
- 在 Configuration 选项卡中,从左侧导航树中选择 System Keys and Certificates。
- 有两个标签可以安装证书,具体取决于子系统类型和证书类型。
- CA 证书 标签页是安装 CA 证书和证书链。对于证书管理器,此选项卡用于第三方 CA 证书或其他证书证书系统,系统 CA 证书;所有本地 CA 证书均安装在本地 证书 选项卡中。对于所有其他子系统,所有 CA 证书和链都通过此标签页安装。
- 本地证书 标签页是在安装所有服务器证书、子系统证书和本地证书(如 OCSP 签名或 KRA 传输)的位置。
选择相应的选项卡。 - 要在 本地证书选项卡中安装证书,请单击 。要在 CA 证书选项卡中安装证书,点 。两者都会打开证书设置向导。
- 当向导打开后,选择" 安装证书 "单选按钮,然后单击"
- 选择要安装的证书类型。下拉菜单选项与用于创建证书的选项相同,具体取决于子系统类型,还有更多选项来安装跨对证书。
- 粘贴到证书正文中,包括 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----,并将其指定到文本区域,或者指定绝对文件位置;这必须是本地文件。证书类似如下:
-----BEGIN CERTIFICATE----- MIICKzCCAZSgAwIBAgIBAzANgkqkiG9w0BAQQFADA3MQswCQYDVQQGEw JVUzERMA8GA1UEChMITmV0c2NhcGUxFTATBgNVBAsTDFN1cHJpeWEncy BDQTAeFw05NzEwMTgwMTM2MjVaFw05OTEwMTgwMTM2MjVaMEgxCzAJBg NVBAYTAlVTMREwDwYDVQQKEwhOZXRzY2FwZTENMAsGA1UECxMEUHawcz EXMBUGA1UEAxMOU3Vwcml5YSBTaGV0dHkwgZ8wDQYJKoZIhdfNAQEBBQ ADgY0AMIGJAoGBAMr6eZiPGfjX3uRJgEjmKiqG7SdATYzBcABu1AVyd7 chRFOGD3wNktbf6hRo6EAmM5R1Askzf8AW7LiQZBcrXpc0k4du+2j6xJ u2MPm8WKuMOTuvzpo+SGXelmHVChEqooCwfdiZywyZNmgaMa2MS6pUkf QVAgMBAAGjNjA0MBEGCWCGSAGG+EIBAQQEAwIAgD -----END CERTIFICATE-----
- 向导显示证书详情。查看指纹,以确保这是正确的证书,或使用按钮返回并提交不同的证书。为证书指定 nickname。向导会安装证书。
- 签署证书的任何 CA 都必须被子系统信任。确保该 CA 的证书存在于子系统的证书数据库中(内部或外部)以及它被信任。如果没有列出 CA 证书,请将证书作为可信 CA 添加到证书数据库中。如果列出了 CA 的证书但不受信任的,请将信任设置为可信,如 第 16.7 节 “更改 CA 证书的信任设置” 所示。安装未存储在证书证书系统的 CA 发布的证书时,将 CA 的证书链添加到数据库。要将 CA 链添加到数据库,请将 CA 链复制到文本文件,再次启动向导,并安装 CA 链。
16.6.1.2. 使用 certutil 安装证书
- 打开子系统的安全数据库目录。
cd /var/lib/pki/instance_name/alias
- 使用 -A 运行 certutil 命令以添加证书,并指向包含 CA 发布的证书的文件。
certutil -A -n cert-name -t trustargs -d . -a -i certificate_file
注意如果 CertificateCertificate Systemnbsp;System instance 的证书和密钥存储在 HSM 中,则使用 -h 选项指定令牌名称。例如:certutil -A -n "ServerCert cert-instance_name" -t u,u,u -d . -a -i /tmp/example.cert
16.6.1.3. 关于 CA 证书链
16.6.2. 查看数据库内容
cert8.db
中的证书。另外,也可以使用 certutil 工具列出证书。必须使用 certutil 来查看 TPS 证书,因为 TPS 子系统不使用管理控制台。
cert8.db
数据库中列出的证书是用于子系统操作的子系统证书。用户证书会存储在 LDAP 内部数据库中的用户条目。
16.6.2.1. 通过控制台查看数据库内容
- 打开子系统控制台。
pkiconsole https://server.example.com:secure_port/subsystem_type
- 在 Configuration 选项卡中,从左侧导航树中选择 System Keys and Certificates。
- 有两个标签页,即 CA 证书和密钥,它们列出不同类型的证书。
- CA 证书列出了对应私钥材料不可用的 CA 证书,如第三方 CA 发布的证书,如 Entrust 或 Verisign 或外部证书证书证书;系统证书管理器;系统证书管理器。
- 本地证书 列出了证书证书,由 CertificateCertificate Systemnbsp;System 子系统实例(如 KRA 传输证书或 OCSP 签名证书)保留的证书。
图 16.2. 证书数据库标签
- Certificate Database Management 表列出了子系统上安装的所有证书。每个证书都提供了以下信息:
- 证书名称
- 序列号
- 签发者名称,是此证书颁发者的通用名称(cn)。
- 令牌名称,存放证书的加密密钥的名称;对于存储在数据库中的证书,这是 内部的。
16.6.2.2. 使用 certutil 查看数据库内容
cd /var/lib/pki/instance_name/alias certutil -L -d . Certificate Authority - Example Domain CT,c, subsystemCert cert-instance name u,u,u Server-Cert cert-instance_name u,u,u
cd /var/lib/pki/instance_name/alias certutil -K -d . Enter Password or Pin for "NSS Certificate DB": <0> subsystemCert cert-instance_name <1> <2> Server-Cert cert-instance_name
16.6.3. 从数据库中删除证书
16.6.3.1. 通过控制台删除证书
- 打开子系统控制台。
pkiconsole https://server.example.com:secure_port/subsystem_type
- 在 Configuration 选项卡中,从左侧导航树中选择 System Keys and Certificates。
- 选择要删除的证书,然后点。
- 出现提示时,确认删除。
16.6.3.2. 使用 certutil 删除证书
- 打开实例的证书数据库目录。
/var/lib/pki/instance_name/alias
- 使用 -L 选项运行 certutil,列出数据库中的证书。例如:
certutil -L -d . Certificate Authority - Example Domain CT,c, subsystemCert cert-instance_name u,u,u Server-Cert cert-instance_name u,u,u
- 通过使用 -D 选项运行 certutil 来删除证书。
certutil -D -d . -n certificate_nickname
例如:certutil -D -d . -n "ServerCert cert-instance_name"
- 再次列出证书,以确认证书已被删除。
certutil -L -d . Certificate Authority - Example Domain CT,c, subsystemCert cert-instance_name u,u,u
16.7. 更改 CA 证书的信任设置
16.7.1. 通过控制台更改信任设置
- 打开子系统控制台。
pkiconsole https://server.example.com:secure_port/subsystem_type
- 在 Configuration 选项卡中,来自 左侧导航树中的系统密钥和证书。
- 选择 CA 证书 选项卡。
- 选择要修改的 CA 证书,然后点。
- 系统会打开一个提示信息,其中包含证书链(un)受信任的内容,确定您希望(不)信任它?点 yes 更改证书链的信任设置;按 no 保留原始的信任关系。
16.7.2. 使用 certutil 更改信任设置
- 打开实例的证书数据库目录。
cd /var/lib/pki/instance_name/alias
- 使用 -L 选项运行 certutil,列出数据库中的证书。例如:
certutil -L -d . Certificate Authority - Example Domain CT,c, subsystemCert cert-instance_name u,u,u Server-Cert cert-instance_name u,u,u
- 通过使用 -M 选项运行 certutil 来更改证书的信任设置。
certutil -M -n cert_nickname -t trust -d .
例如:certutil -M -n "Certificate Authority - Example Domain" -t TCu,TCu,TCu -d .
- 再次列出证书,以确认证书信任已更改。
certutil -L -d . Certificate Authority - Example Domain CTu,CTu,CTu subsystemCert cert-instance_name u,u,u Server-Cert cert-instance_name u,u,u
16.8. 管理由 子系统使用的令牌
16.8.1. 检测令牌
TokenInfo /var/lib/pki/instance_name/alias Database Path: /var/lib/pki/instance_name/alias Found external module 'NSS Internal PKCS #11 Module'
16.8.2. 查看令牌
- 打开实例
别名
目录。例如:cd /var/lib/pki/instance_name/alias
- 显示有关已安装的 PKCS #11 模块的信息,以及使用 modutil 工具安装的对应令牌的信息。
modutil -dbdir . -nocertdb -list
16.8.3. 更改令牌的密码
password.conf
文件中存储令牌密码。每次更改令牌密码时,都必须手动更新此文件。有关通过 password.conf
文件管理密码的更多信息,请参阅 红帽认证系统规划、安装和部署指南。
第 17 章 在 Red Hat Enterprise Linux 7 中设置时间和日期
timedatectl
程序作为 systemd
系统和服务管理器的一部分发布,可让您查看并更改系统时钟的配置。
更改当前时间
timedatectl set-time HH:MM:SS
更改当前日期
timedatectl set-time YYYY-MM-DD
第 18 章 确定证书系统产品版本
/usr/share/pki/CS_SERVER_VERSION
文件中。显示版本:
# cat /usr/share/pki/CS_SERVER_VERSION Red Hat Certificate System 9.4 (Batch Update 3)
- http://host_name:port_number/ca/admin/ca/getStatus
- http://host_name:port_number/kra/admin/kra/getStatus
- http://host_name:port_number/ocsp/admin/ocsp/getStatus
- http://host_name:port_number/tks/admin/tks/getStatus
- http://host_name:port_number/tps/admin/tps/getStatus
第 19 章 更新红帽认证系统
第 20 章 故障排除
- 问: 初始化脚本返回 OK 状态,但 my CA 实例没有响应。这是因为什么?
- 问: 我无法打开 pkiconsole,并在 stdout 中看到 Java 例外。
- 问: 我试图运行 pkiconsole,并在 stdout 中获取套接字例外。这是因为什么?
- 问: 我试图注册证书,并且收到错误 "request is not submitted...Subject Name Not Found"?
- 问: 为什么没有发布注册的证书?
- 问: 如何从远程主机打开 pkiconsole 工具?
- 问: 当 LDAP 服务器没有响应时,我该怎么办?
catalina.out
、system
,以及 调试
日志文件,以查看发生了哪些错误。这列出了几个常见错误。
catalina.out
文件中返回 Java 调用类错误:
Oct 29, 2010 4:15:44 PM org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-9080 java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:243) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:408) Caused by: java.lang.UnsatisfiedLinkError: jss4
libnss3.so
。使用以下命令进行检查:
ldd /usr/lib64/libjss4.so
libnss3.so
,请尝试取消设置 LD_LIBRARY_PATH
变量并重启 CA。
unset LD_LIBRARY_PATH systemctl restart pki-tomcatd@instance_name.service
server.xml
中存在错误的配置),或者为访问 admin 接口提供了错误的端口。
NSS Cipher Supported '0xff04' java.io.IOException: SocketException cannot read on socket at org.mozilla.jss.ssl.SSLSocket.read(SSLSocket.java:1006) at org.mozilla.jss.ssl.SSLInputStream.read(SSLInputStream.java:70) at com.netscape.admin.certsrv.misc.HttpInputStream.fill(HttpInputStream.java:303) at com.netscape.admin.certsrv.misc.HttpInputStream.readLine(HttpInputStream.java:224) at com.netscape.admin.certsrv.connection.JSSConnection.readHeader(JSSConnection.java:439) at com.netscape.admin.certsrv.connection.JSSConnection.initReadResponse(JSSConnection.java:430) at com.netscape.admin.certsrv.connection.JSSConnection.sendRequest(JSSConnection.java:344) at com.netscape.admin.certsrv.connection.AdminConnection.processRequest(AdminConnection.java:714) at com.netscape.admin.certsrv.connection.AdminConnection.sendRequest(AdminConnection.java:623) at com.netscape.admin.certsrv.connection.AdminConnection.sendRequest(AdminConnection.java:590) at com.netscape.admin.certsrv.connection.AdminConnection.authType(AdminConnection.java:323) at com.netscape.admin.certsrv.CMSServerInfo.getAuthType(CMSServerInfo.java:113) at com.netscape.admin.certsrv.CMSAdmin.run(CMSAdmin.java:499) at com.netscape.admin.certsrv.CMSAdmin.run(CMSAdmin.java:548) at com.netscape.admin.certsrv.Console.main(Console.java:1655)
调试日志
中。例如,这个配置集使用目录无法识别的自定义属性(MYATTRIBUTE
):
[14/Feb/2011:15:52:25][http-1244-Processor24]: BasicProfile: populate() policy setid =userCertSet [14/Feb/2011:15:52:25][http-1244-Processor24]: AuthTokenSubjectNameDefault: populate start [14/Feb/2011:15:52:25][http-1244-Processor24]: AuthTokenSubjectNameDefault: java.io.IOException: Unknown AVA keyword 'MYATTRIBUTE'. [14/Feb/2011:15:52:25][http-1244-Processor24]: ProfileSubmitServlet: populate Subject Name Not Found [14/Feb/2011:15:52:25][http-1244-Processor24]: CMSServlet: curDate=Mon Feb 14 15:52:25 PST 2011 id=caProfileSubmit time=13
debug
日志,它可以指示错误配置的位置。例如,这在映射程序中存在问题:
[31/Jul/2010:11:18:29][Thread-29]: LdapSimpleMap: cert subject dn:UID=me,E=me@example.com,CN=yes [31/Jul/2010:11:18:29][Thread-29]: Error mapping: mapper=com.netscape.cms.publish.mappers.LdapSimpleMap@258fdcd0 error=Cannot find a match in the LDAP server for certificate. netscape.ldap.LDAPException: error result (32); matchedDN = ou=people,c=test; No such object
CS.cfg
文件中的 发布 配置,或者在 CA 控制台的 Publishing 选项卡中检查。在这个示例中,问题位于 mapping 参数中,它必须指向 现有的 LDAP 后缀:
ca.publish.mapper.instance.LdapUserCertMap.dnPattern=UID=$subj.UID,dc=publish
pkiconsole
工具?
pkiconsole
。为此,管理员可以使用虚拟网络计算(VNC)连接:
- 在 Red Hat Certificate System 服务器中设置 VNC 服务器。重要
pkiconsole
工具无法在启用了 Federal Information Processing Standard(FIPS)模式的服务器中运行。如果证书系统服务器上启用了 FIPS 模式,请在 Red Hat Enterprise Linux 中使用不同的主机来运行 VNC 服务器。有关安装 VNC 服务器的详情,请查看 Red Hat System Administrator 指南中的 VNC 服务器 部分。 - 使用 VNC viewer 连接到运行 VNC 服务器的主机。详情请查看 Red Hat System Administrator 指南中的 VNC Viewer 部分。
- 在 VNC 窗口中打开
pkiconsole
工具。例如:# pkiconsole https://server.example.com:8443/ca
[02/Apr/2019:15:55:41][authorityMonitor]: authorityMonitor: failed to get LDAPConnection. Retrying in 1 second. [02/Apr/2019:15:55:42][authorityMonitor]: In LdapBoundConnFactory::getConn() [02/Apr/2019:15:55:42][authorityMonitor]: masterConn is null. [02/Apr/2019:15:55:42][authorityMonitor]: makeConnection: errorIfDown true [02/Apr/2019:15:55:42][authorityMonitor]: TCP Keep-Alive: true java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) [02/Apr/2019:15:55:42][authorityMonitor]: Can't create master connection in LdapBoundConnFactory::getConn! Could not connect to LDAP server host example911.redhat.com port 389 Error netscape.ldap.LDAPException: Unable to create socket: java.net.ConnectException: Connection refused (Connection refused) (-1)
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
# systemctl start pki-tomcatd-nuxwdog@instance_name.service
第 21 章 子系统控制和维护
21.1. 启动、停止、重启和 Obtaining 状态
systemctl
程序停止并启动。
# systemctl start unit_file@instance_name.service
# systemctl stop unit_file@instance_name.service
# systemctl restart unit_file@instance_name.service
# systemctl status unit_file@instance_name.service
- pki-tomcat: 在禁用 watchdog 时
- pki-tomcat-nuxwdog: With enabled watchdog
21.2. 子系统健康检查
- 由完整磁盘导致的审计故障
- 由 HSM 连接问题造成的签名失败
- LDAP 服务器连接问题
- 以此类推
部分 V. 参考信息
附录 A. 证书配置集输入和输出参考
A.1. 输入参考
A.1.1. 证书请求输入
- 证书请求类型.此下拉菜单允许用户指定证书请求类型。选择为 PKCS #10 或 CRMF。PKCS #10 和 CRMF 支持通过 Cryptographic 消息语法(CMC)注册的证书管理消息。
- 证书请求.这是用于粘贴请求的文本区域。
例 A.1.
caAdminCert.cfg:input.i1.class_id=certReqInputImpl
A.1.2. CMC 证书请求输入
例 A.2.
caCMCUserCert.cfg:input.i1.class_id=cmcCertReqInputImpl
A.1.3. 双密钥生成输入
- 密钥生成请求类型.此字段是一个只读字段,显示 crmf 作为请求类型。
- 密钥生成请求.此字段为加密和签名证书的密钥生成请求设置密钥大小选择。
例 A.3.
caDualCert.cfg:input.i1.class_id=dualKeyGenInputImpl
A.1.4. 文件增强输入
- 密钥生成请求类型.此字段是一个只读字段,显示 crmf 作为请求类型。
- 密钥生成请求.这个输入会添加一个下拉菜单,选择要在密钥生成请求中使用的密钥大小。
- 未签署的文件 URL.这将指定要签名的文件的位置。
- 签署的文本.该操作会给出文件名。
例 A.4.
caAgentFileSigning.cfg:input.i2.class_id=fileSigningInputImpl
A.1.5. 镜像输入
A.1.6. 密钥生成输入
- 密钥生成请求类型.此字段是一个只读字段,显示 crmf 作为请求类型。
- 密钥生成请求.这个输入会添加一个下拉菜单,选择要在密钥生成请求中使用的密钥大小。
例 A.5.
caDualCert.cfg:input.i1.class_id=keyGenInputImpl
A.1.7. nsHKeyCertRequest (Token Key) Input
- 令牌密钥 CUID.此字段为令牌设备提供 CUID(上下文的唯一用户 ID)。
- 令牌密钥用户公钥.此字段必须包含令牌用户的公钥。
例 A.6.
caTempTokenDeviceKeyEnrollment.cfg:input.i1.class_id=nsHKeyCertReqInputImpl
A.1.8. nsNKeyCertRequest (Token User Key) Input
- 令牌密钥用户 UID.此字段提供令牌设备的 LDAP 条目的 UID。
- 令牌密钥用户公钥.此字段必须包含令牌用户的公钥。
例 A.7.
caTempTokenUserEncryptionKeyEnrollment.cfg:input.i1.class_id=nsNKeyCertReqInputImpl
A.1.9. 序列号续订输入
例 A.8.
caTokenUserEncryptionKeyRenewal.cfg:input.i1.class_id=serialNumRenewInputImpl
A.1.10. 主题 DN 输入
例 A.9.
caAdminCert.cfg:input.i3.class_id=subjectDNInputImpl
A.1.11. 主题名称输入
- UID (LDAP 目录用户 ID)
- 电子邮件
- 通用名称 (用户名)
- 机构单元 (
机构
单元(应该) - 机构(机构名称 )
- 国家(用户所在国家 /地区)
例 A.10.
caDualCert.cfg:input.i2.class_id=subjectNameInputImpl
A.1.12. 提交信息输入
- requester Name
- 请求者电子邮件
- requester Phone
例 A.11.
caAdminCert.cfg:input.i2.class_id=submitterInfoInputImpl
A.1.13. 通用输入
ccm
和 GUID
参数:
例 A.12.
input.i3.class_id=genericInputImpl input.i3.params.gi_display_name0=ccm input.i3.params.gi_param_enable0=true input.i3.params.gi_param_name0=ccm input.i3.params.gi_display_name1=GUID input.i3.params.gi_param_enable1=true input.i3.params.gi_param_name1=GUID input.i3.params.gi_num=2 … policyset.set1.p6.default.class_id=subjectAltNameExtDefaultImpl policyset.set1.p6.default.name=Subject Alternative Name Extension Default policyset.set1.p6.default.params.subjAltExtGNEnable_0=true policyset.set1.p6.default.params.subjAltExtGNEnable_1=true policyset.set1.p6.default.params.subjAltExtPattern_0=$request.ccm$ policyset.set1.p6.default.params.subjAltExtType_0=DNSName policyset.set1.p6.default.params.subjAltExtPattern_1=(Any)1.3.6.1.4.1.311.25.1,0410$request.GUID$ policyset.set1.p6.default.params.subjAltExtType_1=OtherName policyset.set1.p6.default.params.subjAltNameExtCritical=false policyset.set1.p6.default.params.subjAltNameNumGNs=2
A.1.14. 主题备用名称扩展输入
req_san_pattern_#
进入输入,因此 SubjectAltNameExt
扩展。例如,包含以下内容的 URI:
...&req_san_pattern_0=host0.Example.com&req_san_pattern_1=host1.Example.com
host0.Example.com
和 host1.Example.com
注入以下配置集中的 SubjectAltNameExt
扩展。
例 A.13.
input.i3.class_id=subjectAltNameExtInputImpl input.i3.name=subjectAltNameExtInputImpl policyset.serverCertSet.9.constraint.class_id=noConstraintImpl policyset.serverCertSet.9.constraint.name=No Constraint policyset.serverCertSet.9.default.class_id=subjectAltNameExtDefaultImpl policyset.serverCertSet.9.default.name=Subject Alternative Name Extension Default policyset.serverCertSet.9.default.params.subjAltExtGNEnable_0=true policyset.serverCertSet.9.default.params.subjAltExtPattern_0=$request.req_san_pattern_0$ policyset.serverCertSet.9.default.params.subjAltExtType_0=DNSName policyset.serverCertSet.9.default.params.subjAltExtGNEnable_1=true policyset.serverCertSet.9.default.params.subjAltExtPattern_1=$request.req_san_pattern_1$ policyset.serverCertSet.9.default.params.subjAltExtType_1=DNSName policyset.serverCertSet.9.default.params.subjAltExtGNEnable_2=false policyset.serverCertSet.9.default.params.subjAltExtPattern_2=$request.req_san_pattern_2$ policyset.serverCertSet.9.default.params.subjAltExtType_2=DNSName policyset.serverCertSet.9.default.params.subjAltNameExtCritical=false policyset.serverCertSet.9.default.params.subjAltNameNumGNs=2
A.2. 输出参考
A.2.1. 证书输出
例 A.14.
caAdminCert.cfg:output.o1.class_id=certOutputImpl
A.2.2. PKCS #7 Output
例 A.15.
caAgentFileSigning.cfg:output.o1.class_id=pkcs7OutputImpl
A.2.3. nsNSKeyOutput
A.2.4. CMMF 输出
附录 B. 证书和 CRL 的默认、限制和扩展
B.1. 默认参考
B.1.1. 授权信息扩展默认
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
Method_n |
指定检索在 中出现扩展所发布证书的 CA 的其他信息的访问方法。这是以下值之一:
|
LocationType_n | 指定包含签发证书的 CA 的其他信息的位置的常规名称类型。这是以下类型之一:
|
Location_n |
指定地址或位置以获取签发证书的 CA 的额外信息。
|
Enable_n | 指定是否启用此位置。选择 true 将其标记为 set;选择 false 来禁用它。 |
B.1.2. 颁发机构键标识符默认值
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
B.1.3. 身份验证令牌对象名称默认
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
B.1.4. 基本限制扩展默认值
- 基本限制扩展约束 ; 请参阅 第 B.2.1 节 “基本限制扩展约束”。
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
IsCA | 指定证书主题是否为 CA。使用 true 时,服务器会检查 PathLen 参数,并在证书中设置指定的路径长度。使用 false 时,服务器会将证书主题视为非 CA,并忽略为 PathLen 参数指定的值。 |
PathLen |
指定路径长度,在下面链接的最大 CA 证书数(从属至)发出的从属 CA 证书数。路径长度会影响在证书验证过程中使用的 CA 证书的数量。链从验证和移动的最终证书开始。
如果以长期证书设置了扩展,则 maxPathLen 参数无效。
允许的可能值为 0 或 n。该值应该小于 CA 签名证书的 Basic Constraints 扩展中指定的路径长度。0 指定在从属 CA 证书下不允许从属 CA 证书;在路径中只能跟踪终止证书。n 必须是大于零的整数。它指定从属 CA 证书下允许的最大下级 CA 证书数。
如果该字段为空,则路径长度默认为由签发者证书中的 Basic Constraints 扩展中设置的路径长度确定的值。如果签发者的路径长度不受限制,则从属 CA 证书中的路径长度也会无限。如果签发者的路径长度大于零,则从属 CA 证书中的路径长度将设置为比签发者的路径长度小的值;例如,如果签发者的路径长度为 4,则子协调 CA 证书中的路径长度将设置为 3。
|
B.1.5. CA 有效期默认值
- 有效期约束 ; 请参阅 第 B.2.14 节 “有效期约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
bypassCAnotafterrange | 为请求 CA 是否可以请求一个有效周期超过发出 CA 有效期期的证书设置默认值。 |
range | 指定此证书的绝对有效期期,以天为单位。 |
startTime | 根据当前时间,设置有效期时。 |
B.1.6. 证书策略扩展默认值
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
numCertPolicies | 指定可定义的策略数量。默认值为 5。 |
enable | 选择 true 以启用策略;选择 false 来禁用策略。 |
policyId | 指定策略的 OID 标识符。 |
cpsURI.enable | 扩展可以包括 URI 到签发者的证书声明。选择 true 以启用 URI;选择 false 来禁用 URI。 |
CPSURI.value | 此值是对 CA 发布的认证实践声明(CPS)的指针。指针采用 URI 的形式。 |
usernotice.enable | 扩展可以包括 URI 到签发者的证书声明,或者可以嵌入签发者信息,如用户以文本形式通知。选择 true 来启用用户通知;选择 false 来禁用用户通知。 |
usernotice.noticeReference.noticeNumbers | 此可选用户 notice 参数是一系列数字,指向其他位置存储的消息。 |
usernotice.noticeReference.organization | 此可选的 user notice 参数指定公司的名称。 |
usernotice.explicitText.value | 此可选用户 notice 参数包含证书内的消息。 |
B.1.7. CRL Distribution Points Extension Default
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
Type_n | 指定 CRL 分发点的类型。Permissible 值为 DirectoryName、URIName 或 RelativeToIssuer。这个类型必须与 Name 字段中的值对应。 |
Name_n |
指定 CRL 分发点的名称,名称可以是以下格式:
|
Reasons_n |
指定在分发点上维护的 CRL 所涉及到的撤销原因。提供以下常量的逗号分隔列表:
|
IssuerType_n |
指定在分发点上签名了 CRL 的签发者的命名类型。签发者名称可采用以下格式:
|
IssuerName_n |
指定为 CRL 签名的 CRL 签发者的名称格式。允许的允许的值如下:
此参数的值必须与 issuerName 字段中的值对应。
|
B.1.8. 扩展密钥使用扩展默认值
使用 | OID |
---|---|
服务器身份验证 | 1.3.6.1.5.5.7.3.1 |
客户端身份验证 | 1.3.6.1.5.5.7.3.2 |
代码签名 | 1.3.6.1.5.5.7.3.3 |
电子邮件 | 1.3.6.1.5.5.7.3.4 |
IPsec 结束系统 | 1.3.6.1.5.5.7.3.5 |
IPsec 隧道 | 1.3.6.1.5.5.7.3.6 |
IPsec 用户 | 1.3.6.1.5.5.7.3.7 |
时间戳 | 1.3.6.1.5.5.7.3.8 |
- 扩展密钥使用约束 ; 请参阅 第 B.2.3 节 “扩展密钥使用扩展约束”。
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
OID | 指定用于标识密钥使用用途的 OID。Permissible 值是一个唯一且有效的 OID,在点分隔的数字组件标记中指定。例如,2.16.840.1.113730.1.99。根据密钥使用目的,OID 可以被 PKIX(在 表 B.6 “扩展密钥使用方法的 PKIX 使用量定义”中列出)或自定义 OID 来指定。自定义 OID 必须位于公司使用的 ID 已注册子树中。虽然可以使用自定义 OID 评估和测试证书证书证书证书nbsp;System,在生产环境中,遵循用于定义 OID 和注册 ID 的 ISO 规则,但可以使用自定义 OID 进行评估和测试证书证书。 |
B.1.9. 最新的 CRL 扩展默认值
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
PointEnable_n | 选择 true 即可启用此点;选择 false 来禁用此点。 |
PointType_n | 指定发布点的类型,可以是 DirectoryName 或 URIName。 |
PointName_n |
|
PointIssuerName_n |
指定已签署 CRL 的签发者的名称。名称可采用以下格式:
name 值必须符合 PointType_ 中指定的格式。
|
PointType_n | 指定为 CRL 签名的 CRL 签发者的一般名称类型。允许的允许的值如下:
|
B.1.10. 通用扩展默认
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
genericExtOID | 指定 extensions OID 标识符。 |
genericExtData | 扩展中包含的二进制数据。 |
B.1.11. 禁止任何策略扩展默认值
参数 | 描述 |
---|---|
Critical | 这个策略必须标记为 critical。选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
SkipCerts | 此参数指定在不再允许任何策略前可能会出现在路径中的额外证书数量。值 1 表示,任何策略可能会被处理在此证书上发布的证书,但不能处理路径中的额外证书。 |
B.1.12. 签发者备用名称扩展默认值
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
issuerAltExtType | 这将设置要使用的名称扩展类型,它可以是以下之一:
|
issuerAltExtPattern |
指定要在扩展中包含的 request 属性值。属性值必须符合任何受支持的通用名称类型。permissible 值是证书请求中包含的 request 属性。
如果服务器在请求中找到 属性,它将在扩展中设置属性值,并为证书添加扩展。如果指定了多个属性,且请求中没有包括任何属性,服务器不会为证书添加 Issuer Alternative Name 扩展。如果不能从请求中使用合适的属性组成 issuerAlternativeName,则可以在不用任何令牌表达式的情况下使用字面字符串。例如,证书授权中心。
|
B.1.13. 主要使用扩展默认值
- 密钥使用约束 ; 请参阅 第 B.2.6 节 “主要使用扩展约束”。
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
digitalSignature | 指定是否允许签名 SSL 客户端证书和 S/MIME 签名证书。选择 true 来设置。 |
nonRepudiation | 指定是否将 用于 S/MIME 签名证书。选择 true 来设置。
WARNING
使用这个位是简介的。在为任何证书设置前,请仔细考虑其使用的合法后果。
|
keyEncipherment | 指定主体中的公钥是否用于隔离私钥或 secret 密钥。这是为 SSL 服务器证书和 S/MIME 加密证书设置的。选择 true 来设置。 |
dataEncipherment | 指定在使用主体的公钥而非密钥材料时,是否设置扩展。选择 true 来设置。 |
keyAgreement | 指定每当将主题的公钥用于密钥协议时,是否设置扩展。选择 true 来设置。 |
keyCertsign | 指定公钥是否用于验证其他证书的签名。此设置用于 CA 证书。选择 true 来设置 选项。 |
cRLSign | 指定是否为为 CRL 签名的 CA 签名证书设置扩展。选择 true 来设置。 |
encipherOnly | 指定当公钥只在执行密钥协议时加密数据时是否设置扩展。如果设置了这个位,则还应设置 keyAgreement。选择 true 来设置。 |
decipherOnly | 指定当公钥只在执行密钥协议时解密数据时是否设置扩展。如果设置了这个位,则还应设置 keyAgreement。选择 true 来设置。 |
B.1.14. 名称限制扩展默认值
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
PermittedSubtreesn.min |
指定允许的子树的最小数量。
|
PermittedSubtreesmax_n |
指定允许的子树的最大数量。
|
PermittedSubtreeNameChoice_n | 指定要在扩展中包含允许的子树的常规名称类型。允许的允许的值如下:
|
PermittedSubtreeNameValue_n |
指定要在扩展中包含允许的子树的常规名称值。
|
PermittedSubtreeEnable_n | 选择 true 启用这个允许的子树条目。 |
ExcludedSubtreesn.min |
指定排除子树的最小数量。
|
ExcludedSubtreeMax_n |
指定排除子树的最大数量。
|
ExcludedSubtreeNameChoice_n | 指定要包含在扩展中的排除子树的常规名称类型。允许的允许的值如下:
|
ExcludedSubtreeNameValue_n |
指定要在扩展中包含允许的子树的常规名称值。
|
ExcludedSubtreeEnable_n | 选择 true 来启用此排除子树条目。 |
B.1.15. Netscape Certificate Type Extension Default
B.1.16. Netscape Comment Extension 默认
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
CommentContent | 指定要在证书中出现的注释的内容。 |
B.1.17. 没有默认扩展
B.1.18. OCSP No Check Extension Default
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
B.1.19. 策略限制扩展默认值
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
reqExplicitPolicy |
指定在需要显式策略前路径中允许的证书总数。这是在需要可接受的策略前,可串联在下级 CA 证书下的 CA 证书的数量。
这个数字会影响在证书验证过程中要使用的 CA 证书数量。链从验证和移动链的最终证书开始。如果以长期证书设置了扩展,则参数无效。
|
inhibitPolicyMapping |
在不再允许策略映射前,指定路径中允许的证书总数。
|
B.1.20. 策略映射程序扩展默认
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
IssuerDomainPolicy_n | 指定分配给发布 CA 的 policy 语句的 OID,以便与另一个 CA 的 policy 语句映射。例如,1.2.3.4.5。 |
SubjectDomainPolicy_n | 指定分配给发布 CA 的主题 CA 的 policy 语句的 OID,该语句与发出 CA 的 policy 语句对应。例如: 6.7.8.9.10。 |
B.1.21. 私钥使用周期扩展默认值
参数 | 描述 |
---|---|
Critical | 这个扩展应该总是非关键。 |
puStartTime | 此参数设置开始时间。默认值为 0, 它从激活扩展时开始有效周期。 |
puDurationDays | 此参数设置用量周期的时间。默认值为 365,它从激活扩展时将有效期期设置为 365 天。 |
B.1.22. 签名算法
- 签名算法; 请参阅 第 B.2.10 节 “签名算法”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
signingAlg | 指定要用于创建此证书的默认签名算法。代理可通过指定 签名AlgsAllowed 参数中包含的值之一来覆盖这个值。 |
signingAlgsAllowed | 指定可用于为此证书签名的签名算法。这些算法可以是以下任意一种或全部算法:
|
B.1.23. 主题名称扩展默认值
例 B.1. 默认主题备用名称扩展配置
policyset.serverCertSet.9.constraint.name=No Constraint policyset.serverCertSet.9.default.class_id=subjectAltNameExtDefaultImpl policyset.serverCertSet.9.default.name=Subject Alternative Name Extension Default policyset.serverCertSet.9.default.params.subjAltExtGNEnable_0=true policyset.serverCertSet.9.default.params.subjAltExtPattern_0=$request.requestor_email$ policyset.serverCertSet.9.default.params.subjAltExtType_0=RFC822Name policyset.serverCertSet.9.default.params.subjAltExtGNEnable_1=true policyset.serverCertSet.9.default.params.subjAltExtPattern_1=$request.SAN1$ policyset.serverCertSet.9.default.params.subjAltExtType_1=DNSName policyset.serverCertSet.9.default.params.subjAltExtGNEnable_2=true policyset.serverCertSet.9.default.params.subjAltExtPattern_2=http://www.server.example.com policyset.serverCertSet.9.default.params.subjAltExtType_2=URIName policyset.serverCertSet.9.default.params.subjAltExtType_3=OtherName policyset.serverCertSet.9.default.params.subjAltExtPattern_3=(IA5String)1.2.3.4,$server.source$ policyset.serverCertSet.9.default.params.subjAltExtSource_3=UUID4 policyset.serverCertSet.9.default.params.subjAltExtGNEnable_3=true policyset.serverCertSet.9.default.params.subjAltExtType_4=RFC822Name policyset.serverCertSet.9.default.params.subjAltExtGNEnable_4=false policyset.serverCertSet.9.default.params.subjAltExtPattern_4= policyset.serverCertSet.9.default.params.subjAltNameExtCritical=false policyset.serverCertSet.9.default.params.subjAltNameNumGNs=4
策略设置令牌 | 描述 |
---|---|
$request.auth_token.cn$ | 请求证书的用户的 LDAP 通用名称(cn )属性。 |
$request.auth_token.mail$ | 请求证书的用户的 LDAP 电子邮件(邮件 )属性值。 |
$request.auth_token.tokenCertSubject$ | 证书主题名称。 |
$request.auth_token.uid$ | 请求证书的用户的 LDAP 用户 ID(uid )属性。 |
$request.auth_token.user$ | |
$request.auth_token.userDN$ | 请求证书的用户 DN。 |
$request.auth_token.userid$ | 请求证书的用户的用户 ID 属性的值。 |
$request.uid$ | 请求证书的用户的用户 ID 属性的值。 |
$request.profileRemoteAddr$ | 发出请求的用户的 IP 地址。根据客户端,这可以是 IPv4 或 IPv6 地址。IPv4 地址的格式必须为 n.n.n 或 n .n.n,m.m.m。例如:128 .21.39.40 或 128.21.39.40,255.255.255.00。IPv6 地址使用 128 位命名空间,使用以冒号分隔的 IPv6 地址以及句点分隔的子网掩码。例如: 0:0:0:0:0:0:13.1.68.3,FF01::43,0:0:0:0:0:0:13.1.68.3,FFFF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF: FF:FF:FF:FF: FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF: FF |
$request.profileRemoteHost$ | 用户机器的主机名或 IP 地址。主机名可以是完全限定域名和协议,如 http://server.example.com。IPv4 地址的格式必须为 n.n.n 或 n .n.n,m.m.m。例如:128 .21.39.40 或 128.21.39.40,255.255.255.00。IPv6 地址使用 128 位命名空间,使用以冒号分隔的 IPv6 地址以及句点分隔的子网掩码。例如: 0:0:0:0:0:0:13.1.68.3,FF01::43,0:0:0:0:0:0:13.1.68.3,FFFF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF: FF:FF:FF:FF: FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF: FF |
$request.requestor_email$ | 提交请求的人的电子邮件地址。 |
$request.requestowner$ | 提交请求的人员。 |
$request.subject$ | 发布证书的实体的主题名称 DN。例如,uid=jsmith,e=jsmith@example.com。 |
$request.tokencuid$ | 用于请求注册的智能卡唯一 ID(CUID) |
$request.upn$ | Microsoft UPN。它的格式为 (UTF8String)1.3.6.1.4.1.311.20.2.3,$request.upn$。 |
$server.source$ | 指示服务器在主题名称中生成版本 4 个 UUID(随机号)组件。这始终具有格式 (IA5String)1.2.3.4,$server.source$. |
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
pattern | 指定要在扩展中包含的 request 属性值。属性值必须符合任何受支持的通用名称类型。如果服务器在请求中找到 属性,它将在扩展中设置属性值,并为证书添加扩展。如果指定了多个属性,且请求中没有包括任何属性,服务器不会为证书添加 Subject Alternative Name 扩展。permissible 值是证书请求中包含的 request 属性。例如,$request.requestor_email$. |
类型 |
指定 request 属性的一般名称类型。
|
源 | 指定用于生成 ID 的标识源或协议。唯一支持的来源是 UUID4,它会生成一个随机数字来创建 UUID。 |
组件数量(NumGN) | 指定在主题备用名称中包含的名称组件数量。 |
B.1.24. 主题目录属性扩展默认值
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
Critical | 选择 true 来标记这个扩展关键; 选择 false 来标记非关键。 |
名称 | 属性名称;这可以是任何 LDAP 目录属性,如 cn 或 mail 。 |
pattern | 指定要在扩展中包含的 request 属性值。属性值必须符合属性的允许值。如果 server 找到 属性,它将在扩展中设置属性值,并为证书添加扩展。如果指定了多个属性,并且请求中不存在任何属性,服务器不会将 Subject Directory Attributes 扩展添加到证书。例如,$request.requestor_email$. |
启用 | 设置该属性是否能够添加到证书中。选择 true 来启用属性。 |
B.1.25. 主题信息扩展默认
参数 | 描述 |
---|---|
Critical | 这个扩展应该不是关键。 |
subjInfoAccessNumADs | 证书中包含的信息访问部分数量。 |
subjInfoAccessADMethod_n | 访问方法的 OID。 |
subjInfoAccessADMethod_n | 访问方式类型。
|
subjInfoAccessADLocation_n |
基于类型 subjInfoAccessADMethod_n 的位置
i.e.,URI 名称的 URL。
|
subjInfoAccessADEnable_n | 选择 true 以启用这个扩展 ; 选择 false 来禁用这个扩展。 |
B.1.26. 主题键标识符默认
- 扩展约束 ; 请参阅 第 B.2.4 节 “扩展约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
B.1.27. 主题名称默认
- 主题名称约束 ; 请参阅 第 B.2.11 节 “主题名称约束”。
- 唯一的 Subject Name Constraint; 请参阅 第 B.2.13 节 “唯一的 Subject Name Constraint”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
名称 | 指定此证书的主题名称。 |
Name
参数替换为 AuthToken 中的 "Subject Name",如下所示。
policyset.userCertSet.1.default.class_id=subjectNameDefaultImpl policyset.userCertSet.1.default.name=Subject Name Default policyset.userCertSet.1.default.params.name=$request.auth_token.tokenCertSubject$
B.1.28. 用户密钥默认值
- 键约束; 请参阅 第 B.2.5 节 “键约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
B.1.29. 用户签名算法
- 签名算法; 请参阅 第 B.2.10 节 “签名算法”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
B.1.30. 用户主题名称默认
- 主题名称约束 ; 请参阅 第 B.2.11 节 “主题名称约束”。
- 唯一的 Subject Name Constraint; 请参阅 第 B.2.13 节 “唯一的 Subject Name Constraint”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
B.1.31. 用户有效期默认值
- 有效期约束 ; 请参阅 第 B.2.14 节 “有效期约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
B.1.32. 用户补充默认设置
policyset.set1.p6.default.class_id=userExtensionDefaultImpl policyset.set1.p6.default.name=User Supplied Extension Default policyset.set1.p6.default.params.userExtOID=2.5.29.19
- 如果在证书请求和默认值中指定扩展的 OID,则扩展由约束验证并应用到证书。
- 如果在请求中给出了扩展的 OID,但没有在配置集中的"用户补充扩展"中指定,则用户指定的扩展名将被忽略,且证书在没有该扩展的情况下被成功注册。
- 如果在带有对应 OID(Extension Constraint)的配置集上设置此扩展,那么通过该配置集处理的任何证书请求 都必须 执行指定的扩展,或者请求被拒绝。
userExtOID
参数中指定的 OID 用于扩展密钥使用范围。
例 B.2. 用户为扩展密钥使用扩展扩展默认值
policyset.set1.2.constraint.class_id=extendedKeyUsageExtConstraintImpl policyset.set1.2.constraint.name=Extended Key Usage Extension policyset.set1.2.constraint.params.exKeyUsageCritical=false policyset.set1.2.constraint.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.2,1.3.6.1.5.5.7.3.4 policyset.set1.2.default.class_id=userExtensionDefaultImpl policyset.set1.2.default.name=User Supplied Extension Default policyset.set1.2.default.params.userExtOID=2.5.29.37
例 B.3. CSR 中的多个用户提供的扩展
- 对于扩展密钥使用:
policyset.serverCertSet.2.constraint.class_id=extendedKeyUsageExtConstraintImpl policyset.serverCertSet.2.constraint.name=Extended Key Usage Extension policyset.serverCertSet.2.constraint.params.exKeyUsageCritical=false policyset.serverCertSet.2.constraint.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.2,1.3.6.1.5.5.7.3.4 policyset.serverCertSet.2.default.class_id=userExtensionDefaultImpl policyset.serverCertSet.2.default.name=User Supplied Extension Default policyset.serverCertSet.2.default.params.userExtOID=2.5.29.37
- 对于主要使用范围:使用以下格式,您可以应用扩展参数的策略:
- CSR: value = "true"中必须已存在
- CSR: value = "false"中 不能 存在
- 是可选的:value = "-"
例如:policyset.serverCertSet.13.constraint.class_id=keyUsageExtConstraintImpl policyset.serverCertSet.13.constraint.name=Key Usage Extension Constraint policyset.serverCertSet.13.constraint.params.keyUsageCritical=- policyset.serverCertSet.13.constraint.params.keyUsageCrlSign=false policyset.serverCertSet.13.constraint.params.keyUsageDataEncipherment=- policyset.serverCertSet.13.constraint.params.keyUsageDecipherOnly=- policyset.serverCertSet.13.constraint.params.keyUsageDigitalSignature=- policyset.serverCertSet.13.constraint.params.keyUsageEncipherOnly=- policyset.serverCertSet.13.constraint.params.keyUsageKeyAgreement=true policyset.serverCertSet.13.constraint.params.keyUsageKeyCertSign=- policyset.serverCertSet.13.constraint.params.keyUsageKeyEncipherment=- policyset.serverCertSet.13.constraint.params.keyUsageNonRepudiation=- policyset.serverCertSet.13.default.class_id=userExtensionDefaultImpl policyset.serverCertSet.13.default.name=User Supplied Key Usage Extension policyset.serverCertSet.13.default.params.userExtOID=2.5.29.15
certutil
使用用户定义的扩展来创建 CSR”。
B.1.33. 有效性默认值
- 有效期约束 ; 请参阅 第 B.2.14 节 “有效期约束”。
- 无限制; 请参阅 第 B.2.8 节 “No Constraint”。
参数 | 描述 |
---|---|
range | 指定此证书的有效性周期。 |
startTime | 根据当前时间,设置有效期时。 |
B.2. 约束参考
B.2.1. 基本限制扩展约束
参数 | 描述 |
---|---|
basicConstraintsCritical | 指定扩展是否可以标记为关键或非关键。选择 true 来标记此扩展关键; 选择 false 以阻止此扩展标记为关键。选择一个连字符 - ,表示没有关键性首选项。 |
basicConstraintsIsCA | 指定证书主题是否为 CA。选择 true 需要这个参数的值为 true (是 CA);选择 false 以禁止此参数使用 true ;选择一个连字符 - - 以指示没有为此参数放置限制。 |
basicConstraintsMinPathLen |
指定允许的路径长度的最低允许,下可链的 CA 证书的最大数量(提交至)发出的从属 CA 证书。路径长度会影响证书验证过程中使用的 CA 证书数量。链从验证和移动的最终证书开始。
如果以长期证书设定扩展,则此参数无效。
允许的可能值为 0 或 n。该值必须小于 CA 签名证书的 Basic Constraints 扩展中指定的路径长度。
0 指定,在签发的从属 CA 证书下不允许从属 CA 证书;在路径中只能遵循最终用户证书。
n 必须是大于零的整数。这是最低限额的 CA 证书数量,允许位于所用的下级 CA 证书。
|
basicConstraintsMaxPathLen |
指定最大允许的路径长度,在下面链接的最大 CA 证书数(提交至)发出的从属 CA 证书数。路径长度会影响证书验证过程中使用的 CA 证书数量。链从验证和移动的最终证书开始。
如果以长期证书设定扩展,则此参数无效。
允许的可能值为 0 或 n。该值必须大于 CA 签名证书的 Basic Constraints 扩展中指定的路径长度。
0 指定,在签发的从属 CA 证书下不允许从属 CA 证书;在路径中只能遵循最终用户证书。
n 必须是大于零的整数。这是在使用从属 CA 证书下允许的最大下级 CA 证书数。
如果字段为空,则路径长度默认为由签发者证书中 Basic Constraints 扩展中设置的路径长度决定的值。如果签发者的路径长度不受限制,则从属 CA 证书中的路径长度也会无限。如果签发者的路径长度是一个大于零的整数,则从属 CA 证书中的路径长度被设置为比签发者的路径长度小的值之一;例如,如果签发者的路径长度为 4,则子协调 CA 证书中的路径长度被设置为 3。
|
B.2.2. CA Validity Constraint
B.2.3. 扩展密钥使用扩展约束
参数 | 描述 |
---|---|
exKeyUsageCritical | 当设置为 true 时,扩展名可以标记为 critical。当设置为 false 时,扩展可以标记为非关键。 |
exKeyUsageOIDs | 指定用于标识密钥使用目的的允许 OID。可以在以逗号分隔的列表中添加多个 OID。 |
B.2.4. 扩展约束
参数 | 描述 |
---|---|
extCritical | 指定扩展是否可以标记为关键或非关键。选择 true 来标记扩展名严重;选择 false 来标记它非关键。选择 - 不强制选择。 |
extOID | 证书必须存在的扩展名的 OID 才能通过约束。 |
B.2.5. 键约束
Parameters
参数包含以逗号分隔的法律密钥大小列表,而 EC 键则包括了用逗号分开的可用 ECC curves 列表。
参数 | 描述 |
---|---|
keyType | 指定密钥类型,默认为,并使用 RSA 密钥系统。选择是 rsa 和 ec。如果指定了密钥类型且未由系统标识,则约束将被拒绝。 |
KeyParameters | 定义特定密钥参数。为键设置的参数因 键 类型而异。
|
B.2.6. 主要使用扩展约束
参数 | 描述 |
---|---|
keyUsageCritical | 选择 true 来标记此扩展关键;选择 false 来标记它非关键。选择 - 无首选项。 |
keyUsageDigitalSignature | 指定是否为 SSL 客户端证书和 S/MIME 签名证书签名。选择 true 以将其标记为 set;选择 false 以保留此设置;选择一个连字符 - 以指示没有为此参数放置限制。 |
kleyUsageNonRepudiation | 指定是否设置 S/MIME 签名证书。选择 true 以将其标记为 set;选择 false 以保留此设置;选择一个连字符 - 以指示没有为此参数放置限制。
WARNING
使用这个位是简介的。在为任何证书设置前,请仔细考虑其使用的合法后果。
|
keyEncipherment | 指定是否为 SSL 服务器证书和 S/MIME 加密证书设置扩展。选择 true 以将其标记为 set;选择 false 以保留此设置;选择一个连字符 - 以指示没有为此参数放置限制。 |
keyUsageDataEncipherment | 指定在使用主体的公钥加密用户数据而非密钥材料时,是否设置扩展。选择 true 以将其标记为 set;选择 false 以保留此设置;选择一个连字符 - 以指示没有为此参数放置限制。 |
keyUsageKeyAgreement | 指定每当将主题的公钥用于密钥协议时,是否设置扩展。选择 true 以将其标记为 set;选择 false 以保留此设置;选择一个连字符 - 以指示没有为此参数放置限制。 |
keyUsageCertsign | 指定扩展是否适用于所有 CA 签名证书。选择 true 以将其标记为 set;选择 false 以保留此设置;选择一个连字符 - 以指示没有为此参数放置限制。 |
keyUsageCRLSign | 指定是否为用于签署 CRL 的 CA 签名证书的扩展。选择 true 以将其标记为 set;选择 false 以保留此设置;选择一个连字符 - 以指示没有为此参数放置限制。 |
keyUsageEncipherOnly | 指定在仅用于加密数据的公钥时是否设定扩展。如果设置了这个位,则还应设置 keyUsageKeyAgreement。选择 true 以将其标记为 set;选择 false 以保留此设置;选择一个连字符 - 以指示没有为此参数放置限制。 |
keyUsageDecipherOnly | 指定是否只用于压缩数据,是否设置扩展。如果设置了这个位,则还应设置 keyUsageKeyAgreement。选择 true 以将其标记为 set;选择 false 以保留此设置;选择一个连字符 - 以指示没有为此参数放置限制。 |
B.2.7. Netscape Certificate Type Extension Constraint
B.2.8. No Constraint
B.2.9. renewal Grace Period Constraint
参数 | 描述 |
---|---|
renewal.graceAfter | 在证书过期 后 设置该周期(以天为单位),以供续订。如果证书已过期了该时间,则拒绝续订请求。如果没有给定值,则没有限制。 |
renewal.graceBefore | 在证书过期 之前设置该 周期,以便进行续订。如果证书没有接近其过期日期,则拒绝续订请求。如果没有给定值,则没有限制。 |
B.2.10. 签名算法
参数 | 描述 |
---|---|
signingAlgsAllowed | 设置可指定为为证书签名的签名算法。这些算法可以是以下任意一种或全部算法:
|
B.2.11. 主题名称约束
参数 | 描述 |
---|---|
pattern | 指定用于构建主题 DN 的正则表达式或其他字符串。 |
主题名称和正则表达式
Subject Name Constraint 的正则表达式与匹配正则表达式的 Java 工具匹配。这些正则表达式的格式列在 中 https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html。这允许通配符(如星号(1))搜索任意字符和句点(.)搜索任何类型字符。
uid
属性开头; period-asterisk(.*)通配符允许任何 type 和 uid
后面的字符数。
证书请求中的 subject Name 和 UID 或 CN
用于构建主题 DN 的模式也可以基于请求证书的用户的 CN 或 UID。Subject Name Constraint 设置 CN(或 UID)的 patter,以在证书请求的 DN 中识别,然后在该 CN 上构建 Subject Name Default 构建,以使用预定义的目录树创建证书的主题 DN。
policyset.serverCertSet.1.constraint.class_id=subjectNameConstraintImpl policyset.serverCertSet.1.constraint.name=Subject Name Constraint policyset.serverCertSet.1.constraint.params.pattern=CN=[^,]+,.+
policyset.serverCertSet.1.constraint.params.accept=true policyset.serverCertSet.1.default.class_id=subjectNameDefaultImpl policyset.serverCertSet.1.default.name=Subject Name Default policyset.serverCertSet.1.default.params.name=CN=$request.req_subject_name.cn$,DC=example, DC=com
B.2.12. 唯一的键约束
参数 | 描述 |
---|---|
allowSameKeyRenewal |
请求被视为续订,如果此参数设置为 true,如果公钥不唯一,则接受请求,如果主题 DN 与现有证书匹配,则接受请求。但是,如果公钥是重复的,并且与现有对象 DN 不匹配,则请求将被拒绝。
当 参数设置为 false 时,重复的公钥请求将被拒绝。
|
B.2.13. 唯一的 Subject Name Constraint
参数 | 描述 |
---|---|
enableKeyUsageExtensionChecking | 允许证书拥有相同主题名称的可选设置,只要其密钥使用设置不同。这是 true 或 false。默认为 true,它允许重复的主题名称。 |
B.2.14. 有效期约束
notBefore
参数提供了一个未接受传递的时间,以及一个未接受 notBefore 的时间超过 notBefore
的 notAfter
参数。
参数 | 描述 |
---|---|
range | 有效周期的范围。这是一个整数,用于设置天数。notBefore 和 notAfter 时间之间的差别(在天数内)必须小于范围值,否则此约束将被拒绝。 |
notBeforeCheck | 验证范围是否在宽限期内。当 NotBeforeCheck 布尔值参数设为 true 时,系统将检查 notBefore 时间不大于当前时间加上 notBeforeGracePeriod 值。如果 notBeforeTime 不在当前时间和 notBeforeGracePeriod 值之间,则这个约束将被拒绝。 |
notBeforeGracePeriod | 宽限期(以秒为单位)。 如果 notBeforeTime 不在当前时间和 notBeforeGracePeriod 值之间,则这个约束将被拒绝。只有在 notBeforeCheck 参数设置为 true 时才会检查此约束。 |
notAfterCheck | 给定时间是否在到期期后。当 notAfterCheck 布尔值参数设为 true 时,系统会检查 notAfter 时间大于当前时间。如果当前时间超过 notAfter 时间,则此约束将被拒绝。 |
B.3. 标准 X.509 v3 证书扩展参考
例 B.4. Pretty-Print Certificate Extensions 示例
Data: Version: v3 Serial Number: 0x1 Signature Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5 Issuer: CN=Certificate Manager,OU=netscape,O=ExampleCorp,L=MV,ST=CA,C=US Validity: Not Before: Friday, February 21, 2005 12:00:00 AM PST America/Los_Angeles Not After: Monday, February 21, 2007 12:00:00 AM PST America/Los_Angeles Subject: CN=Certificate Manager,OU=netscape,O=ExampleCorp,L=MV,ST=CA,C=US Subject Public Key Info: Algorithm: RSA - 1.2.840.113549.1.1.1 Public Key: Exponent: 65537 Public Key Modulus: (2048 bits) : E4:71:2A:CE:E4:24:DC:C4:AB:DF:A3:2E:80:42:0B:D9: CF:90:BE:88:4A:5C:C5:B3:73:BF:49:4D:77:31:8A:88: 15:A7:56:5F:E4:93:68:83:00:BB:4F:C0:47:03:67:F1: 30:79:43:08:1C:28:A8:97:70:40:CA:64:FA:9E:42:DF: 35:3D:0E:75:C6:B9:F2:47:0B:D5:CE:24:DD:0A:F7:84: 4E:FA:16:29:3B:91:D3:EE:24:E9:AF:F6:A1:49:E1:96: 70:DE:6F:B2:BE:3A:07:1A:0B:FD:FE:2F:75:FD:F9:FC: 63:69:36:B6:5B:09:C6:84:92:17:9C:3E:64:C3:C4:C9 Extensions: Identifier: Netscape Certificate Type - 2.16.840.1.113730.1.1 Critical: no Certificate Usage: SSL CA Secure Email CA ObjectSigning CA Identifier: Basic Constraints - 2.5.29.19 Critical: yes Is CA: yes Path Length Constraint: UNLIMITED Identifier: Subject Key Identifier - 2.5.29.14 Critical: no Key Identifier: 3B:46:83:85:27:BC:F5:9D:8E:63:E3:BE:79:EF:AF:79: 9C:37:85:84 Identifier: Authority Key Identifier - 2.5.29.35 Critical: no Key Identifier: 3B:46:83:85:27:BC:F5:9D:8E:63:E3:BE:79:EF:AF:79: 9C:37:85:84 Identifier: Key Usage: - 2.5.29.15 Critical: yes Key Usage: Digital Signature Key CertSign Crl Sign Signature: Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5 Signature: AA:96:65:3D:10:FA:C7:0B:74:38:2D:93:54:32:C0:5B: 2F:18:93:E9:7C:32:E6:A4:4F:4E:38:93:61:83:3A:6A: A2:11:91:C2:D2:A3:48:07:6C:07:54:A8:B8:42:0E:B4: E4:AE:42:B4:B5:36:24:46:4F:83:61:64:13:69:03:DF: 41:88:0B:CB:39:57:8C:6B:9F:52:7E:26:F9:24:5E:E7: BC:FB:FD:93:13:AF:24:3A:8F:DB:E3:DC:C9:F9:1F:67: A8:BD:0B:95:84:9D:EB:FC:02:95:A0:49:2C:05:D4:B0: 35:EA:A6:80:30:20:FF:B1:85:C8:4B:74:D9:DC:BB:50
B.3.1. authorityInfoAccess
B.3.2. authorityKeyIdentifier
- 一个显式键标识符,在 keyIdentifier 字段中设置
- 在 authorityCertIssuer 字段和序列号中设置的签发者,在 authorityCertSerialNumber 字段中设置,标识证书
B.3.3. basicConstraints
OID
2.5.29.19
严重程度
PKIX 第 1 部分要求该扩展标记为关键。无论其关键性如何,都将评估此扩展。
B.3.4. certificatePoliciesExt
OID
2.5.29.32
严重程度
这个扩展可能是关键或非关键。
B.3.5. CRLDistributionPoints
OID
2.5.29.31
严重程度
PKIX 建议将这个扩展标记为非关键,且所有证书都支持它。
B.3.6. extKeyUsage
OID
2.5.29.37
严重程度
如果此扩展标记为关键,则必须将证书用于指定的用途之一。如果它没有标记为关键,它将被当作公告字段来识别密钥,但不会限制证书对指定用途的使用。
使用 | OID |
---|---|
服务器身份验证 | 1.3.6.1.5.5.7.3.1 |
客户端身份验证 | 1.3.6.1.5.5.7.3.2 |
代码签名 | 1.3.6.1.5.5.7.3.3 |
电子邮件 | 1.3.6.1.5.5.7.3.4 |
时间戳 | 1.3.6.1.5.5.7.3.8 |
OCSP 签名 |
1.3.6.1.5.5.7.3.9[a]
|
[a]
OCSP Signing 在 PKIX 第 1 部分定义,但在 RFC 2560 中,X.509 互联网公共密钥基础架构在线证书状态协议 - OCSP。
|
使用 | OID |
---|---|
证书信任列表签名 | 1.3.6.1.4.1.311.10.3.1 |
Microsoft Server Gated Crypto(SGC) | 1.3.6.1.4.1.311.10.3.3 |
Microsoft 加密的文件系统 | 1.3.6.1.4.1.311.10.3.4 |
Netscape SGC | 2.16.840.1.113730.4.1 |
B.3.7. issuerAltName 扩展
OID
2.5.29.18
严重程度
PKIX 第 1 部分建议此扩展标记为非关键。
B.3.8. keyUsage
- 用于 SSL 客户端证书、S/MIME 签名证书和对象签名证书的 数字签名 (0)。
- 用于一些 S/MIME 签名证书和对象签名证书的 非 报(1)。WARNING此位的使用是简介的。在为任何证书设置前,请仔细考虑其使用的合法后果。
- 用于 SSL 服务器证书和 S/MIME 加密证书 的密钥 增加(2)。
- 当主体的公钥加密用户数据而非密钥材料时,数据增加(3)
- 当主题的公钥用于 密钥协议 时,密钥总会(4)。
- 所有 CA 签名证书的 keyCertSign (5)
- 用于签署 CRL 的 CA 签名证书的 cRLSign (6)。
- 如果公钥仅用于一致性数据,则强制(7)。如果设置了这个位,则还应设置 keyAgreement。
- 如果公钥仅用于减弱数据,则 decipherOnly (8)。如果设置了这个位,则还应设置 keyAgreement。
OID
2.5.29.15
严重程度
这个扩展可能是关键或非关键。PKIX 第 1 部分建议在使用时,应将其标记为关键。
证书的目的 | 所需密钥使用 Bit |
---|---|
CA Signing |
|
SSL 客户端 | digitalSignature |
SSL 服务器 | keyEncipherment |
S/MIME 签名 | digitalSignature |
S/MIME 加密 | keyEncipherment |
证书签名 | keyCertSign |
对象签名 | digitalSignature |
B.3.9. nameConstraints
OID
2.5.29.30
严重程度
PKIX 第 1 部分要求该扩展标记为关键。
B.3.10. OCSPNocheck
OID
1.3.6.1.5.5.7.48.4
严重程度
这个扩展应该非关键。
B.3.11. policyConstraints
OID
2.5.29.36
严重程度
这个扩展可能是关键或非关键。
B.3.12. policyMappings
OID
2.5.29.33
严重程度
这个扩展必须是非关键。
B.3.13. privateKeyUsagePeriod
OID
2.5.29.16
B.3.14. subjectAltName
OID
2.5.29.17
严重程度
如果证书的 subject 字段为空,这个扩展必须标记为关键。
B.3.15. subjectDirectoryAttributes
OID
2.5.29.9
严重程度
PKIX 第 1 部分要求此扩展标记为非关键。
B.3.16. subjectKeyIdentifier
OID
2.5.29.14
严重程度
这个扩展总是非关键。
B.4. CRL 扩展
B.4.1. 关于 CRL 扩展
B.4.1.1. CRL 扩展结构
- 扩展的对象标识符(OID)。此标识符唯一标识扩展。它还决定 value 字段中的值的 ASN.1 类型以及值的解释方式。当扩展出现在 CRL 中时,OID 显示为扩展名 ID 字段(extnID),对应的 ASN.1 编码结构显示为八进制字符串(extnValue)的值;示例显示在 例 B.4 “Pretty-Print Certificate Extensions 示例” 中。
- 标志或布尔值字段名为 critical。分配给此字段的 true 或 false 值指示扩展是否对 CRL 至关重要。
- 如果扩展至关重要,并且 CRL 发送到不基于扩展 ID 理解扩展的应用程序,则应用程序必须拒绝 CRL。
- 如果扩展不重要,并且 CRL 发送到不理解扩展 ID 的扩展的应用程序,则应用程序可以忽略扩展并接受 CRL。
- 包含扩展名值的 DER 编码的八进制字符串。
B.4.1.2. CRL 和 CRL Entry Extensions 示例
Certificate Revocation List: Data: Version: v2 Signature Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5 Issuer: CN=Certificate Authority,O=Example Domain This Update: Wednesday, July 29, 2009 8:59:48 AM GMT-08:00 Next Update: Friday, July 31, 2009 8:59:48 AM GMT-08:00 Revoked Certificates: 1-3 of 3 Serial Number: 0x11 Revocation Date: Thursday, July 23, 2009 10:07:15 AM GMT-08:00 Extensions: Identifier: Revocation Reason - 2.5.29.21 Critical: no Reason: Privilege_Withdrawn Serial Number: 0x1A Revocation Date: Wednesday, July 29, 2009 8:50:11 AM GMT-08:00 Extensions: Identifier: Revocation Reason - 2.5.29.21 Critical: no Reason: Certificate_Hold Identifier: Invalidity Date - 2.5.29.24 Critical: no Invalidity Date: Sun Jul 26 23:00:00 GMT-08:00 2009 Serial Number: 0x19 Revocation Date: Wednesday, July 29, 2009 8:50:49 AM GMT-08:00 Extensions: Identifier: Revocation Reason - 2.5.29.21 Critical: no Reason: Key_Compromise Identifier: Invalidity Date - 2.5.29.24 Critical: no Invalidity Date: Fri Jul 24 23:00:00 GMT-08:00 2009 Extensions: Identifier: Authority Info Access: - 1.3.6.1.5.5.7.1.1 Critical: no Access Description: Method #0: ocsp Location #0: URIName: http://example.com:9180/ca/ocsp Identifier: Issuer Alternative Name - 2.5.29.18 Critical: no Issuer Names: DNSName: example.com Identifier: Authority Key Identifier - 2.5.29.35 Critical: no Key Identifier: 50:52:0C:AA:22:AC:8A:71:E3:91:0C:C5:77:21:46:9C: 0F:F8:30:60 Identifier: Freshest CRL - 2.5.29.46 Critical: no Number of Points: 1 Point 0 Distribution Point: [URIName: http://server.example.com:8443/ca/ee/ca/getCRL?op=getDeltaCRL&crlIssuingPoint=MasterCRL] Identifier: CRL Number - 2.5.29.20 Critical: no Number: 39 Identifier: Issuing Distribution Point - 2.5.29.28 Critical: yes Distribution Point: Full Name: URIName: http://example.com:9180/ca/ee/ca/getCRL?op=getCRL&crlIssuingPoint=MasterCRL Only Contains User Certificates: no Only Contains CA Certificates: no Indirect CRL: no Signature: Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5 Signature: 47:D2:CD:C9:E5:F5:9D:56:0A:97:31:F5:D5:F2:51:EB: 1F:CF:FA:9E:63:D4:80:13:85:E5:D8:27:F0:69:67:B5: 89:4F:59:5E:69:E4:39:93:61:F2:E3:83:51:0B:68:26: CD:99:C4:A2:6C:2B:06:43:35:36:38:07:34:E4:93:80: 99:2F:79:FB:76:E8:3D:4C:15:5A:79:4E:E5:3F:7E:FC: D8:78:0D:1D:59:A0:4C:14:42:B7:22:92:89:38:3A:4C: 4A:3A:06:DE:13:74:0E:E9:63:74:D0:2F:46:A1:03:37: 92:F0:93:D9:AA:F8:13:C5:06:25:02:B0:FD:3B:41:E7: 62:6F:67:A3:9F:F5:FA:03:41:DA:8D:FD:EA:2F:E3:2B: 3E:F8:E9:CC:3B:9F:E4:ED:73:F2:9E:B9:54:14:C1:34: 68:A7:33:8F:AF:38:85:82:40:A2:06:97:3C:B4:88:43: 7B:AF:5D:87:C4:47:63:4A:11:65:E3:75:55:4D:98:97: C2:2E:62:08:A4:04:35:5A:FE:0A:5A:6E:F1:DE:8E:15: 27:1E:0F:87:33:14:16:2E:57:F7:DC:77:BE:D2:75:AB: A9:7C:42:1F:84:6D:40:EC:E7:ED:84:F8:14:16:28:33: FD:11:CD:C5:FC:49:B7:7B:39:57:B3:E6:36:E5:CD:B6
ertificate Revocation List:
Data:
Version: v2
Signature Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5
Issuer: CN=Certificate Authority,O=SjcRedhat Domain
This Update: Wednesday, July 29, 2009 9:02:28 AM GMT-08:00
Next Update: Thursday, July 30, 2009 9:02:28 AM GMT-08:00
Revoked Certificates:
Serial Number: 0x1A
Revocation Date: Wednesday, July 29, 2009 9:00:48 AM GMT-08:00
Extensions:
Identifier: Revocation Reason - 2.5.29.21
Critical: no
Reason: Remove_from_CRL
Serial Number: 0x17
Revocation Date: Wednesday, July 29, 2009 9:02:16 AM GMT-08:00
Extensions:
Identifier: Revocation Reason - 2.5.29.21
Critical: no
Reason: Certificate_Hold
Identifier: Invalidity Date - 2.5.29.24
Critical: no
Invalidity Date: Mon Jul 27 23:00:00 GMT-08:00 2009
Extensions:
Identifier: Authority Info Access: - 1.3.6.1.5.5.7.1.1
Critical: no
Access Description:
Method #0: ocsp
Location #0: URIName: http://server.example.com:8443/ca/ocsp
Identifier: Delta CRL Indicator - 2.5.29.27
Critical: yes
Base CRL Number: 39
Identifier: Issuer Alternative Name - 2.5.29.18
Critical: no
Issuer Names:
DNSName: a-f8.sjc.redhat.com
Identifier: Authority Key Identifier - 2.5.29.35
Critical: no
Key Identifier:
50:52:0C:AA:22:AC:8A:71:E3:91:0C:C5:77:21:46:9C:
0F:F8:30:60
Identifier: CRL Number - 2.5.29.20
Critical: no
Number: 41
Identifier: Issuing Distribution Point - 2.5.29.28
Critical: yes
Distribution Point:
Full Name:
URIName: http://server.example.com:8443/ca/ee/ca/getCRL?op=getCRL&crlIssuingPoint=MasterCRL
Only Contains User Certificates: no
Only Contains CA Certificates: no
Indirect CRL: no
Signature:
Algorithm: SHA1withRSA - 1.2.840.113549.1.1.5
Signature:
68:28:DA:90:D5:39:CB:6D:BE:42:04:77:C9:E4:09:60:
C1:97:A6:99:AB:A0:5B:A2:F3:8B:5E:4E:D6:05:70:B0:
87:1F:D7:0E:4B:C6:B2:DE:8B:92:D8:7C:3B:36:1C:79:
96:2A:64:E6:7A:25:1D:E7:40:62:48:7A:24:C9:9D:11:
A6:7F:BB:6B:03:A0:9C:1D:BC:1C:EE:9A:4B:A6:48:2C:
3B:5E:2B:B1:70:3C:C3:42:96:28:26:AB:82:18:F2:E9:
F2:55:48:A8:7E:7F:FE:D4:3D:0B:EA:A2:2F:4E:E6:C3:
C3:C1:6A:E5:C6:85:5B:42:B1:70:2A:C6:E1:D9:0C:AF:
DA:01:22:FF:80:6E:2E:A7:E5:34:DC:AF:E6:C2:B5:B3:
1B:FC:28:36:8A:91:4A:22:E7:03:A5:ED:4E:62:0C:D9:
7F:81:BB:80:99:B8:61:2A:02:C6:9C:41:2E:01:82:21:
80:82:69:52:BD:B2:AA:DB:0F:80:0A:7E:2A:F3:15:32:
69:D2:40:0D:39:59:93:75:A2:ED:24:70:FB:EE:19:C0:
BE:A2:14:36:D0:AC:E8:E2:EE:23:83:DD:BC:DF:38:1A:
9E:37:AF:E3:50:D9:47:9D:22:7C:36:35:BF:13:2C:16:
A2:79:CF:05:41:88:8E:B6:A2:4E:B3:48:6D:69:C6:38
B.4.2. 标准 X.509 v3 CRL 扩展参考
B.4.2.1. CRL 的扩展
B.4.2.1.1. authorityInfoAccess
参数 | 描述 |
---|---|
enable | 指定规则是启用还是禁用。默认值为禁用这个扩展。 |
critical | 设定扩展是否标记为关键; 默认为非关键。 |
numberOfAccessDescriptions |
表示访问描述的数量,从 0 到任意正整数,默认为 0。
当将此参数设置为 0 以外的整数时,设置数字,然后单击 OK 以关闭该窗口。重新打开该规则的编辑窗口,以及要设置点的字段存在。
|
accessMethodn | 这个参数只接受的值是 caIssuers。当可用信息列出了可用于验证 CRL 中的签名的证书时,使用 caIssuers 方法。当将 AIA 扩展包含在 CRL 中时,不应使用其他方法。 |
accessLocationTypen | 指定 n 访问描述的访问位置类型。选项可以是 DirectoryName 或 URI。 |
accessLocationn |
如果将 accessLocationType 设为 DirectoryName,则该值必须是 X.500 名称的形式的字符串,类似于证书中的主题名称。例如, CN=CACentral,OU=Research Dept,O=Example Corporation,C=US。
如果将 accessLocationType 设为 URI,则名称必须是 URI; URI 必须是绝对路径名,必须指定主机。例如 :http://testCA.example.com/get/crls/here/
|
B.4.2.1.2. authorityKeyIdentifier
参数 | 描述 |
---|---|
enable | 指定规则是启用还是禁用。默认值为禁用这个扩展。 |
critical | 设定扩展是否标记为关键; 默认为非关键。 |
B.4.2.1.3. CRLNumber
OID
2.5.29.20
严重程度
这个扩展不一定是关键。
参数
参数 | 描述 |
---|---|
enable | 指定规则是否启用,这是默认设置。 |
critical | 设定扩展是否标记为关键; 默认为非关键。 |
B.4.2.1.4. deltaCRLIndicator
OID
2.5.29.27
严重程度
PKIX 要求此扩展在存在时具有关键性。
参数
参数 | 描述 |
---|---|
enable | 设定是否启用该规则。默认情况下禁用它。 |
critical | 设定扩展是否关键(uncritical)还是非关键。默认情况下,这是关键。 |
B.4.2.1.5. FreshestCRL
OID
2.5.29.46
严重程度
PKIX 要求此扩展必须不是关键。
参数
参数 | 描述 |
---|---|
enable | 设定是否启用扩展规则。默认情况下禁用它。 |
critical | 将扩展名标记为关键或非关键。默认为非关键。 |
numPoints | 表示 delta CRL 发出点的数量,从 0 到任何正整数,默认值为 0。当将其设置为 0 以外的整数时,设置数字,然后单击 以关闭该窗口。重新打开规则的编辑窗口,以及设置这些点的字段存在。 |
pointTypen | 指定 n 点的发布点的类型。对于 numPoint 中指定的每个数字,会有一个相等的 pointType 参数。选项可以是 DirectoryName 或 URIName。 |
pointNamen |
如果将 pointType 设置为 directoryName,则值必须是以 X.500 名称的形式的字符串,与证书中的主题名称类似。例如,CN=CACentral,OU=Research Dept,O=Example Corporation,C=US。
如果将 pointType 设置为 URIName,则名称必须是 URI; URI 必须是绝对路径名,必须指定主机。例如 :http://testCA.example.com/get/crls/here/
|
B.4.2.1.6. issuerAltName
OID
2.5.29.18
参数
参数 | 描述 |
---|---|
enable | 设定扩展规则是否启用;默认情况下,这是禁用的。 |
critical | 设定扩展是否至关重要。默认情况下,这不是非常关键。 |
numNames | 设置扩展名中允许的备用名称或身份总数。每个名称都有一组配置参数,nameType 和 name,它必须具有适当的值,或者规则返回错误。通过更改此字段中指定的值来更改身份总数;扩展名中可以包括的身份总数没有限制。各组配置参数可通过从此字段值派生的整数区分。例如,如果 numNames 参数设置为 2,则派生的整数为 0 和 1。 |
nameTypen |
指定 General-name 类型,这可以是以下任意一种:
|
namen |
指定 general-name 值;允许的值取决于 nameType 字段中指定的名称类型。
|
B.4.2.1.7. issuingDistributionPoint
OID
2.5.29.28
严重程度
PKIX 要求此扩展在存在时具有关键性。
参数
参数 | 描述 |
---|---|
enable | 设定是否启用扩展;默认是禁用的。 |
critical | 将扩展名标记为 critical、default 或 noncritical。 |
pointType |
指定从以下内容发出的发行点的类型:
|
pointName |
给出发布发布点的名称。发行版点的名称取决于为 pointType 参数指定的值。
注意
CRL 可以存储在与 CRL 发出点对应的目录条目中,该条目可能与 CA 的目录条目不同。
|
onlySomeReasons |
指定与发布点关联的代码的原因。
Permissible 值是原因代码的组合(未指定的、keyCompromise、cACompromise、ffiliationChanged、it eded、cessationOf Oper、certificateHold 和 removeFromCRL)。如果发行版点包含具有所有原因代码(默认)的已撤销证书,则将该字段留空。
|
onlyContainsCACerts | 指定分发点仅在设置时包含用户证书。默认情况下不设置,这意味着分发点包含所有类型的证书。 |
indirectCRL | 指定分发点包含间接 CRL;默认情况下,不会选择此设置。 |
B.4.2.2. CRL Entry Extensions
B.4.2.2.1. certificateIssuer
OID
2.5.29.29
B.4.2.2.2. invalidityDate
OID
2.5.29.24
参数
参数 | 描述 |
---|---|
enable | 设定扩展规则是启用还是禁用。默认情况下启用它。 |
critical | 将扩展标记为关键或非关键;默认情况下,这不是关键。 |
B.4.2.2.3. CRLReason
OID
2.5.29.21
参数
参数 | 描述 |
---|---|
enable | 设定扩展规则是启用还是禁用。默认情况下启用它。 |
critical | 将扩展名标记为关键或非关键。默认情况下,这不关键。 |
B.4.3. Netscape-Defined Certificate Extensions 参考
B.4.3.1. netscape-cert-type
- 位 0:SSL 客户端证书
- 位 1:SSL 服务器证书
- 位 2:S/MIME 证书
- 第 3 位:对象签名证书
- 位 4:保留
- 位 5:SSL CA 证书
- 位 6:S/MIME CA 证书
- 位 7:对象签名 CA 证书
OID
2.16.840.1.113730.1.1
B.4.3.2. netscape-comment
OID
2.16.840.1.113730.13
附录 C. 发布模块参考
C.1. Communityly 插件模块
C.1.1. FileBasedPublisher
参数 | 描述 |
---|---|
发布程序 ID | 指定 publisher 的名称,它是一个没有空格的字母数字字符串。例如,PublishCertsToFile。 |
目录 | 指定证书管理器创建文件的目录的完整路径 ; 路径可以是绝对路径,或者可以相对于证书证书系统及证书实例目录。例如: /export/CS/certificates 。 |
C.1.2. LdapCaCertPublisher
参数 | 描述 |
---|---|
caCertAttr | 指定要发布 CA 证书的 LDAP 目录属性。这必须是 caCertificate;binary。 |
caObjectClass | 指定 目录中 CA 条目的对象类。这必须是 pkiCA 或 CertificationAuthority。 |
C.1.3. LdapUserCertPublisher
参数 | 描述 |
---|---|
certAttr | 指定证书管理器应发布证书的映射条目的目录属性。这必须是 userCertificate;binary。 |
C.1.4. LdapCrlPublisher
参数 | 描述 |
---|---|
crlAttr | 指定证书管理器应发布 CRL 的映射条目的目录属性。这必须是 certificateRevocationList;binary。 |
C.1.5. LdapDeltaCrlPublisher
参数 | 描述 |
---|---|
crlAttr | 指定证书管理器应发布 delta CRL 的映射条目的目录属性。这必须是 deltaRevocationList;binary。 |
C.1.6. LdapCertificatePairPublisher
参数 | 描述 |
---|---|
crossCertPairAttr | 指定要发布 CA 证书的 LDAP 目录属性。这必须 跨CertificatePair;binary。 |
caObjectClass | 指定 目录中 CA 条目的对象类。这必须是 pkiCA 或 CertificationAuthority。 |
C.1.7. OCSPPublisher
参数 | 描述 |
---|---|
主机 | 指定在线证书状态管理器的完全限定主机名。 |
port | 指定在线证书状态管理器正在侦听证书管理器的端口号。这是在线证书状态管理器的 SSL 端口号。 |
path | 指定发布 CRL 的路径。这必须是默认路径 /ocsp/agent/ocsp/addCRL 。 |
enableClientAuth | 设定是否使用客户端(基于证书的)验证来访问 OCSP 服务。 |
nickname | 在 OCSP 服务数据库中指定证书的 nickname 用于客户端身份验证。只有在 enableClientAuth 选项被设置为 true 时才使用。 |
C.2. 映射器插件模块
C.2.1. LdapCaSimpleMap
- CRLs 的 LdapCrlMap (请参阅 第 C.2.1.2 节 “LdapCrlMap”)
- LdapCaCertMap for CA 证书(请参阅 第 C.2.1.1 节 “LdapCaCertMap”)。
参数 | 描述 |
---|---|
createCAEntry |
创建 CA 的条目(如果选择)(默认)。
如果选中,证书管理器首先会尝试为 目录中的 CA 创建条目。如果在创建条目时证书管理器成功,它将尝试将 CA 的证书发布到该条目。如果未选中此项,则条目必须已存在,才能发布此条目供其发布。
|
dnPattern |
指定证书管理器应使用的 DN 模式来构造用于在发布目录中搜索 CA 的条目。dnPattern 的值可以是用逗号分开的 AVAs 列表。AVA 可以是一个变量,如 cn=$subj.cn,证书管理器可以从证书主题名称或恒定名称(如 o=Example Corporation )生成。
如果 CA 证书在主题名称中没有 cn 组件,请调整 CA 证书映射 DN 模式,以反映 CA 证书正在发布的目录中的 DN。例如,如果 CA 证书 subject DN 是 o=Example Corporation,且该目录中的 CA 条目是 cn=Certificate Authority, o=Example Corporation,则特征是 cn=Certificate Authority, o=$subj.o。
在上面的示例中,$req 从证书请求中获取属性,$subj 从证书主题名称中获取属性,而 $ext 则从证书扩展中获取属性。
|
C.2.1.1. LdapCaCertMap
uid=$subj.cn,ou=people,o=$subj.o
C.2.1.2. LdapCrlMap
uid=$subj.cn,ou=people,o=$subj.o
C.2.2. LdapDNExactMap
C.2.3. LdapSimpleMap
- 示例 1: uid=CertMgr, o=Example Corporation
- 示例 2: cn=$subj.cn,ou=$subj.ou,o=$subj.o,c=US
- 示例 3:uid=$req.HTTP_PARAMS.uid, e=$ext.SubjectAlternativeName.RFC822Name,ou=$subj.ou
C.2.4. LdapSubjAttrMap
参数 | 描述 |
---|---|
certSubjNameAttr | 指定包含证书主题名称的 LDAP 属性的名称作为其值。默认为 certSubjectName,但可以配置为任何 LDAP 属性。 |
searchBase | 指定用于启动属性搜索的基础 DN。permissible 值是 LDAP 条目的有效 DN,如 o=example.com、c=US。 |
C.2.5. LdapDNCompsMap
- CA 的条目位于 目录中,以发布 CA 证书和 CRL。
- 目录中用于发布终止证书的端点条目。
- UID 代表目录中用户的用户 ID。
- cn 代表 目录中用户的通用名称。
- ou 代表目录中的一个机构单元。
- O 代表目录中的组织。
- l 代表本地性(city)。
- st 代表状态。
- c 表示国家/地区。
cn=Jane Doe, ou=Sales, o=Example Corporation, l=Mountain View, st=California, c=US
cn=Jane Doe, ou=Sales, o=Example Corporation, c=US
- 主题名称不需要具有 dnComps 参数中指定的所有组件。服务器会忽略任何不属于主体名称的组件,如 l 和 st。
- 未指定的组件不会用于构建 DN。在示例中,如果 ou 组件没有包括,服务器使用此 DN 作为搜索目录的基础:
cn=Jane Doe, o=Example Corporation, c=US
C.2.5.1. LdapDNCompsMap 的配置参数
- 如果格式 DN 为 null,服务器会使用子树的 baseDN 值。如果格式的 DN 和基础 DN 为 null,服务器会记录错误。
- 如果过滤器是 null,服务器会使用 baseDN 值来搜索。如果过滤器和基础 DN 为 null,服务器会记录错误。
参数 | 描述 |
---|---|
baseDN | 指定开始搜索发布目录中条目的 DN。如果 dnComps 字段为空,服务器使用基础 DN 值在 目录中开始其搜索。 |
dnComps |
指定发布目录中的证书管理器应开始搜索与 CA 或终端用户信息匹配的 LDAP 条目。
例如,如果 dnComps 使用 DN 的 o 和 c 属性,服务器会从 目录中的 o=机构、c= country 条目开始搜索,其中机构和国家/地区的值替换为证书中的 DN 的值。
如果 dnComps 字段为空,服务器会检查 baseDN 字段,搜索由该 DN 指定的条目与 filterComps 参数值指定的过滤器指定的目录树。
允许的数值是有效的 DN 组件或以逗号分开的属性。
|
filterComps |
指定证书管理器应使用的组件来过滤搜索结果中的条目。服务器使用 filterComps 值组成子树的 LDAP 搜索过滤器。服务器通过从证书主题名称收集这些属性的值来构建过滤器;它使用过滤器搜索和匹配 LDAP 目录中的条目。
如果服务器在 目录中找到多个与从证书收集的信息匹配的条目,则搜索将成功,并且服务器可以选择性地执行验证。例如,如果 filterComps 设为使用电子邮件和用户 ID 属性(filterComps=e,uid),服务器会在目录中搜索与从证书收集的信息匹配的条目。
允许的数值是用逗号分隔的证书 DN 中的有效目录属性。过滤器的属性名称需要是来自证书的属性名称,而不是从 LDAP 目录中的一个属性名称。例如,大多数证书都有一个用于用户电子邮件地址的 e 属性;LDAP 调用该属性 mail。
|
C.3. 规则实例
C.3.1. LdapCaCertRule
参数 | 值 | 描述 |
---|---|---|
type | cacert | 指定将要发布的证书类型。 |
predicate | 为发布器指定 predicate。 | |
enable | 是 | 启用规则。 |
mapper | LdapCaCertMap | 指定规则中使用的映射程序。有关映射程序的详情,请查看 第 C.2.1.1 节 “LdapCaCertMap”。 |
publisher | LdapCaCertPublisher | 指定规则中使用的 publisher。如需有关发布程序的详细信息,请参阅 第 C.1.2 节 “LdapCaCertPublisher”。 |
C.3.2. LdapXCertRule
参数 | 值 | 描述 |
---|---|---|
type | xcert | 指定将要发布的证书类型。 |
predicate | 为发布器指定 predicate。 | |
enable | 是 | 启用规则。 |
mapper | LdapCaCertMap | 指定规则中使用的映射程序。有关映射程序的详情,请查看 第 C.2.1.1 节 “LdapCaCertMap”。 |
publisher | LdapCrossCertPairPublisher | 指定规则中使用的 publisher。如需了解有关此发布者的详细信息,请参阅 第 C.1.6 节 “LdapCertificatePairPublisher”。 |
C.3.3. LdapUserCertRule
参数 | 值 | 描述 |
---|---|---|
type | 证书 | 指定将要发布的证书类型。 |
predicate | 为发布器指定 predicate。 | |
enable | 是 | 启用规则。 |
mapper | LdapUserCertMap | 指定规则中使用的映射程序。有关映射程序的详情,请查看 第 C.2.3 节 “LdapSimpleMap”。 |
publisher | LdapUserCertPublisher | 指定规则中使用的 publisher。如需有关发布程序的详细信息,请参阅 第 C.1.3 节 “LdapUserCertPublisher”。 |
C.3.4. LdapCRLRule
参数 | 值 | 描述 |
---|---|---|
type | crl | 指定将要发布的证书类型。 |
predicate | 为发布器指定 predicate。 | |
enable | 是 | 启用规则。 |
mapper | LdapCrlMap | 指定规则中使用的映射程序。有关映射程序的详情,请查看 第 C.2.1.2 节 “LdapCrlMap”。 |
publisher | LdapCrlPublisher | 指定规则中使用的 publisher。如需有关发布程序的详细信息,请参阅 第 C.1.4 节 “LdapCrlPublisher”。 |
附录 D. ACL 参考
D.1. 关于 ACL 配置文件
/var/lib/pki/instance_name/conf/子系统/acl.ldif
文件中。
resourceACLS
属性,它们识别受保护子系统的区域,然后是正在设置的所有特定访问控制的列表。
resourceACLS: class_name:all rights: allow|deny (rights) type=target description
例 D.1. 列出证书配置集的默认 ACL
resourceACLS: certServer.ca.profiles:list:allow (list) group="Certificate Manager Agents":Certificate Manager agents may list profiles
acl.ldif
文件,自己的 ACL。
allow|deny (rights) user|group
资源ACLS 属性值
的每个区域都在 表 D.1 “ACL 属性值的部分” 中定义。
值 | 描述 |
---|---|
class_name | 将 ACI 应用到的插件类。 |
全部操作 | ACI 定义中涵盖的每个操作列表。单一 ACI 和多个 ACI 在单一 资源ACLS 属性中可以有多个操作。 |
allow|deny | 目标用户或组是否允许操作。 |
(operations) | 允许或拒绝的操作。 |
type=target | 用于标识此适用于谁的目标。这通常是用户(如 user="name")或组(group="group")。如果有多个条件,则可以使用双 pipe(||)运算符(逻辑"或")和双倍(&&)运算符(逻辑"和")组成条件。例如,group="group1" || "group2 "。 |
description | 有关 ACL 用途的描述。 |
D.2. 常见 ACL
acl.ldif
文件中出现相同的 ACL。这些不是 共享 ACL,这意味着所有子系统实例都会保留配置文件或设置。与所有其他实例配置一样,这些 ACL 独立于其他子系统实例在实例特定 acl.ldif
文件中进行维护。
D.2.1. certServer.acl.configuration
allow (read) group="Administrators" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents" || group="Auditors";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看 ACL 资源并列出 ACL 资源、ACL 列出 evaluator 和 ACL 评估器类型。 | Allow |
| |||
modify | 添加、删除和更新 ACL 评估器。 | Allow | 管理员 |
D.2.2. certServer.admin.certificate
allow (import) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
import | 导入 CA 管理员证书,并使用序列号检索证书。 | Allow | 任何人 |
D.2.3. certServer.auth.configuration
allow (read) group="Administrators" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents" || group="Auditors";allow (modify) group="Administrators
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看身份验证插件、身份验证类型、配置的身份验证管理器插件和身份验证实例。列出身份验证管理器插件和验证管理器实例。 | Allow |
| |||
modify | 添加或删除身份验证插件和身份验证实例。修改身份验证实例。 | Allow | 管理员 |
D.2.4. certServer.clone.configuration
allow (modify,read) group="Enterprise CA Administrators" || group="Enterprise KRA Administrators" || group="Enterprise OCSP Administrators" || group="Enterprise TKS Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 查看原始实例配置。 | Allow | 企业管理员 |
modify | 修改原始实例配置。 | Allow | 企业管理员 |
D.2.5. certServer.general.configuration
allow (read) group="Administrators" || group="Auditors" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看操作环境、LDAP 配置、SMTP 配置、服务器统计数据、加密、令牌名称、证书名称、证书别名、服务器、CA 证书以及所有管理证书。 | Allow |
| |||
modify | 修改 LDAP 数据库、SMTP 和加密的设置。签发导入证书、安装证书、信任和不信任 CA 证书、导入跨对证书以及删除证书。执行服务器重启和停止操作。登录所有令牌并检查令牌状态。根据需要运行自我证明。获取证书信息。处理证书主题名称。验证证书主题名称、证书密钥长度和证书扩展。 | Allow | 管理员 |
D.2.6. certServer.log.configuration
allow (read) group="Administrators" || group="Auditors" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看日志插件信息、插件配置和日志实例配置。列出日志插件和日志实例(不包括 NTEventLog)。 | Allow |
| |||
modify | 添加和删除日志插件和日志实例。修改日志实例,包括日志滚动参数和日志级别。 | Allow | 管理员 |
D.2.7. certServer.log.configuration.fileName
allow (read) group="Administrators" || group="Auditors" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents";deny (modify) user=anybody
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看日志实例的 fileName 参数的值。 | Allow |
| |||
modify | 更改日志实例的 fileName 参数的值。 | deny | 任何人 |
D.2.8. certServer.log.content.system
allow (read) group="Administrators" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents" || group="Auditors"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看日志内容。列出所有日志。 | Allow |
|
D.2.9. certServer.log.content.transactions
allow (read) group="Administrators" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents" || group="Auditors"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看日志内容。列出所有日志。 | Allow |
|
D.2.10. certServer.log.content.signedAudit
allow (read) group="Auditors"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |
---|---|---|---|---|
读取 | 查看日志内容。列出日志。 | Allow |
|
D.2.11. certServer.registry.configuration
allow (read) group="Administrators" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents" || group="Auditors";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看管理 registry、支持的策略约束、配置集插件配置和配置集插件列表。 | Allow |
| |||
modify | 注册单个配置集实施插件。 | Allow | 管理员 |
D.3. 特定于证书的 ACL
D.3.1. certServer.admin.ocsp
allow (modify,read) group="Enterprise OCSP Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
modify | 修改 OCSP 配置,OCSP 存储配置以及默认的 OCSP 存储。 | Allow | Enterprise OCSP 管理员 |
读取 | 阅读 OCSP 配置。 | Allow | Enterprise OCSP 管理员 |
D.3.2. certServer.ca.certificate
allow (import,unrevoke,revoke,read) group="Certificate Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
import | 按序列号检索证书。 | Allow | 证书管理器代理 |
unrevoke | 更改证书的状态。 | Allow | 证书管理器代理 |
revoke | 更改要撤销的证书的状态。 | Allow | 证书管理器代理 |
读取 | 根据请求 ID 检索证书,并根据请求 ID 或序列号显示证书详情。 | Allow | 证书管理器代理 |
D.3.3. certServer.ca.certificates
allow (revoke,list) group="Certificate Manager Agents"|| group="Registration Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 | ||
---|---|---|---|---|---|
revoke | 撤销证书,或批准证书撤销请求。从 TPS 撤销证书。提示用户输入与撤销请求相关的附加数据。 | Allow |
| ||
list | 根据搜索列出证书。根据一系列序列号,检索有关证书范围的详细信息。 | Allow |
|
D.3.4. certServer.ca.configuration
allow (read) group="Administrators" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents" || group="Auditors";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看 CRL 插件信息、常规 CA 配置、CA 连接器配置、CRL 配置集配置、请求通知配置、重新调用通知配置、队列通知配置和 CRL 扩展配置。列出 CRL 扩展配置和 CRL 发出点配置。 | Allow |
| |||
modify | 添加和删除 CRL 发出点。修改常规 CA 设置、CA 连接器配置、CRL 发出点配置、CRL 配置、请求通知配置、重新调用通知配置、队列通知配置和 CRL 扩展配置。 | Allow | 管理员 |
D.3.5. certServer.ca.connector
allow (submit) group="Trusted Managers"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
submit | 提交来自远程可信管理者的请求。 | Allow | 可信管理器 |
D.3.6. certServer.ca.connectorInfo
allow (read) group="Enterprise KRA Administrators";allow (modify) group="Enterprise KRA Administrators" || group="Subsystem Group"
操作 | 描述 | allow/Deny Access | 目标用户/组 | ||
---|---|---|---|---|---|
读取 | 读取连接器插件设置。 | Allow | 企业 KRA 管理员 | ||
modify | 修改连接器插件设置。 | Allow |
|
D.3.7. certServer.ca.crl
allow (read,update) group="Certificate Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 显示 CRL 并获取 CA CRL 处理的详细信息。 | Allow | 证书管理器代理 |
update | 更新 CRL。 | Allow | 证书管理器代理 |
D.3.8. certServer.ca.directory
allow (update) group="Certificate Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
update | 将 CA 证书、CRL 和用户证书发布到 LDAP 目录。 | Allow | 证书管理器代理 |
D.3.9. certServer.ca.group
allow (modify,read) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
modify | 为实例创建、编辑或删除用户和组条目。在属性中添加或修改用户证书 | Allow | 管理员 |
读取 | 查看实例的用户和组条目。 | Allow | 管理员 |
D.3.10. certServer.ca.ocsp
allow (read) group="Certificate Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 检索 OCSP 用量统计。 | Allow | 证书管理器代理 |
D.3.11. certServer.ca.profile
allow (read,approve) group="Certificate Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 查看证书配置集的详细信息。 | Allow | 证书管理器代理 |
批准 | 批准并启用证书配置集。 | Allow | 证书管理器代理 |
D.3.12. certServer.ca.profiles
allow (list) group="Certificate Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
list | 列出证书配置集。 | Allow | 证书管理器代理 |
D.3.13. certServer.ca.registerUser
allow (modify,read) group="Enterprise CA Administrators" || group="Enterprise KRA Administrators" || group="Enterprise OCSP Administrators" || group="Enterprise TKS Administrators" || group="Enterprise TPS Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
modify | 注册新代理。 | Allow | 企业管理员 |
读取 | 读取现有代理信息。 | Allow | 企业管理员 |
D.3.14. certServer.ca.request.enrollment
allow (submit) user="anybody";allow (read,execute,assign,unassign) group="Certificate Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 查看注册请求。 | Allow | 证书管理器代理 |
execute | 修改请求的批准状态。 | Allow | 证书管理器代理 |
submit | 论坛请求. | Allow | 任何人 |
分配 | 为证书管理器代理分配一个请求。 | Allow | 证书管理器代理 |
unassign | 更改请求的分配。 | Allow | 证书管理器代理 |
D.3.15. certServer.ca.request.profile
allow (approve,read) group="Certificate Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
批准 | 修改基于证书配置集的证书请求的批准状态。 | Allow | 证书管理器代理 |
读取 | 查看基于证书配置文件的证书请求。 | Allow | 证书管理器代理 |
D.3.16. certServer.ca.requests
allow (list) group="Certificate Manager Agents"|| group="Registration Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 | ||
---|---|---|---|---|---|
list | 检索请求范围的详细信息,并使用复杂过滤器搜索证书。 | Allow |
|
D.3.17. certServer.ca.systemstatus
allow (read) group="Certificate Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 查看统计数据。 | Allow | 证书管理器代理 |
D.3.18. certServer.ee.certchain
allow (download,read) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
下载 | 下载 CA 的证书链。 | Allow | 任何人 |
读取 | 查看 CA 的证书链。 | Allow | 任何人 |
D.3.19. certServer.ee.certificate
allow (renew,revoke,read,import) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
续订 | 提交续订现有证书的请求。 | Allow | 任何人 |
revoke | 提交用户证书的撤销请求。 | Allow | 任何人 |
读取 | 根据证书序列号或请求 ID 检索和查看证书。 | Allow | 任何人 |
import | 根据序列号导入证书。 | Allow | 任何人 |
D.3.20. certServer.ee.certificates
allow (revoke,list) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
revoke | 提交需要撤销的证书列表。 | Allow |
要撤销的证书的主题必须与向 CA 进行身份验证的证书匹配。
|
list | 搜索与指定条件匹配的证书。 | Allow | 任何人 |
D.3.21. certServer.ee.crl
allow (read,add) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 检索并查看证书撤销列表。 | Allow | 任何人 |
add | 将 CRL 添加到 OCSP 服务器中。 | Allow | 任何人 |
D.3.22. certServer.ee.profile
allow (submit,read) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
submit | 通过证书配置文件提交证书请求。 | Allow | 任何人 |
读取 | 显示证书配置文件的详细信息. | Allow | 任何人 |
D.3.23. certServer.ee.profiles
allow (list) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
list | 列出证书配置集。 | Allow | 任何人 |
D.3.24. certServer.ee.request.ocsp
allow (submit) ipaddress=".*"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
submit | 提交 OCSP 请求。 | Allow | 所有 IP 地址 |
D.3.25. certServer.ee.request.revocation
allow (submit) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
submit | 提交撤销证书的请求。 | Allow | 任何人 |
D.3.26. certServer.ee.requestStatus
allow (read) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 检索已针对该请求发布的任何证书的请求和序列号。 | Allow | 任何人 |
D.3.27. certServer.job.configuration
allow (read) group="Administrators" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents" || group="Auditors";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看基本作业设置、作业实例设置和作业插件设置。列出作业插件和作业实例。 | Allow |
| |||
modify | 添加和删除作业插件和作业实例。修改作业插件和作业实例。 | Allow | 管理员 |
D.3.28. certServer.profile.configuration
allow (read) group="Administrators" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents" || group="Auditors";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看证书配置集默认值和约束、输入、输出、输出配置、默认配置、策略约束配置和证书配置集实例配置。列出证书配置集插件和证书配置集实例。 | Allow |
| |||
modify | 添加、修改和删除证书配置集默认值和约束、输入、输出和证书配置集实例。添加和修改默认策略限制配置。 | Allow | 管理员 |
D.3.29. certServer.publisher.configuration
allow (read) group="Administrators" || group="Auditors" || group="Certificate Manager Agents" || group="Registration Manager Agents" || group="Key Recovery Authority Agents" || group="Online Certificate Status Manager Agents";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看 LDAP 服务器目的地信息、发布程序插件配置、发布程序实例配置、映射程序插件配置、映射程序实例配置、规则插件配置和规则实例配置。列出发布程序插件和实例、规则插件和实例,以及程序插件和实例。 | Allow |
| |||
modify | 添加和删除发布程序插件、发布程序实例、映射程序插件、映射程序实例、规则插件和规则实例。修改发布程序实例、映射程序实例、规则实例和 LDAP 服务器目的地信息。 | Allow | 管理员 |
D.3.30. certServer.securitydomain.domainxml
allow (read) user="anybody";allow (modify) group="Subsystem Group"
操作 | 描述 | allow/Deny Access | 目标用户/组 | ||
---|---|---|---|---|---|
读取 | 查看安全域配置。 | Allow | 任何人 | ||
modify | 通过更改实例信息以及添加和删除实例来修改安全域配置。 | Allow |
|
D.4. 特定于密钥恢复机构的 ACL
D.4.1. certServer.job.configuration
allow (read) group="Administrators" || group="Key Recovery Authority Agents" || group="Auditors";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看基本作业设置、作业实例设置和作业插件设置。列出作业插件和作业实例。 | Allow |
| |||
modify | 添加和删除作业插件和作业实例。修改作业插件和作业实例。 | Allow | 管理员 |
D.4.2. certServer.kra.certificate.transport
allow (read) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 查看 KRA 实例的传输证书。 | Allow | 任何人 |
D.4.3. certServer.kra.configuration
allow (read) group="Administrators" || group="Auditors" || group="Key Recovery Authority Agents" || allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 阅读所需的恢复代理批准数量。 | Allow |
| |||
modify | 更改所需的恢复代理批准数量。 | Allow | 管理员 |
D.4.4. certServer.kra.connector
allow (submit) group="Trusted Managers"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
submit | 提交新的密钥归档请求(仅用于非短信)。 | Allow | 可信管理器 |
D.4.5. certServer.kra.GenerateKeyPair
allow (execute) group="Key Recovery Authority Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
执行 | 执行服务器端密钥生成(仅限TMS)。 | Allow | KRA Agents |
D.4.6. certServer.kra.getTransportCert
allow (download) group="Enterprise CA Administrators" || group="Enterprise KRA Administrators" || group="Enterprise OCSP Administrators" || group="Enterprise TKS Administrators" || group="Enterprise TPS Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
下载 | 检索 KRA 传输证书。 | Allow | 企业管理员 |
D.4.7. certServer.kra.group
allow (modify,read) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |
---|---|---|---|---|
modify | 为实例创建、编辑或删除用户和组条目。 | Allow | 管理员 | |
读取 | 查看实例的用户和组条目。 | Allow |
|
D.4.8. certServer.kra.key
allow (read,recover,download) group="Key Recovery Authority Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 显示有关密钥存档记录的公共信息。 | Allow | KRA Agents |
recover | 从数据库检索关键信息以执行恢复操作。 | Allow | KRA Agents |
下载 | 通过代理服务页面下载密钥信息。 | Allow | KRA Agents |
D.4.9. certServer.kra.keys
allow (list) group="Key Recovery Authority Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
list | 搜索和列出归档密钥的范围。 | Allow | KRA Agents |
D.4.10. certServer.kra.registerUser
allow (modify,read) group="Enterprise CA Administrators" || group="Enterprise KRA Administrators" || group="Enterprise OCSP Administrators" || group="Enterprise TKS Administrators" || group="Enterprise TPS Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
modify | 注册新用户。 | Allow | 企业管理员 |
读取 | 读取现有用户信息. | Allow | 企业管理员 |
D.4.11. certServer.kra.request
allow (read) group="Key Recovery Authority Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 查看密钥存档或恢复请求。 | Allow | KRA Agents |
D.4.12. certServer.kra.request.status
allow (read) group="Key Recovery Authority Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 在代理服务页面中检索密钥恢复请求的状态。 | Allow | KRA Agents |
D.4.13. certServer.kra.requests
allow (list) group="Key Recovery Authority Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
list | 检索关键存档和恢复请求范围的详细信息。 | Allow | KRA Agents |
D.4.14. certServer.kra.systemstatus
allow (read) group="Key Recovery Authority Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 查看统计数据。 | Allow | KRA Agents |
D.4.15. certServer.kra.TokenKeyRecovery
allow (submit) group="Key Recovery Authority Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
submit | 提交或初始化令牌恢复请求。 | Allow | KRA Agents |
D.5. 在线证书状态管理器特定 ACL
D.5.1. certServer.ee.crl
allow (read) user="anybody"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 检索并查看证书撤销列表。 | Allow | 任何人 |
D.5.2. certServer.ee.request.ocsp
allow (submit) ipaddress=".*"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
submit | 提交 OCSP 请求。 | Allow | 所有 IP 地址 |
D.5.3. certServer.ocsp.ca
allow (add) group="Online Certificate Status Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
添加 | 指示 OCSP 响应者对新 CA 的 OCSP 请求做出响应。 | Allow | OCSP Manager 代理 |
D.5.4. certServer.ocsp.cas
allow (list) group="Online Certificate Status Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
list | 列出将 CRL 发布到 OCSP 响应程序的所有证书管理器。 | Allow | 代理 |
D.5.5. certServer.ocsp.certificate
allow (validate) group="Online Certificate Status Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
validate | 验证指定证书的状态。 | Allow | OCSP 代理 |
D.5.6. certServer.ocsp.configuration
allow (read) group="Administrators" || group="Online Certificate Status Manager Agents" || group="Auditors";allow (modify) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 | |||
---|---|---|---|---|---|---|
读取 | 查看 OCSP 插件信息、OCSP 配置和 OCSP 存储配置。列出 OCSP 存储配置。 | Allow |
| |||
modify | 修改 OCSP 配置,OCSP 存储配置以及默认的 OCSP 存储。 | Allow | 管理员 |
D.5.7. certServer.ocsp.crl
allow (add) group="Online Certificate Status Manager Agents" || group="Trusted Managers"
操作 | 描述 | allow/Deny Access | 目标用户/组 | ||
---|---|---|---|---|---|
add | 向由 OCSP 响应程序管理的用户添加新的 CRL。 | Allow |
|
D.5.8. certServer.ocsp.group
allow (modify,read) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
modify | 创建、编辑或删除实例的用户和组条目。 | Allow | 管理员 |
读取 | 查看实例的用户和组条目。 | Allow | 管理员 |
D.5.9. certServer.ocsp.info
allow (read) group="Online Certificate Status Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
读取 | 查看 OCSP 响应器信息。 | Allow | OCSP 代理 |
D.6. 基于令牌密钥服务的 ACL
D.6.1. certServer.tks.encrypteddata
allow(execute) group="Token Key Service Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
执行 | 加密数据存储在 TKS 中。 | Allow | TKS 代理 |
D.6.2. certServer.tks.group
allow (modify,read) group="Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
modify | 为实例创建、编辑或删除用户和组条目。 | Allow | 管理员 |
读取 | 查看实例的用户和组条目。 | Allow | 管理员 |
D.6.3. certServer.tks.importTransportCert
allow (modify,read) group="Enterprise CA Administrators" || group="Enterprise KRA Administrators" || group="Enterprise OCSP Administrators" || group="Enterprise TKS Administrators" || group="Enterprise TPS Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
modify | 更新传输证书。 | Allow | 企业管理员 |
读取 | 导入传输证书。 | Allow | 企业管理员 |
D.6.4. certServer.tks.keysetdata
allow (execute) group="Token Key Service Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
执行 | 创建分散的密钥集合数据。 | Allow | TKS 代理 |
D.6.5. certServer.tks.registerUser
allow (modify,read) group="Enterprise CA Administrators" || group="Enterprise KRA Administrators" || group="Enterprise OCSP Administrators" || group="Enterprise TKS Administrators" || group="Enterprise TPS Administrators"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
modify | 注册新代理。 | Allow | 企业管理员 |
读取 | 读取现有代理信息。 | Allow | 企业管理员 |
D.6.6. certServer.tks.sessionkey
allow (execute) group="Token Key Service Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
执行 | 创建由 TKS 生成的会话密钥。 | Allow | TKS 代理 |
D.6.7. certServer.tks.randomdata
allow (execute) group="Token Key Service Manager Agents"
操作 | 描述 | allow/Deny Access | 目标用户/组 |
---|---|---|---|
执行 | 生成随机数据。 | Allow | TKS 代理 |
附录 E. 审计事件
- 线程的 Java 标识符。例如:
0.localhost-startStop-1
- 事件发生的时间戳。例如:
[21/Jan/2019:17:53:00 IST]
- 日志源(14 是 SIGNED_AUDIT):
[14]
- 当前日志级别(6 是与安全相关的事件)。请参阅 红帽认证系统 9 规划、安装和部署指南中的 日志级别(Message Categories) 部分。例如:
[6]
- 日志事件(特定于日志事件)的信息 ; 有关特定日志事件中每个字段的信息,请参阅 第 E.1 节 “审计事件描述”。例如:
[AuditEvent=AUDIT_LOG_STARTUP][SubjectID=$System$][Outcome=Success] audit function startup
E.1. 审计事件描述
####################### SIGNED AUDIT EVENTS ############################# # Common fields: # - Outcome: "Success" or "Failure" # - SubjectID: The UID of the user responsible for the operation # "$System$" or "SYSTEM" if system-initiated operation (e.g. log signing). # ######################################################################### # Required Audit Events # # Event: ACCESS_SESSION_ESTABLISH with [Outcome=Failure] # Description: This event is used when access session failed to establish. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - ClientIP: Client IP address. # - ServerIP: Server IP address. # - SubjectID: Client certificate subject DN. # - Outcome: Failure # - Info: Failure reason. # LOGGING_SIGNED_AUDIT_ACCESS_SESSION_ESTABLISH_FAILURE=\ <type=ACCESS_SESSION_ESTABLISH>:[AuditEvent=ACCESS_SESSION_ESTABLISH]{0} access session establish failure # # Event: ACCESS_SESSION_ESTABLISH with [Outcome=Success] # Description: This event is used when access session was established successfully. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - ClientIP: Client IP address. # - ServerIP: Server IP address. # - SubjectID: Client certificate subject DN. # - Outcome: Success # LOGGING_SIGNED_AUDIT_ACCESS_SESSION_ESTABLISH_SUCCESS=\ <type=ACCESS_SESSION_ESTABLISH>:[AuditEvent=ACCESS_SESSION_ESTABLISH]{0} access session establish success # # Event: ACCESS_SESSION_TERMINATED # Description: This event is used when access session was terminated. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - ClientIP: Client IP address. # - ServerIP: Server IP address. # - SubjectID: Client certificate subject DN. # - Info: The TLS Alert received from NSS # - Outcome: Success # - Info: The TLS Alert received from NSS # LOGGING_SIGNED_AUDIT_ACCESS_SESSION_TERMINATED=\ <type=ACCESS_SESSION_TERMINATED>:[AuditEvent=ACCESS_SESSION_TERMINATED]{0} access session terminated # # Event: AUDIT_LOG_SIGNING # Description: This event is used when a signature on the audit log is generated (same as "flush" time). # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: Predefined to be "$System$" because this operation # associates with no user. # - Outcome: Success # - sig: The base-64 encoded signature of the buffer just flushed. # LOGGING_SIGNED_AUDIT_AUDIT_LOG_SIGNING_3=[AuditEvent=AUDIT_LOG_SIGNING][SubjectID={0}][Outcome={1}] signature of audit buffer just flushed: sig: {2} # # Event: AUDIT_LOG_STARTUP # Description: This event is used at audit function startup. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: $System$ # - Outcome: # LOGGING_SIGNED_AUDIT_AUDIT_LOG_STARTUP_2=<type=AUDIT_LOG_STARTUP>:[AuditEvent=AUDIT_LOG_STARTUP][SubjectID={0}][Outcome={1}] audit function startup # # Event: AUTH with [Outcome=Failure] # Description: This event is used when authentication fails. # In case of TLS-client auth, only webserver env can pick up the TLS violation. # CS authMgr can pick up certificate mismatch, so this event is used. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: # - Outcome: Failure # (obviously, if authentication failed, you won't have a valid SubjectID, so # in this case, SubjectID should be $Unidentified$) # - AuthMgr: The authentication manager instance name that did # this authentication. # - AttemptedCred: The credential attempted and failed. # LOGGING_SIGNED_AUDIT_AUTH_FAIL=<type=AUTH>:[AuditEvent=AUTH]{0} authentication failure # # Event: AUTH with [Outcome=Success] # Description: This event is used when authentication succeeded. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: id of user who has been authenticated # - Outcome: Success # - AuthMgr: The authentication manager instance name that did # this authentication. # LOGGING_SIGNED_AUDIT_AUTH_SUCCESS=<type=AUTH>:[AuditEvent=AUTH]{0} authentication success # # Event: AUTHZ with [Outcome=Failure] # Description: This event is used when authorization has failed. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: id of user who has failed to be authorized for an action # - Outcome: Failure # - aclResource: The ACL resource ID as defined in ACL resource list. # - Op: One of the operations as defined with the ACL statement # e.g. "read" for an ACL statement containing "(read,write)". # - Info: # LOGGING_SIGNED_AUDIT_AUTHZ_FAIL=<type=AUTHZ>:[AuditEvent=AUTHZ]{0} authorization failure # # Event: AUTHZ with [Outcome=Success] # Description: This event is used when authorization is successful. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: id of user who has been authorized for an action # - Outcome: Success # - aclResource: The ACL resource ID as defined in ACL resource list. # - Op: One of the operations as defined with the ACL statement # e.g. "read" for an ACL statement containing "(read,write)". # LOGGING_SIGNED_AUDIT_AUTHZ_SUCCESS=<type=AUTHZ>:[AuditEvent=AUTHZ]{0} authorization success # # Event: CERT_PROFILE_APPROVAL # Description: This event is used when an agent approves/disapproves a certificate profile set by the # administrator for automatic approval. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: id of the CA agent who approved the certificate enrollment profile # - Outcome: # - ProfileID: One of the profiles defined by the administrator # and to be approved by an agent. # - Op: "approve" or "disapprove". # LOGGING_SIGNED_AUDIT_CERT_PROFILE_APPROVAL_4=<type=CERT_PROFILE_APPROVAL>:[AuditEvent=CERT_PROFILE_APPROVAL][SubjectID={0}][Outcome={1}][ProfileID={2}][Op={3}] certificate profile approval # # Event: CERT_REQUEST_PROCESSED # Description: This event is used when certificate request has just been through the approval process. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: The UID of the agent who approves, rejects, or cancels # the certificate request. # - Outcome: # - ReqID: The request ID. # - InfoName: "certificate" (in case of approval), "rejectReason" # (in case of reject), or "cancelReason" (in case of cancel) # - InfoValue: The certificate (in case of success), a reject reason in # text, or a cancel reason in text. # - CertSerialNum: # LOGGING_SIGNED_AUDIT_CERT_REQUEST_PROCESSED=<type=CERT_REQUEST_PROCESSED>:[AuditEvent=CERT_REQUEST_PROCESSED]{0} certificate request processed # # Event: CERT_SIGNING_INFO # Description: This event indicates which key is used to sign certificates. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: $System$ # - Outcome: Success # - SKI: Subject Key Identifier of the certificate signing certificate # - AuthorityID: (applicable only to lightweight CA) # LOGGING_SIGNED_AUDIT_CERT_SIGNING_INFO=<type=CERT_SIGNING_INFO>:[AuditEvent=CERT_SIGNING_INFO]{0} certificate signing info # # Event: CERT_STATUS_CHANGE_REQUEST # Description: This event is used when a certificate status change request (e.g. revocation) # is made (before approval process). # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: id of uer who performed the action # - Outcome: # - ReqID: The request ID. # - CertSerialNum: The serial number (in hex) of the certificate to be revoked. # - RequestType: "revoke", "on-hold", "off-hold" # LOGGING_SIGNED_AUDIT_CERT_STATUS_CHANGE_REQUEST=<type=CERT_STATUS_CHANGE_REQUEST>:[AuditEvent=CERT_STATUS_CHANGE_REQUEST]{0} certificate revocation/unrevocation request made # # Event: CERT_STATUS_CHANGE_REQUEST_PROCESSED # Description: This event is used when certificate status is changed (revoked, expired, on-hold, # off-hold). # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: The UID of the agent that processed the request. # - Outcome: # - ReqID: The request ID. # - RequestType: "revoke", "on-hold", "off-hold" # - Approval: "complete", "rejected", or "canceled" # (note that "complete" means "approved") # - CertSerialNum: The serial number (in hex). # - RevokeReasonNum: One of the following number: # reason number reason # -------------------------------------- # 0 Unspecified # 1 Key compromised # 2 CA key compromised (should not be used) # 3 Affiliation changed # 4 Certificate superceded # 5 Cessation of operation # 6 Certificate is on-hold # - Info: # LOGGING_SIGNED_AUDIT_CERT_STATUS_CHANGE_REQUEST_PROCESSED=<type=CERT_STATUS_CHANGE_REQUEST_PROCESSED>:[AuditEvent=CERT_STATUS_CHANGE_REQUEST_PROCESSED]{0} certificate status change request processed # # Event: CLIENT_ACCESS_SESSION_ESTABLISH with [Outcome=Failure] # Description: This event is when access session failed to establish when Certificate System acts as client. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - ClientHost: Client hostname. # - ServerHost: Server hostname. # - ServerPort: Server port. # - SubjectID: SYSTEM # - Outcome: Failure # - Info: # LOGGING_SIGNED_AUDIT_CLIENT_ACCESS_SESSION_ESTABLISH_FAILURE=\ <type=CLIENT_ACCESS_SESSION_ESTABLISH>:[AuditEvent=CLIENT_ACCESS_SESSION_ESTABLISH]{0} access session failed to establish when Certificate System acts as client # # Event: CLIENT_ACCESS_SESSION_ESTABLISH with [Outcome=Success] # Description: This event is used when access session was established successfully when # Certificate System acts as client. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - ClientHost: Client hostname. # - ServerHost: Server hostname. # - ServerPort: Server port. # - SubjectID: SYSTEM # - Outcome: Success # LOGGING_SIGNED_AUDIT_CLIENT_ACCESS_SESSION_ESTABLISH_SUCCESS=\ <type=CLIENT_ACCESS_SESSION_ESTABLISH>:[AuditEvent=CLIENT_ACCESS_SESSION_ESTABLISH]{0} access session establish successfully when Certificate System acts as client # # Event: CLIENT_ACCESS_SESSION_TERMINATED # Description: This event is used when access session was terminated when Certificate System acts as client. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - ClientHost: Client hostname. # - ServerHost: Server hostname. # - ServerPort: Server port. # - SubjectID: SYSTEM # - Outcome: Success # - Info: The TLS Alert received from NSS # LOGGING_SIGNED_AUDIT_CLIENT_ACCESS_SESSION_TERMINATED=\ <type=CLIENT_ACCESS_SESSION_TERMINATED>:[AuditEvent=CLIENT_ACCESS_SESSION_TERMINATED]{0} access session terminated when Certificate System acts as client # # Event: CMC_REQUEST_RECEIVED # Description: This event is used when a CMC request is received. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: The UID of user that triggered this event. # If CMC requests is signed by an agent, SubjectID should # be that of the agent. # In case of an unsigned request, it would bear $Unidentified$. # - Outcome: # - CMCRequest: Base64 encoding of the CMC request received # LOGGING_SIGNED_AUDIT_CMC_REQUEST_RECEIVED_3=<type=CMC_REQUEST_RECEIVED>:[AuditEvent=CMC_REQUEST_RECEIVED][SubjectID={0}][Outcome={1}][CMCRequest={2}] CMC request received # # Event: CMC_RESPONSE_SENT # Description: This event is used when a CMC response is sent. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: The UID of user that triggered this event. # - Outcome: # - CMCResponse: Base64 encoding of the CMC response sent # LOGGING_SIGNED_AUDIT_CMC_RESPONSE_SENT_3=<type=CMC_RESPONSE_SENT>:[AuditEvent=CMC_RESPONSE_SENT][SubjectID={0}][Outcome={1}][CMCResponse={2}] CMC response sent # # Event: CMC_SIGNED_REQUEST_SIG_VERIFY # Description: This event is used when agent signed CMC certificate requests or revocation requests # are submitted and signature is verified. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: the user who signed the CMC request (success case) # - Outcome: # - ReqType: The request type (enrollment, or revocation). # - CertSubject: The certificate subject name of the certificate request. # - SignerInfo: A unique String representation for the signer. # LOGGING_SIGNED_AUDIT_CMC_SIGNED_REQUEST_SIG_VERIFY=<type=CMC_SIGNED_REQUEST_SIG_VERIFY>:[AuditEvent=CMC_SIGNED_REQUEST_SIG_VERIFY]{0} agent signed CMC request signature verification # # Event: CMC_USER_SIGNED_REQUEST_SIG_VERIFY # Description: This event is used when CMC (user-signed or self-signed) certificate requests or revocation requests # are submitted and signature is verified. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: the user who signed the CMC request (success case) # - Outcome: # - ReqType: The request type (enrollment, or revocation). # - CertSubject: The certificate subject name of the certificate request. # - CMCSignerInfo: A unique String representation for the CMC request signer. # - info: # LOGGING_SIGNED_AUDIT_CMC_USER_SIGNED_REQUEST_SIG_VERIFY_FAILURE=<type=CMC_USER_SIGNED_REQUEST_SIG_VERIFY>:[AuditEvent=CMC_USER_SIGNED_REQUEST_SIG_VERIFY]{0} User signed CMC request signature verification failure LOGGING_SIGNED_AUDIT_CMC_USER_SIGNED_REQUEST_SIG_VERIFY_SUCCESS=<type=CMC_USER_SIGNED_REQUEST_SIG_VERIFY>:[AuditEvent=CMC_USER_SIGNED_REQUEST_SIG_VERIFY]{0} User signed CMC request signature verification success # # Event: CONFIG_ACL # Description: This event is used when configuring ACL information. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: id of administrator who performed the action # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # LOGGING_SIGNED_AUDIT_CONFIG_ACL_3=<type=CONFIG_ACL>:[AuditEvent=CONFIG_ACL][SubjectID={0}][Outcome={1}][ParamNameValPairs={2}] ACL configuration parameter(s) change # # Event: CONFIG_AUTH # Description: This event is used when configuring authentication. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: id of administrator who performed the action # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # --- Password MUST NOT be logged --- # LOGGING_SIGNED_AUDIT_CONFIG_AUTH_3=<type=CONFIG_AUTH>:[AuditEvent=CONFIG_AUTH][SubjectID={0}][Outcome={1}][ParamNameValPairs={2}] authentication configuration parameter(s) change # # Event: CONFIG_CERT_PROFILE # Description: This event is used when configuring certificate profile # (general settings and certificate profile). # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: id of administrator who performed the action # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # LOGGING_SIGNED_AUDIT_CONFIG_CERT_PROFILE_3=<type=CONFIG_CERT_PROFILE>:[AuditEvent=CONFIG_CERT_PROFILE][SubjectID={0}][Outcome={1}][ParamNameValPairs={2}] certificate profile configuration parameter(s) change # # Event: CONFIG_CRL_PROFILE # Description: This event is used when configuring CRL profile # (extensions, frequency, CRL format). # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: id of administrator who performed the action # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # LOGGING_SIGNED_AUDIT_CONFIG_CRL_PROFILE_3=<type=CONFIG_CRL_PROFILE>:[AuditEvent=CONFIG_CRL_PROFILE][SubjectID={0}][Outcome={1}][ParamNameValPairs={2}] CRL profile configuration parameter(s) change # # Event: CONFIG_DRM # Description: This event is used when configuring KRA. # This includes key recovery scheme, change of any secret component. # Applicable subsystems: KRA # Enabled by default: Yes # Fields: # - SubjectID: id of administrator who performed the action # - Outcome: # - ParamNameValPairs A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # --- secret component (password) MUST NOT be logged --- # LOGGING_SIGNED_AUDIT_CONFIG_DRM_3=<type=CONFIG_DRM>:[AuditEvent=CONFIG_DRM][SubjectID={0}][Outcome={1}][ParamNameValPairs={2}] DRM configuration parameter(s) change # # Event: CONFIG_OCSP_PROFILE # Description: This event is used when configuring OCSP profile # (everything under Online Certificate Status Manager). # Applicable subsystems: OCSP # Enabled by default: Yes # Fields: # - SubjectID: id of administrator who performed the action # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # LOGGING_SIGNED_AUDIT_CONFIG_OCSP_PROFILE_3=<type=CONFIG_OCSP_PROFILE>:[AuditEvent=CONFIG_OCSP_PROFILE][SubjectID={0}][Outcome={1}][ParamNameValPairs={2}] OCSP profile configuration parameter(s) change # # Event: CONFIG_ROLE # Description: This event is used when configuring role information. # This includes anything under users/groups, add/remove/edit a role, etc. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: id of administrator who performed the action # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # LOGGING_SIGNED_AUDIT_CONFIG_ROLE=<type=CONFIG_ROLE>:[AuditEvent=CONFIG_ROLE]{0} role configuration parameter(s) change # # Event: CONFIG_SERIAL_NUMBER # Description: This event is used when configuring serial number ranges # (when requesting a serial number range when cloning, for example). # Applicable subsystems: CA, KRA # Enabled by default: Yes # Fields: # - SubjectID: id of administrator who performed the action # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # LOGGING_SIGNED_AUDIT_CONFIG_SERIAL_NUMBER_1=<type=CONFIG_SERIAL_NUMBER>:[AuditEvent=CONFIG_SERIAL_NUMBER][SubjectID={0}][Outcome={1}][ParamNameValPairs={2}] serial number range update # # Event: CONFIG_SIGNED_AUDIT # Description: This event is used when configuring signedAudit. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: id of administrator who performed the action # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # LOGGING_SIGNED_AUDIT_CONFIG_SIGNED_AUDIT=<type=CONFIG_SIGNED_AUDIT>:[AuditEvent=CONFIG_SIGNED_AUDIT]{0} signed audit configuration parameter(s) change # # Event: CONFIG_TRUSTED_PUBLIC_KEY # Description: This event is used when: # 1. "Manage Certificate" is used to edit the trustness of certificates # and deletion of certificates # 2. "Certificate Setup Wizard" is used to import CA certificates into the # certificate database (Although CrossCertificatePairs are stored # within internaldb, audit them as well) # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: ID of administrator who performed this configuration # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # LOGGING_SIGNED_AUDIT_CONFIG_TRUSTED_PUBLIC_KEY=<type=CONFIG_TRUSTED_PUBLIC_KEY>:[AuditEvent=CONFIG_TRUSTED_PUBLIC_KEY]{0} certificate database configuration # # Event: CRL_SIGNING_INFO # Description: This event indicates which key is used to sign CRLs. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: $System$ # - Outcome: # - SKI: Subject Key Identifier of the CRL signing certificate # LOGGING_SIGNED_AUDIT_CRL_SIGNING_INFO=<type=CRL_SIGNING_INFO>:[AuditEvent=CRL_SIGNING_INFO]{0} CRL signing info # # Event: DELTA_CRL_GENERATION # Description: This event is used when delta CRL generation is complete. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: $Unidentified$ # - Outcome: "Success" when delta CRL is generated successfully, "Failure" otherwise. # - CRLnum: The CRL number that identifies the CRL # - Info: # - FailureReason: # LOGGING_SIGNED_AUDIT_DELTA_CRL_GENERATION=<type=DELTA_CRL_GENERATION>:[AuditEvent=DELTA_CRL_GENERATION]{0} Delta CRL generation # # Event: FULL_CRL_GENERATION # Description: This event is used when full CRL generation is complete. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: $System$ # - Outcome: "Success" when full CRL is generated successfully, "Failure" otherwise. # - CRLnum: The CRL number that identifies the CRL # - Info: # - FailureReason: # LOGGING_SIGNED_AUDIT_FULL_CRL_GENERATION=<type=FULL_CRL_GENERATION>:[AuditEvent=FULL_CRL_GENERATION]{0} Full CRL generation # # Event: PROFILE_CERT_REQUEST # Description: This event is used when a profile certificate request is made (before approval process). # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: The UID of user that triggered this event. # If CMC enrollment requests signed by an agent, SubjectID should # be that of the agent. # - Outcome: # - CertSubject: The certificate subject name of the certificate request. # - ReqID: The certificate request ID. # - ProfileID: One of the certificate profiles defined by the # administrator. # LOGGING_SIGNED_AUDIT_PROFILE_CERT_REQUEST_5=<type=PROFILE_CERT_REQUEST>:[AuditEvent=PROFILE_CERT_REQUEST][SubjectID={0}][Outcome={1}][ReqID={2}][ProfileID={3}][CertSubject={4}] certificate request made with certificate profiles # # Event: PROOF_OF_POSSESSION # Description: This event is used for proof of possession during certificate enrollment processing. # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: id that represents the authenticated user # - Outcome: # - Info: some information on when/how it occurred # LOGGING_SIGNED_AUDIT_PROOF_OF_POSSESSION_3=<type=PROOF_OF_POSSESSION>:[AuditEvent=PROOF_OF_POSSESSION][SubjectID={0}][Outcome={1}][Info={2}] proof of possession # # Event: OCSP_ADD_CA_REQUEST_PROCESSED # Description: This event is used when an add CA request to the OCSP Responder is processed. # Applicable subsystems: OCSP # Enabled by default: Yes # Fields: # - SubjectID: OCSP administrator user id # - Outcome: "Success" when CA is added successfully, "Failure" otherwise. # - CASubjectDN: The subject DN of the leaf CA cert in the chain. # LOGGING_SIGNED_AUDIT_OCSP_ADD_CA_REQUEST_PROCESSED=<type=OCSP_ADD_CA_REQUEST_PROCESSED>:[AuditEvent=OCSP_ADD_CA_REQUEST_PROCESSED]{0} Add CA for OCSP Responder # # Event: OCSP_GENERATION # Description: This event is used when an OCSP response generated is complete. # Applicable subsystems: CA, OCSP # Enabled by default: Yes # Fields: # - SubjectID: $NonRoleUser$ # - Outcome: "Success" when OCSP response is generated successfully, "Failure" otherwise. # - FailureReason: # LOGGING_SIGNED_AUDIT_OCSP_GENERATION=<type=OCSP_GENERATION>:[AuditEvent=OCSP_GENERATION]{0} OCSP response generation # # Event: OCSP_REMOVE_CA_REQUEST_PROCESSED with [Outcome=Failure] # Description: This event is used when a remove CA request to the OCSP Responder is processed and failed. # Applicable subsystems: OCSP # Enabled by default: Yes # Fields: # - SubjectID: OCSP administrator user id # - Outcome: Failure # - CASubjectDN: The subject DN of the leaf CA certificate in the chain. # LOGGING_SIGNED_AUDIT_OCSP_REMOVE_CA_REQUEST_PROCESSED_FAILURE=<type=OCSP_REMOVE_CA_REQUEST_PROCESSED>:[AuditEvent=OCSP_REMOVE_CA_REQUEST_PROCESSED]{0} Remove CA for OCSP Responder has failed # # Event: OCSP_REMOVE_CA_REQUEST_PROCESSED with [Outcome=Success] # Description: This event is used when a remove CA request to the OCSP Responder is processed successfully. # Applicable subsystems: OCSP # Enabled by default: Yes # Fields: # - SubjectID: OCSP administrator user id # - Outcome: "Success" when CA is removed successfully, "Failure" otherwise. # - CASubjectDN: The subject DN of the leaf CA certificate in the chain. # LOGGING_SIGNED_AUDIT_OCSP_REMOVE_CA_REQUEST_PROCESSED_SUCCESS=<type=OCSP_REMOVE_CA_REQUEST_PROCESSED>:[AuditEvent=OCSP_REMOVE_CA_REQUEST_PROCESSED]{0} Remove CA for OCSP Responder is successful # # Event: OCSP_SIGNING_INFO # Description: This event indicates which key is used to sign OCSP responses. # Applicable subsystems: CA, OCSP # Enabled by default: Yes # Fields: # - SubjectID: $System$ # - Outcome: # - SKI: Subject Key Identifier of the OCSP signing certificate # - AuthorityID: (applicable only to lightweight CA) # LOGGING_SIGNED_AUDIT_OCSP_SIGNING_INFO=<type=OCSP_SIGNING_INFO>:[AuditEvent=OCSP_SIGNING_INFO]{0} OCSP signing info # # Event: ROLE_ASSUME # Description: This event is used when a user assumes a role. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: # - Outcome: # - Role: One of the valid roles: # "Administrators", "Certificate Manager Agents", or "Auditors". # Note that customized role names can be used once configured. # LOGGING_SIGNED_AUDIT_ROLE_ASSUME=<type=ROLE_ASSUME>:[AuditEvent=ROLE_ASSUME]{0} assume privileged role # # Event: SECURITY_DOMAIN_UPDATE # Description: This event is used when updating contents of security domain # (add/remove a subsystem). # Applicable subsystems: CA # Enabled by default: Yes # Fields: # - SubjectID: CA administrator user ID # - Outcome: # - ParamNameValPairs: A name-value pair # (where name and value are separated by the delimiter ;;) # separated by + (if more than one name-value pair) of config params changed. # LOGGING_SIGNED_AUDIT_SECURITY_DOMAIN_UPDATE_1=<type=SECURITY_DOMAIN_UPDATE>:[AuditEvent=SECURITY_DOMAIN_UPDATE][SubjectID={0}][Outcome={1}][ParamNameValPairs={2}] security domain update # # Event: SELFTESTS_EXECUTION # Description: This event is used when self tests are run. # Applicable subsystems: CA, KRA, OCSP, TKS, TPS # Enabled by default: Yes # Fields: # - SubjectID: $System$ # - Outcome: # LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION_2=<type=SELFTESTS_EXECUTION>:[AuditEvent=SELFTESTS_EXECUTION][SubjectID={0}][Outcome={1}] self tests execution (see selftests.log for details)
术语表
A
- administrator
- 安装并配置一个或多个证书证书证书的人员;系统管理器并为其设置特权用户或代理。另请参阅 agent。
- agent
- APDU
- 应用程序协议数据单元。一个通信单元(类似于字节),用于智能卡和智能卡读取器之间的通信。
- auditor
- 此特权用户,可以查看签名的审计日志。
- 代理批准的注册
- 在发布证书前,需要代理批准请求的注册。
- 代理服务
- 1. 可通过证书证书系统nbsp 管理的服务;系统 agent 通过证书证书系统nbsp 提供的 HTML 页面;为代理分配了必要的权限的系统子系统。2.用于管理此类服务的 HTML 页面。
- 审计日志
- 记录各种系统事件的日志。此日志可以签名,提供不被篡改的证明,并且只能被审核员用户读取。
- 属性值断言(AVA)
- 授权
- 访问由服务器控制的资源的权限。授权通常会在服务器评估与资源关联的 ACL 后进行。请参阅 访问控制列表(ACL)。
- 自动注册
- 配置证书证书系统空间的方法;System 子系统允许自动进行终端注册,而无需人为干预。通过这种身份验证,成功完成身份验证模块的处理的证书请求将自动批准以进行配置集处理,并且证书能够保证。
- 访问控制
- 控制允许特定用户执行的操作的进程。例如,对服务器的访问控制通常基于一个由密码或证书建立的身份,以及有关该实体可以执行的操作的规则。另请参阅 访问控制列表(ACL)。
- 访问控制列表(ACL)
- 访问控制条目的集合,该条目定义服务器收到对特定资源的请求时要评估的访问层次结构。请参阅 访问控制指令(ACI)。
- 访问控制指令(ACI)
- 访问规则,指定如何识别请求访问权限的主题或特定主题允许或拒绝什么权限。请参阅 访问控制列表(ACL)。
- 身份验证
- 身份验证模块
- 一组规则(实施为 Java™ 类),用于对最终实体、代理、管理员或其他需要与之交互的实体进行身份验证;系统子系统。对于典型的最终用户注册,在用户提供了注册表请求的信息后,注册 servlet 使用与该表单关联的身份验证模块来验证信息并验证用户身份。请参阅 servlet。
- 高级加密标准(AES)
- 高级加密标准(AES)与其前身数据加密标准(DES)是 FIPS 批准的对称加密标准。AES 由 2002 年美国政府采用。它定义三个块密码: AES-128、AES-192 和 AES-256。美国国家标准与技术研究所(NIST)在美国中定义了 AES 标准。FIPS PUB 197。如需更多信息,请参阅 http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf。
B
- bind DN
- 用户 ID,格式为可分辨名称(DN),密码用于向 Red Hat Directory Server 进行身份验证。
C
- CA 层次结构
- root CA 将授权签发证书到下级 CA 的 CA 的层次结构。从属 CA 也可通过委派发出状态到其他 CA 来扩展层次结构。另请参阅 证书颁发机构(CA)、subordinate CA、Root CA。
- CA 服务器密钥
- 提供 CA 服务的服务器的 SSL 服务器密钥。
- CA 签名密钥
- 与 CA 证书中的公钥对应的私钥。CA 使用它的签名密钥来签署证书和 CRL。
- CA 证书
- certificate
- 根据 X.509 标准格式的数字数据,指定独立、公司或其他实体的名称(证书 主题名称 )并验证 public key 也包含在该实体(也属于该实体)。证书由 证书颁发机构(CA) 发布并用数字签名。可以通过通过 数字签名 技术检查 CA 的 public-key cryptography 来验证证书的有效性。要在 公钥基础架构(PKI) 中信任,该证书必须由在 PKI 中注册的其他实体信任的 CA 发布并签名。
- Certificate System
- cipher
- CMC
- CMC 注册
- 允许使用代理的签名证书将签名注册或经过签名的撤销请求发送到证书管理器的功能。这些请求随后由证书管理器自动处理。
- CMMF
- 请参阅 证书管理消息格式(CMMF)。
- CRL
- 请参阅 证书撤销列表(CRL)。
- CRMF
- 请参阅 证书请求消息格式(CRMF)。
- cross-certification
- 证书交换,由两个不同的认证层次结构或链的两个 CA 交换。跨认证集扩展了信任链,涵盖这两个层次结构。另请参阅 证书颁发机构(CA)。
- cryptographic algorithm
- 用于执行加密操作的规则或指示集合,如 encryption 和 解密。
- CSP
- 请参阅 加密服务供应商(CSP)。
- 信任链
- 请参阅 证书链。
- 加密服务供应商(CSP)
- 代表使用标准接口(如 PKCS #11 定义)使用标准接口(如 PKCS #11 定义)的软件,用来执行加密服务(如密钥生成、密钥存储和加密)的加密模块。
- 加密模块
- 请参阅 PKCS #11 模块。
- 加密消息语法(CS)
- 用于数字签名、摘要、身份验证或加密任意消息的语法,如 CMMF。
- 基于证书的验证
- 基于证书和公钥加密的身份验证。另请参阅 基于密码的身份验证。
- 客户端 SSL 证书
- 用于使用 SSL 协议识别客户端到服务器的证书。请参阅 安全套接字层(SSL)。
- 客户端身份验证
- 证书扩展
- X.509 v3 证书包含一个 extensions 字段,允许向证书添加任意数量的附加字段。证书扩展提供了向证书添加信息(如替代主题名称和使用量限制)的方法。很多标准扩展已经由 PKIX 工作组定义。
- 证书指纹
- 与证书关联的 单向哈希。数字不是证书本身的一部分,而是通过将 hash 功能应用到证书的内容来生成。如果证书的内容发生变化,即使单个字符也是如此,则同一功能也会生成不同的数字。因此,可以使用证书指纹来验证证书没有被篡改。
- 证书撤销列表(CRL)
- 根据 X.509 标准定义,由序列号(由 证书颁发机构(CA) 生成并签名)的撤销证书列表。
- 证书管理器
- 独立证书证书系统nbsp; 充当证书颁发机构的系统子系统。证书管理器实例问题、更新并撤销证书,该证书可与 CRL 一起发布至 LDAP 目录。它接受来自最终用户的请求。请参阅 证书颁发机构(CA)。
- 证书管理器代理
- 属于一组授权来管理证书管理器的代理服务的用户。这些服务包括访问和修改(批准和拒绝)证书请求和发布证书的功能。
- 证书管理消息格式(CMMF)
- 用于传达证书请求和撤销从最终用户到证书管理器的请求的消息格式,并将各种信息发送到最终实体。从互联网工程任务组(IETF)PKIX 工作组中提出标准。CMMF 被另一个建议的标准 通过 Cryptographic 消息语法(CMC)的证书管理消息 恢复。有关详细信息,请参阅 https://tools.ietf.org/html/draft-ietf-pkix-cmmf-02。
- 证书系统子系统
- 证书系统控制台
- 为任何单一证书证书系统nbsp;System 实例打开的控制台。CertificateCertificate Systemnbsp;System 控制台允许 CertificateCertificate Systemnbsp;System Administrator 控制对应证书证书系统证书系统nbsp;System 实例的配置设置。
- 证书请求消息格式(CRMF)
- 用于与 X.509 证书管理相关的消息的格式。这个格式是 CMMF 的子集。另请参阅 证书管理消息格式(CMMF)。有关详细信息,请参阅 https://tools.ietf.org/html/rfc2511。
- 证书配置集
- 组配置设置,用于定义特定类型的注册。证书配置集为特定类型的注册设置策略,以及证书配置集中的身份验证方法。
- 证书链
- 由连续证书颁发机构签名的证书的等级系列。CA 证书标识 证书颁发机构(CA),用于签署该授权发布的证书。CA 证书可由父 CA 的 CA 证书注册,以此类推。Root CACertificateCertificate Systemnbsp;System 允许任何端点检索证书链中的所有证书。
- 证书颁发机构(CA)
- 验证证书要识别的个人或实体的身份后,一个可信实体会发出 certificate。CA 还更新并撤销证书并生成 CRL。证书在签发者字段中命名的实体始终是 CA。证书颁发机构可以独立使用证书认证服务器软件(如 Red Hat Certificate Systemnbsp)的独立第三方或机构 ;Hat Certificate Red Hat Certificate Systemnbsp;System.
- 跨对证书
- 由一个 CA 向另一个 CA 发布的证书,然后由两个 CA 存储以组成一个信任圆形。两个 CA 互相发布证书,然后将这两个证书存储为证书对。
- 通过 Cryptographic 消息语法(CMC)的证书管理消息
- 用于向证书管理器发出请求的消息格式。从互联网工程任务组(IETF)PKIX 工作组中提出标准。有关详细信息,请参阅 https://tools.ietf.org/html/draft-ietf-pkix-cmc-02。
- 链 CA
- 请参阅 链接的 CA。
D
- delta CRL
- 包含自最后完整 CRL 开始已撤销的证书的 CRL 列表。
- digital ID
- 请参阅 certificate。
- 双密钥对
- 两个公钥对,四个密钥完全对应于两个独立的证书。一个对的私钥用于签名操作,其他对的公钥和私钥用于加密和解密操作。每个对对应一个独立 certificate。另请参阅 加密密钥、public-key cryptography、签名密钥。
- 发行点
- 用于 CRL 来定义一组证书。每个发布点由一组发布的证书定义。可以为特定发布点创建 CRL。
- 可分辨名称(DN)
- 一系列 AVAs 来标识证书的主题。请参阅 属性值断言(AVA)。
- 密钥恢复授权
- 可选的独立证书证书系统板;System 子系统,用于管理用于最终实体的 RSA 加密密钥的长期归档和恢复。在发布新证书前,可以将证书管理器配置为通过密钥恢复授权归档最终实体的加密密钥。只有当最终实体(如敏感电子邮件)加密数据时,密钥恢复授权才很有用,该组织可能需要恢复一些天的时间。它只能与支持双键对的最终用户使用:两个单独的密钥对,一个用于加密,另一个用于数字签名。
- 密钥恢复授权中心存储密钥
- 在密钥恢复授权使用密钥恢复授权密钥解密后,由密钥恢复授权机构用来加密最终用户的加密密钥。存储密钥永不会离开密钥恢复授权。
- 密钥恢复授权代理
- 属于一组授权来管理密钥恢复机构的代理服务的用户,包括使用基于 HTML 的管理页面管理请求队列和授权恢复操作。
- 密钥恢复授权传输证书
- 认证由终端实体使用的公钥加密该实体的加密密钥,以传输到密钥恢复授权。密钥恢复授权使用与认证公钥对应的私钥来解密最终用户的密钥,然后使用存储密钥加密它。
- 密钥恢复机构恢复代理
- 那些拥有部分存储密钥的 n 人之一 密钥恢复授权。
- 数字签名
- 要创建数字签名,签名软件首先会从要签名的数据创建一个 单向哈希,比如新发布的证书。然后,使用签名者的私钥加密单向哈希。得到的数字签名对于每个数据已签名来说是唯一的。即使在消息中添加一个逗号也会更改该消息的数字签名。与签名者的公钥成功解密数字签名,并与相同数据的另一个哈希进行比较 tamper 检测。对包含公钥的证书验证 证书链 可提供签名者的身份验证。另请参阅 nonrepudiation、encryption。
- 解密
- 解放已加密的数据。请参阅 encryption。
E
- eavesdropping
- 对通过接收不打算信息的实体通过网络发送的信息进行破坏。
- Elliptic Curve Cryptography(ECC)
- 一个加密算法,使用 elliptic curves 为加密密钥基础的数学问题创建附加日志变量。ECC 密码比 RSA 密码更有效,由于其复杂性比 RSA 密码更强大,因此比 RSA 密码更强大。
- encryption
- 以推断其含义的方式生成信息。请参阅 解密。
- enrollment
- 请求和接收 X.509 证书以用于 公钥基础架构(PKI) 的过程。也称为 注册。
- extensions 字段
- 请参阅 证书扩展。
- 加密密钥
- 端点实体
- 在 公钥基础架构(PKI) 中,一个使用 certificate 的人、路由器、服务器或其他实体识别其自身。
F
- fingerprint
- 请参阅 证书指纹。
- FIPS PUBS 140
- 联邦信息标准公共(FIPS PUBS)140 是加密模块实施的美国政府标准,用于加密和解密数据的硬件或执行其他加密操作,如创建或验证数字签名。给美国政府的很多产品必须符合一个或多个 FIPS 标准。请参阅 http://www.nist.gov/itl/fipscurrent.cfm。
- firewall
- 在两个或多个网络之间强制边界的系统或组合。
- 联邦网桥证书颁发机构(FBCA)
- 一个配置,其中两个 CA 组成一个信任方,方法是向彼此发出跨对证书,并将两个跨对证书存储为一个证书。
I
- impersonation
- 作为通过网络发送的信息的预期接收者执行。模拟器可以采用两种形式: 欺骗 和 misrepresentation。
- IP 欺骗
- 客户端 IP 地址的需要。
- 中间 CA
- 证书位于 证书链 中 root CA 和颁发的证书之间的 CA。
- 输入
- 在证书配置集功能的上下文中,它定义了特定证书配置集的注册表单。设定了每个输入,然后根据为此注册配置的所有输入动态创建注册表单。
J
- JAR 文件
- 根据 Java™ 归档(JAR)格式 压缩的文件集合的数字信封。
- Java™ Cryptography Architecture(JCA)
- 由 Sun Microsystems 为加密服务开发的 API 规格和引用。请参阅 http://java.sun.com/products/jdk/1.2/docs/guide/security/CryptoSpec.Introduction。
- Java™ 原生接口(JNI)
- 标准接口在指定平台上提供不同实施 Java™ 虚拟机(JVM)的二进制兼容性,允许以 C 或 C++ 等语言编写的现有代码,以便统一平台绑定到 Java™。请参阅 http://java.sun.com/products/jdk/1.2/docs/guide/jni/index.html。
- Java™ 安全服务(JSS)
- 用于控制网络安全服务(NSS)执行的安全操作的 Java™ 接口。
- Java™ 开发套件(JDK)
- 由 Sun Microsystems 提供的软件开发套件,用于开发使用 Java™ 编程语言的应用程序和应用程序。
- Java™ 归档(JAR)格式
- 将数字签名、安装程序脚本和其他信息与目录中的文件相关联的一组约定。
K
- KEA
- 请参阅 主要交流算法(KEA)。
- key
- 主要交流算法(KEA)
- 供美国政府用于密钥交换的算法。
- 密钥交换
- 遵循客户端和服务器来确定在 SSL 会话过程中将使用的对称密钥。
L
- 轻量级目录访问协议(LDAP)
- 一个目录服务协议,旨在在多个平台间通过 TCP/IP 运行。LDAP 是目录访问协议(DAP)的简化版本,用于访问 X.500 目录。LDAP 受 IETF 更改控制,并已演变为满足互联网要求。
- 链接的 CA
- 内部部署的 证书颁发机构(CA),其证书由公共第三方 CA 签名。内部 CA 充当其问题的证书的 root CA,第三方 CA 充当链接到同一第三方 root CA 的其他 CA 发布的证书。也称为 "chained CA" 以及不同公共 CA 使用的其他术语。
M
- MD5
- 由 Ronald Rivest 开发的消息摘要算法。另请参阅 单向哈希。
- misrepresentation
- 将实体的表示为不是个人或组织。例如,当网站真正使用信用卡支付但从未发送任何货物的站点时,网站可能假定成为发放。Misrepresentation 是 impersonation 的一种形式。另请参阅 欺骗。
- 手动身份验证
- 配置证书证书系统nbsp 的方法;需要人工批准每个证书请求的系统子系统。使用这种身份验证方式时,servlet 在成功验证模块处理后将证书请求转发到请求队列。然后,在配置集处理和证书可以继续前,具有适当权限的代理必须单独批准每个请求。
- 消息摘要
- 请参阅 单向哈希。
N
- non-TMS
- 非令牌管理系统。指的是配置 无法直接 处理智能卡的子系统(CA 以及可选的 KRA 和 OCSP)。
参见令牌管理系统(TMS).
- nonrepudiation
- 无法由消息的发件人拒绝发送消息。数字签名 提供了一个非验证形式。
- 网络安全服务(NSS)
- 一组库,用于支持支持安全通信应用程序的跨平台开发。使用 NSS 库构建的应用程序支持 安全套接字层(SSL) 协议进行身份验证、tamper 检测和加密功能,以及用于加密令牌接口的 PKCS #11 协议。NSS 也作为软件开发套件单独提供。
O
- OCSP
- 在线证书状态协议.
- operation
- 在访问控制指令中允许或拒绝的特定操作,如读取或写入。
- output
- 在证书配置集功能的上下文中,它从成功注册特定证书配置文件时,定义结果形式。每个输出都会被设置,然后动态地从为此注册配置的所有输出动态创建表单。
- 单向哈希
- 1. 很多固定长度从任意长度的数据生成,并附带哈希算法。数字也称为消息摘要,对散列数据是唯一的。数据更改(即使删除或更改单个字符)都会获得不同的值。2.散列数据的内容无法从哈希中分离。
- 对象签名
- 一种文件签名方法,允许软件开发人员为 Java 代码、JavaScript 脚本或任何类型的文件进行签名,并允许用户识别信号,并通过签名的代码来控制对本地系统资源的访问。
- 对象签名证书
- 关联的私钥用于为对象签名的证书 ; 与 对象签名 相关。
P
- PKCS #10
- 公钥加密标准管理证书请求。
- PKCS #11
- 管理加密令牌的公钥加密标准,如智能卡。
- PKCS #11 模块
- 通过 PKCS #11 接口提供加密服务的加密设备的驱动程序,如加密和解密。PKCS #11 模块(也称为 加密模块或加密服务提供商 )可以在硬件或软件中实施。PKCS #11 模块总是有一个或多个插槽,可以以某种形式的物理读取形式实施为物理硬件插槽,比如用于智能卡或软件中概念的插槽。PKCS #11 模块的每个插槽可以依次包含一个令牌,这是实际提供加密服务并选择性地存储证书和密钥的硬件或软件设备。Red Hatnbsp;Hat 提供了一个内置的 PKCS #11 模块,它带有证书Certificate Systemnbsp;System.
- PKCS #12
- 公钥加密标准管理密钥可移植性。
- PKCS #7
- 管理签名和加密的公钥加密标准。
- public key
- 在公钥加密中使用的一对密钥之一。公钥可以自由发布,并作为 certificate 的一部分发布。它通常用来加密发送到公钥所有者的数据,然后使用对应的 私钥 解密数据。
- public-key cryptography
- 组成熟的技术和标准,允许实体以电子方式验证其身份或加密电子数据。两个密钥均涉及一个公钥和私钥。public key 作为证书的一部分发布,该证书将该密钥与特定身份关联。对应的私钥是保密的。使用公钥加密的数据只能使用该私钥解密。
- 公钥基础架构(PKI)
- 便于在网络环境中使用公钥加密和 X.509 v3 证书的标准和服务。
- 基于密码的身份验证
- 概念验证(POA)
- 使用私钥恢复认证机构传输密钥签名的数据,其中包含存档最终密钥的信息,包括密钥序列号、密钥恢复机构的名称、对应证书 主题名称 以及归档日期。签名的概念验证数据是密钥恢复授权机构在成功密钥存档操作后向证书管理器返回的响应。另请参阅 密钥恢复授权传输证书。
- 私钥
- 在公钥加密中使用的一对密钥之一。私钥被保留,用于解密使用对应 public key 加密的数据。
R
- RC2, RC4
- 由 Rivest 为 RSA 数据安全而开发的密码算法。另请参阅 cryptographic algorithm。
- RedRed Hat Certificate Systemnbsp;Hat CertificateRed Hat Certificate Systemnbsp;System
- Root CA
- RSA 密钥交换
- SSL 的密钥更改算法,基于 RSA 算法。
- RSA 算法
- 缩写为 Rivest-Shamir-Adleman,它是一个用于加密和身份验证的公共密钥算法。它是由 Ronald Rivest、Adi Shamir 和 Leonard Adleman 开发,于 1978 年推出。
- 注册
- 请参阅 enrollment。
S
- sandbox
- 针对 Java™ 代码必须操作的明确定义限制的 Java™ 术语。
- servlet
- 代表证书证书系统nbsp;System 子系统,处理特定类型与最终用户交互的 Java™ 代码。例如,证书注册、撤销和密钥恢复请求各自由单独的 servlet 处理。
- SHA
- 安全散列算法,由美国政府使用的哈希功能。
- slot
- PKCS #11 模块 的一部分,在包含 token 的硬件或软件中实施。
- SSL
- 请参阅 安全套接字层(SSL)。
- subject
- 由 certificate 标识的实体。特别是,证书的 subject 字段包含一个 主题名称,它唯一描述了已认证实体。
- subordinate CA
- 主题名称
- 单点登录
- 1. 在 CertificateCertificate Systemnbsp;System 中,该密码简化了到 Red Hat Certificate Systemnbsp 签名的密码;Hat Certificate Red Hat Certificate Systemnbsp;Hat Certificate Red Hat Certificate Systemnbsp;System by store password for internal database and tokens.每次用户登录时,都需要输入此单一密码。2.用户一次登录单个计算机,并由网络中的各种服务器自动进行身份验证。部分单点登录解决方案采用多种形式,包括自动跟踪用于不同服务器的密码的机制。证书支持 公钥基础架构(PKI) 中的单点登录。用户可以一次登录本地客户端的私钥数据库,只要客户端软件正在运行,则依靠 基于证书的验证 来访问该用户的机构中的每个服务器。
- 安全域
- PKI 子系统的集中存储库或清单。其主要目的是通过在子系统之间自动建立可信关系来促进新 PKI 服务的安装和配置。
- 安全套接字层(SSL)
- 允许在客户端和服务器间进行 mutual身份验证的协议,并建立经过身份验证的和加密连接。SSL 在 TCP/IP 和以下 HTTP、LDAP、IMAP、NNTP 和其他高级别网络协议上运行。
- 安全频道
- TPS 和智能卡间的安全关联,允许基于 TKS 和智能卡 APDU 生成的共享主密钥加密。
- 对称加密
- 使用同一加密密钥来加密和解密给定消息的加密方法。
- 智能卡
- 包含微处理器并存储加密信息(如密钥和证书)的小型设备,并执行加密操作。智能卡实现一些或所有 PKCS #11 接口。
- 服务器 SSL 证书
- 用来使用 安全套接字层(SSL) 协议将服务器标识到客户端的证书。
- 服务器身份验证
- 识别服务器到客户端的进程。另请参阅 客户端身份验证。
- 欺骗
- 刚开始成为其他人.例如,个人可以预告具有电子邮件地址 jdoe@example.com,或者计算机可以在不能识别为名为 www.redhat.com 的网站。欺骗是 impersonation 的一种形式。另请参阅 misrepresentation。
- 签名密钥
- 签名的审计日志
- 请参阅 审计日志。
- 签名算法
- 用于创建数字签名的加密算法。CertificateCertificate Systemnbsp;System 支持 MD5 和 SHA 签名算法。另请参阅 cryptographic algorithm、数字签名。
- 签名证书
- 公钥与用于创建数字签名的私钥对应的证书。例如,证书管理器必须具有其公钥与用于为其发出的证书签名的私钥的签名证书。
- 自我测试
- 测试证书证书系统空间的功能;当实例启动时和按需启动时,System 实例都会启动和按需。
T
- tamper 检测
- 确保以电子形式接收的数据的机制与同一数据的原始版本完全对应。
- token
- 与 slot 中的 PKCS #11 模块 关联的硬件或者软件设备。它提供了加密服务,并选择性地存储证书和密钥。
- trust
- 信心依赖个人或其他实体。在 公钥基础架构(PKI) 中,信任指的是证书的用户和签发证书的 证书颁发机构(CA) 之间的关系。如果 CA 受信任,则 CA 发布的有效证书可以被信任。
- 令牌处理系统(TPS)
- 直接与企业安全客户端和智能卡交互的子系统,以管理这些智能卡上的密钥和证书。
- 令牌密钥服务(TKS)
- 令牌管理系统中的子系统,根据智能卡 APDU 和其他共享信息为每个智能卡生成特定的密钥,如令牌 CUID。
- 令牌管理系统(TMS)
- 相互相关的子系统 - CA、TKS、TPS 以及可选的 KRA,用于管理智能卡(token)上的证书。
- 树结构
- LDAP 目录的分层结构。
V
- 虚拟专用网络(VPN)
- 连接企业地理距离的分部的方法。VPN 允许部门通过加密频道进行通信,从而允许验证的、通常仅限于私有网络的机密事务。
索引
符号
- 下载证书,在证书系统数据库中安装证书
- 为什么撤销证书,撤销证书的原因
- 主机名
- 用于通知的邮件服务器,为证书证书系统配置邮件服务器; 系统通知
- 代理
- 代理证书
- Request(请求),通过"最终用户"页面请求并接收证书
- 令牌
- 更改密码,更改令牌的密码
- 查看安装了哪些令牌,查看令牌
- 管理,管理由 子系统使用的令牌
- 令牌子系统
- Enterprise 安全客户端,CertificateCertificate Systemnbsp 的评论;系统 子系统
- 令牌密钥服务
- 令牌管理系统
- Enterprise 安全客户端,Enterprise 安全客户端
- 任务模块
- 注册新服务器,注册一个 Job 模块
- 传输证书,传输密钥对和证书
- deleting,从数据库中删除证书
- 更改 的信任设置,更改 CA 证书的信任设置
- 查看详情,通过控制台查看数据库内容
- 位置
- 活跃日志文件,配置子系统日志
- 使用映射程序
- CA 证书,LdapCaSimpleMap
- DN 组件,LdapDNCompsMap
- 停止
- 子系统实例,启动、停止和重启 PKI 实例
- 管理员的 sudo 权限,为证书证书 Systemnbsp 设置 sudo 权限; 系统服务
- 内部数据库
- defined,配置 LDAP 数据库
- schema,配置 LDAP 数据库
- 名称格式,限制对内部数据库的访问
- 如何与其他目录服务器实例进行区分,限制对内部数据库的访问
- 它的作用,配置 LDAP 数据库
- 安装的时间,配置 LDAP 数据库
- 默认主机名,更改内部数据库配置
- 更改主机名的前提,更改内部数据库配置
- 刷新日志间隔,buffered 和 Unbuffered Logging
- 加密的文件系统(EFS),扩展密钥使用扩展默认值
- 发布目录
- defined,LDAP 发布
- 发布程序模块
- deleting,注册自定义映射程序和发布程序插件模块
- 注册新服务器,注册自定义映射程序和发布程序插件模块
- 发布队列,启用发布队列
- 启用,启用发布队列
- 可以发布到的发布程序
- CA 的条目位于 目录中,LdapCaCertPublisher,LdapCrlPublisher,LdapCertificatePairPublisher
- files,FileBasedPublisher
- OCSP 响应器,OCSPPublisher
- 目录中的用户条目,LdapUserCertPublisher
- 可信管理器
- deleting,删除证书证书系统启动; 系统用户
- modifying
- 组成员资格,更改组中的成员
- 名称扩展模块
- 签发者备用名称,签发者备用名称扩展默认值
- 启动
- 子系统实例,启动、停止和重启 PKI 实例
- 没有 java 安全管理器,在不使用 Java 安全管理器的情况下启动 subsystem 实例
- 管理员的 sudo 权限,为证书证书 Systemnbsp 设置 sudo 权限; 系统服务
- 命令行工具
- 命名规则
- 对于内部数据库实例,限制对内部数据库的访问
- 在线证书状态管理器
- administrators
- 创建,创建用户
- 代理
- 创建,创建用户
- 密钥对和证书
- SSL 服务器证书,SSL 服务器密钥对和证书
- 子系统证书,子系统证书
- 签名证书,OCSP 签名密钥对和证书
- 基于文件的发布程序,FileBasedPublisher
- 备份证书系统,备份和恢复证书证书证书nbsp;系统
- 如何撤销证书,撤销证书的原因
- 子系统证书,子系统证书,子系统证书,子系统证书
- 存储密钥对,存储密钥对
- 安装证书,在证书系统数据库中安装证书
- 审核员
- 创建,创建用户
- 审计日志
- defined,事务日志
- 密钥恢复授权
- 归档
- 轮转日志文件,日志文件轮转
- 恢复证书系统,备份和恢复实例目录
- 扩展密钥使用扩展
- 加密文件系统的 OID,扩展密钥使用扩展默认值
- 插件模块
- 对于 CRL 扩展
- CRLReason,最新的 CRL 扩展默认值
- 用于发布
- FileBasedPublisher,FileBasedPublisher
- LdapCaCertPublisher,LdapCaCertPublisher,LdapCertificatePairPublisher
- LdapCaSimpleMap,LdapCaSimpleMap
- LdapCrlPublisher,LdapCrlPublisher
- LdapDNCompsMap,LdapDNCompsMap
- LdapUserCertPublisher,LdapUserCertPublisher
- OCSPPublisher,OCSPPublisher
- 用于调度任务
- unpublishExpiredCerts,unpublishExpiredCerts (UnpublishExpiredJob)
- 签发者备用名称,签发者备用名称扩展默认值
- 撤销证书
- 撤销证书的原因,撤销证书的原因
- 日志模块
- 映射器模块
- deleting,注册自定义映射程序和发布程序插件模块
- 注册新服务器,注册自定义映射程序和发布程序插件模块
- 更改
- 组成员,更改组中的成员
- 证书中的信任设置,更改 CA 证书的信任设置
- 您为什么会改变,更改 CA 证书的信任设置
- 最终用户证书
- 续订,配置配置集以启用续订
- 最终用户证书发布者,LdapUserCertPublisher
- 未缓冲的日志记录,buffered 和 Unbuffered Logging
- 注册
- 代理启动,证书调用页
- 任务模块,注册一个 Job 模块
- 发布程序模块,注册自定义映射程序和发布程序插件模块
- 日志模块,管理日志模块
- 映射器模块,注册自定义映射程序和发布程序插件模块
- 自定义 OID,标准 X.509 v3 证书扩展参考
- 身份验证模块,注册自定义身份验证插件
- 活跃日志
- 消息类别,Are Logged 的服务
- 默认文件位置,配置子系统日志
- 添加
- extensions
- CRL,设置 CRL 扩展
- 特权用户
- deleting,删除证书证书系统启动; 系统用户
- 修改权限
- 组成员资格,更改组中的成员
- 类型
- 代理,代理
- 用于通知的邮件服务器,为证书证书系统配置邮件服务器; 系统通知
- 用户证书
- Request(请求),通过"最终用户"页面请求并接收证书
- 目录
- 签名
- 轮转日志文件,签名日志文件
- 签名算法,为证书设置签名算法
- 签名证书,OCSP 签名密钥对和证书
- deleting,从数据库中删除证书
- nickname,OCSP 签名密钥对和证书
- 更改 的信任设置,更改 CA 证书的信任设置
- 查看详情,通过控制台查看数据库内容
- 管理
- 证书数据库,管理证书数据库
- 缓冲的日志,buffered 和 Unbuffered Logging
- 网桥证书,使用跨Pair 证书
- 联邦网桥证书颁发机构,使用跨Pair 证书
- 计时日志轮转,日志文件轮转
- 设置 CRL 扩展,设置 CRL 扩展
- 证书
- 发布到 LDAP 目录
- 所需的 schema,配置 LDAP 目录
- 发布到文件,发布到文件
- 如何撤销,撤销证书的原因
- 安装,在证书系统数据库中安装证书
- 扩展,在 CA 证书中设置限制 ,证书和 CRL 的默认、限制和扩展
- 撤销原因,撤销证书的原因
- 签名算法,为证书设置签名算法
- 证书撤销
- 证书数据库
- 证书管理器
- administrators
- 创建,创建用户
- 代理
- 创建,创建用户
- 发布目录的手动更新,更新目录中的证书和 CRL
- 密钥对和证书
- CA 签名证书,CA 签名密钥对和证书
- OCSP 签名证书,OCSP 签名密钥对和证书
- SSL 服务器证书,SSL 服务器密钥对和证书
- TLS CA 签名证书,OCSP 签名密钥对和证书
- 子系统证书,子系统证书
- 序列号范围,在签发者证书上更改 CA 的限制
- 配置
- 通知的 SMTP 设置,为证书证书系统配置邮件服务器; 系统通知
- 证书系统
- 证书系统控制台
- Status 选项卡,将 pkiconsole 用于 CA、OCSP、KRA 和 TKS Subsystems
- 管理日志,在控制台中查看日志
- 配置标签页,将 pkiconsole 用于 CA、OCSP、KRA 和 TKS Subsystems
- 配置身份验证,设置基于目录的身份验证,设置基于 PIN 的注册
- 证书系统数据
- 它存储在的位置,配置 LDAP 数据库
- 证书续订,配置配置集以启用续订
- 证书设置向导
- 证书配置集
- 签名算法,为证书设置签名算法
- 证书链
- 请求证书
- CA 签名证书,通过控制台请求证书
- CRL 签名证书,通过控制台请求证书
- ECC 证书,创建证书签名请求
- KRA 传输证书,通过控制台请求证书
- OCSP 签名证书,通过控制台请求证书
- SSL 客户端证书,通过控制台请求证书
- SSL 服务器证书,通过控制台请求证书
- 代理证书,通过"最终用户"页面请求并接收证书
- 使用 certutil,创建证书签名请求
- 在终端页面,通过"最终用户"页面请求并接收证书
- 用户证书,通过"最终用户"页面请求并接收证书
- 通过控制台,通过控制台请求证书
- 跨对证书,使用跨Pair 证书
- 身份验证
- 在证书撤销过程中,用户初始化的调用
- 通过控制台管理,设置基于 PIN 的注册
- 身份验证模块
- deleting,注册自定义身份验证插件
- 代理启动的用户注册,证书调用页
- 注册新服务器,注册自定义身份验证插件
- 轮转日志文件
- 过期的证书
- 配置标签页,将 pkiconsole 用于 CA、OCSP、KRA 和 TKS Subsystems
- 重启
- 子系统实例,启动、停止和重启 PKI 实例
- 没有 java 安全管理器,在不使用 Java 安全管理器的情况下启动 subsystem 实例
- 管理员的 sudo 权限,为证书证书 Systemnbsp 设置 sudo 权限; 系统服务
- 错误日志
- defined,Tomcat 错误和访问日志
A
- administrators
- deleting,删除证书证书系统启动; 系统用户
- modifying
- 组成员资格,更改组中的成员
- sudo 权限,为证书证书 Systemnbsp 设置 sudo 权限; 系统服务
- 创建,创建用户
- 提供的工具
- authorityInfoAccess,authorityInfoAccess
- authorityKeyIdentifier,在 CA 证书中设置限制 ,authorityKeyIdentifier,authorityKeyIdentifier
B
- backups,备份和恢复证书证书证书nbsp;系统
- base-64 编码文件
- 查看内容,查看证书和 CRLs 发布到文件
- basicConstraints,basicConstraints
C
- CA
- SCEP 设置,配置 SCEP 安全设置
- 启用 SCEP 注册,启用 SCEP 注册
- 配置 ECC 签名算法,为证书设置签名算法
- CA 签名证书,CA 签名密钥对和证书
- deleting,从数据库中删除证书
- nickname,CA 签名密钥对和证书
- Request(请求),通过控制台请求证书
- 更改 的信任设置,更改 CA 证书的信任设置
- 查看详情,通过控制台查看数据库内容
- CA 证书发布程序,LdapCaCertPublisher,LdapCertificatePairPublisher
- CA 证书映射程序,LdapCaSimpleMap
- certificate
- 查看内容,查看证书和 CRLs 发布到文件
- certificateIssuer,certificateIssuer
- certificatePolicies,certificatePoliciesExt
- certutil
- 请求证书,创建证书签名请求
- CRL
- defined,关于撤销证书
- 发布,关于撤销证书
- 发布到 LDAP 目录,发布 CRL,LDAP 发布
- 所需的 schema,配置 LDAP 目录
- 发布到文件,发布到文件
- 发布或发布点,CRL 签发点
- 扩展,标准 X.509 v3 CRL 扩展参考
- 支持的扩展,关于撤销证书
- 查看内容,查看证书和 CRLs 发布到文件
- 特定于扩展的模块,关于 CRL 扩展
- 生成的时间,关于撤销证书
- 自动更新需要时,关于撤销证书
- 谁生成它,关于撤销证书
- 输入多个更新时间,为每个发行点配置 CRL
- 输入更新周期,为每个发行点配置 CRL
- CRL Distribution Point 扩展,CRL 签发点
- CRL publisher,LdapCrlPublisher
- CRL 扩展模块
- CRLReason,最新的 CRL 扩展默认值
- CRL 签名证书,关于撤销证书
- Request(请求),通过控制台请求证书
- cRLDistributionPoints,CRLDistributionPoints
- CRLNumber,CRLNumber
- CRLReason,CRLReason
D
- deleting
- 发布程序模块,注册自定义映射程序和发布程序插件模块
- 日志模块,管理日志模块
- 映射器模块,注册自定义映射程序和发布程序插件模块
- 特权用户,删除证书证书系统启动; 系统用户
- 身份验证模块,注册自定义身份验证插件
- deltaCRLIndicator,deltaCRLIndicator
- DER 编码文件
- 查看内容,查看证书和 CRLs 发布到文件
- DN 组件映射程序,LdapDNCompsMap
E
- ECC
- Enterprise 安全客户端,Enterprise 安全客户端
- extensions,在 CA 证书中设置限制 ,证书和 CRL 的默认、限制和扩展
- authorityInfoAccess,authorityInfoAccess
- authorityKeyIdentifier,在 CA 证书中设置限制 ,authorityKeyIdentifier,authorityKeyIdentifier
- basicConstraints,basicConstraints
- CA 证书和,在 CA 证书中设置限制
- certificateIssuer,certificateIssuer
- certificatePolicies,certificatePoliciesExt
- cRLDistributionPoints,CRLDistributionPoints
- CRLNumber,CRLNumber
- CRLReason,CRLReason
- deltaCRLIndicator,deltaCRLIndicator
- extKeyUsage,extKeyUsage
- invalidityDate,invalidityDate
- issuerAltName,issuerAltName 扩展,issuerAltName
- issuingDistributionPoint,issuingDistributionPoint
- keyUsage,keyUsage
- nameConstraints,nameConstraints
- netscape-cert-type,netscape-cert-type
- Netscape-defined,Netscape-Defined Certificate Extensions 参考
- policyConstraints,policyConstraints
- policyMappings,policyMappings
- privateKeyUsagePeriod,privateKeyUsagePeriod
- subjectAltName,subjectAltName
- subjectDirectoryAttributes,subjectDirectoryAttributes
- X.509 CRL,总结,标准 X.509 v3 CRL 扩展参考
- X.509 证书,总结,标准 X.509 v3 证书扩展参考
- 例如,标准 X.509 v3 证书扩展参考
- 加入工具,请求签名证书,请求其他证书
- 生成工具,请求签名证书,请求其他证书
- extKeyUsage,extKeyUsage
G
- groups
- 更改成员,更改组中的成员
I
- invalidityDate,invalidityDate
- IPv6
- 和 SCEP 证书,为路由器生成 SCEP 证书
- issuerAltName,issuerAltName 扩展,issuerAltName
- issuingDistributionPoint,issuingDistributionPoint
J
- jobs
- 与插件实现相比,关于自动任务
- 内置模块
- unpublishExpiredCerts,unpublishExpiredCerts (UnpublishExpiredJob)
- 打开调度程序,设置作业调度程序
- 指定调度,自动任务的频率设置
- 设置频率,设置作业调度程序
- 配置作业通知消息,自定义 CA 通知消息,设置自动化任务
L
- LDAP 发布
- defined,LDAP 发布
- 手动更新,更新目录中的证书和 CRL
- 何时执行,手动更新目录中的证书
- 谁可以做到这一点,更新目录中的证书和 CRL
- logging
- 从证书系统控制台管理,在控制台中查看日志
- 日志文件
- 日志的类型,配置子系统日志
- Audit,事务日志
- Error,Tomcat 错误和访问日志
- 日志级别,日志级别(Message Categories)
- 它们与消息类别相关,日志级别(Message Categories)
- 选择正确的等级,日志级别(Message Categories)
- 默认选择,日志级别(Message Categories)
- 缓冲与未缓冲,buffered 和 Unbuffered Logging
- 记录的服务,Are Logged 的服务
M
- mappers
- 在安装过程中创建,创建映射程序,LdapCaSimpleMap,LdapSimpleMap
- modifying
- 特权用户的组成员资格,更改组中的成员
N
- nameConstraints,nameConstraints
- netscape-cert-type,netscape-cert-type
- nickname
- 对于 CA 签名证书,CA 签名密钥对和证书
- 对于 OCSP 签名证书,OCSP 签名密钥对和证书
- 对于 SSL 服务器证书,SSL 服务器密钥对和证书,SSL 服务器密钥对和证书
- 对于 TLS 签名证书,OCSP 签名密钥对和证书
- 对于签名证书,OCSP 签名密钥对和证书
- 用于子系统证书,子系统证书,子系统证书,子系统证书
- notifications
- 到有关未发布证书的代理,unpublishExpiredCerts (UnpublishExpiredJob)
- 配置邮件服务器
- hostname,为证书证书系统配置邮件服务器; 系统通知
- port,为证书证书系统配置邮件服务器; 系统通知
O
- OCSP publisher,OCSPPublisher
- OCSP 签名证书,OCSP 签名密钥对和证书
- nickname,OCSP 签名密钥对和证书
- Request(请求),通过控制台请求证书
P
- PIN Generator 工具
- 向用户提供 PIN,设置基于 PIN 的注册
- policyConstraints,policyConstraints
- policyMappings,policyMappings
- ports
- 用于通知的邮件服务器,为证书证书系统配置邮件服务器; 系统通知
- privateKeyUsagePeriod,privateKeyUsagePeriod
- profiles
- 配置集如何工作 ,注册配置集
- publishers
- publishing
S
- SCEP
- 使用单独的身份验证证书,配置 SCEP 安全设置
- 启用,启用 SCEP 注册
- 设置允许的算法,配置 SCEP 安全设置
- 设置非大小,配置 SCEP 安全设置
- SCEP 证书
- and IPv6,为路由器生成 SCEP 证书
- SMTP 设置,为证书证书系统配置邮件服务器; 系统通知
- SSL 客户端证书
- Request(请求),通过控制台请求证书
- SSL 服务器证书,SSL 服务器密钥对和证书,SSL 服务器密钥对和证书
- deleting,从数据库中删除证书
- nickname,SSL 服务器密钥对和证书,SSL 服务器密钥对和证书
- Request(请求),通过控制台请求证书
- 更改 的信任设置,更改 CA 证书的信任设置
- 查看详情,通过控制台查看数据库内容
- Status 选项卡,将 pkiconsole 用于 CA、OCSP、KRA 和 TKS Subsystems
- subjectAltName,subjectAltName
- subjectDirectoryAttributes,subjectDirectoryAttributes
- subjectKeyIdentifier
- subjectKeyIdentifier,subjectKeyIdentifier
- sudo
T
- templates
- 对于通知,自定义 CA 通知消息
- TLS CA 签名证书,OCSP 签名密钥对和证书
- nickname,OCSP 签名密钥对和证书
- TPS
- users,为 TPS 创建和管理用户
- 设置配置集,为用户设置配置集
U
- users
- 创建,创建用户
附录 F. 修订历史记录
修订历史 | |||
---|---|---|---|
修订 9.7-0 | Tue Sep 29 2020 | ||
| |||
修订 9.6-0 | Wed Sep 16 2020 | ||
| |||
修订 9.5-0 | Tue Aug 06 2019 | ||
| |||
修订 9.4-0 | Thu Oct 25 2018 | ||
| |||
修订 9.3-1 | Thu May 03 2018 | ||
| |||
修订 9.3-0 | Tue Apr 10 2018 | ||
| |||
修订 9.2-0 | Tue Aug 01 2017 | ||
| |||
修订 9.1-1 | Thu Mar 09 2017 | ||
| |||
修订 9.1-0 | Mon Aug 15 2016 | ||
| |||
修订 9.0-0 | Mon Aug 15 2016 | ||
|