3.7. 管理主题名称和主题备用名称
证书的主题名称是 可分辨名称(DN),包含识别签发证书的实体的信息。此主题名称可以从标准 LDAP 目录组件构建,如通用名称和组织单元。这些组件在 X.500 中定义。除了 - 主题名称甚至代替 - 主题名称外,证书还可以具有 主题替代名称,这是包含 X.500 中未定义的额外信息的扩展类型。
可以自定义主题名称和主题备用名称的命名组件。
如果主题名称为空,则必须存在 Subject Alternative Name 扩展并标记为 critical。
3.7.1. 在主题名称中使用请求者 CN 或 UID 复制链接链接已复制到粘贴板!
证书请求的 cn 或 uid 值可用于构建签发的证书的主题名称。本节演示了一个配置集,它在证书请求中存在 Subject Name Constraint 中需要指定 naming 属性(CN 或 UID)。如果缺少 naming 属性,则请求将被拒绝。
此配置有两个部分:
-
CN 或 UID 格式在 Subject Name Constraint 中的
模式配置中设置。 - 主题 DN 的格式(包括 CN 或 UID 令牌)和证书的特定后缀在 Subject Name Default 中设置。
例如,要在主题 DN 中使用 CN:
在本例中,如果请求与 cn=John Smith 的 CN 中出现,则使用 cn=John Smith,DC=example, DC=com 的主题 DN 发布证书。如果请求进入,但 UID uid=jsmith 且没有 CN,则请求将被拒绝。
相同的配置用于将请求者 UID 拉取到主题 DN 中:
pattern 参数的格式包含在 第 B.2.11 节 “主题名称约束” 和 第 B.1.27 节 “主题名称默认” 中。
3.7.2. 将 LDAP 目录属性值和其他信息插入到 subject alt name 中 复制链接链接已复制到粘贴板!
可以使用 Subject Alt Name Extension Default 配置中的匹配变量,将来自 LDAP 目录或请求者提交的信息插入到证书的主题备用名称中。此默认设置信息的类型(格式),然后设置用于检索信息的匹配模式(variable)。例如:
这会插入请求者的电子邮件作为主题备用名称中的第一个 CN 组件。要使用其他组件,以数字方式递增 Type_、Pattern_ 和 Enable_ 值,如 Type_1。
另外,在 第 B.1.23 节 “主题备用名称扩展默认” 中还提供了配置主题备用名称。
将 LDAP 组件插入到证书的主题 alt 名称中:
插入 LDAP 属性值需要启用用户目录身份验证插件
SharedSecret。打开 CA 控制台。
pkiconsole https://server.example.com:8443/ca
pkiconsole https://server.example.com:8443/caCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意pkiconsole已被弃用。- 在左侧导航树中选择 Authentication。
-
在 Authentication Instance 选项卡中,点 ,并添加
SharedSecret身份验证插件的实例。 输入以下信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存新的插件实例。
有关设置 CMC 共享令牌的详情,请参考 第 11.4.2 节 “设置 CMC 共享 Secret”。
ldapStringAttributes参数指示身份验证插件从用户的 LDAP 条目读取mail属性的值,并将该值放在证书请求中。当值位于请求中时,证书配置文件策略可以设置为插入扩展值的值。dnpattern参数的格式包含在 第 B.2.11 节 “主题名称约束” 和 第 B.1.27 节 “主题名称默认” 中。要启用 CA 在证书扩展中插入 LDAP 属性值,请编辑配置集的配置文件,并为扩展插入策略设置参数。例如,要在
caFullCMCSharedTokenCert配置集中的 Subject Alternative Name 扩展中插入mail属性值,请更改以下代码:policyset.setID.8.default.params.subjAltExtPattern_0=$request.auth_token.mail[0]$
policyset.setID.8.default.params.subjAltExtPattern_0=$request.auth_token.mail[0]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关编辑配置集的详情,请参考 第 3.2.2.2 节 “使用原始格式编辑证书配置文件”。
重启 CA。
systemctl restart pki-tomcatd-nuxwdog@instance_name.service
# systemctl restart pki-tomcatd-nuxwdog@instance_name.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在本例中,通过 caFullCMCSharedTokenCert 配置文件注册表单提交的证书将添加 Subject Alternative Name 扩展,并添加了请求者的 mail LDAP 属性的值。例如:
Identifier: Subject Alternative Name - 2.5.29.17
Critical: no
Value:
RFC822Name: jsmith@example.com
Identifier: Subject Alternative Name - 2.5.29.17
Critical: no
Value:
RFC822Name: jsmith@example.com
通过将在策略集中的任何 Pattern_ 参数中设置为令牌($X$),可以将许多属性自动插入到证书中。常见令牌列在 表 3.1 “用于填充证书的变量” 中,默认配置集包含如何使用这些令牌的示例。
| 策略设置令牌 | 描述 |
|---|---|
| $request.auth_token.cn[0]$ |
请求证书的用户的 LDAP 通用名称( |
| $request.auth_token.mail[0]$ |
请求证书的用户的 LDAP 电子邮件( |
| $request.auth_token.tokencertsubject$ | 证书主题名称。 |
| $request.auth_token.uid$ |
请求证书的用户的 LDAP 用户 ID ( |
| $request.auth_token.userdn$ | 请求证书的用户的用户 DN。 |
| $request.auth_token.userid$ | 请求证书的用户的用户 ID 属性的值。 |
| $request.uid$ | 请求证书的用户的用户 ID 属性的值。 |
| $request.requestor_email$ | 提交请求的人员的电子邮件地址。 |
| $request.requestor_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。例如, |
3.7.3. 在 SAN 扩展中使用 CN 属性 复制链接链接已复制到粘贴板!
多个客户端应用程序和库不再支持将 Subject DN 的通用名称(CN)属性用于域名验证,该属性已在 RFC 2818 中弃用。相反,这些应用程序和库在证书请求中使用 dNSName Subject Alternative Name (SAN)值。
证书系统仅当与 RFC 1034 第 3.5 节中的首选名称语法匹配且具有多个组件时,才会复制 CN。此外,还会保留现有的 SAN 值。例如,基于 CN 的 dNSName 值会附加到现有 SAN 中。
要将证书系统配置为使用 SAN 扩展中的 CN 属性,请编辑用于发布证书的证书配置文件。例如:
禁用配置集:
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-disable profile_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑配置集:
pki -c password -p 8080 \ -n "PKI Administrator for example.com" ca-profile-edit profile_name# pki -c password -p 8080 \ -n "PKI Administrator for example.com" ca-profile-edit profile_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用配置集的唯一设置号添加以下配置。例如:
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
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 SubjectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上例使用
12作为集合号。将新策略设置号附加到
policyset.userCertSet.list参数。例如:policyset.userCertSet.list=1,10,2,3,4,5,6,7,8,9,12
policyset.userCertSet.list=1,10,2,3,4,5,6,7,8,9,12Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存配置集。
启用配置集:
pki -c password -p 8080 \ -n "PKI Administrator for example.com" ca-profile-enable profile_name# pki -c password -p 8080 \ -n "PKI Administrator for example.com" ca-profile-enable profile_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow
所有默认服务器配置文件都包含 commonNameToSANDefaultImpl 默认。
3.7.4. 接受 CSR 中的 SAN 扩展 复制链接链接已复制到粘贴板!
在某些环境中,管理员希望在证书签名请求(CSR)中指定主题备用名称(SAN)扩展。
3.7.4.1. 配置配置文件以从 CSR 检索 SAN 复制链接链接已复制到粘贴板!
要允许从 CSR 检索 SAN,请使用用户扩展默认值。详情请查看 第 B.1.32 节 “用户 Supplied 扩展默认”。
SAN 扩展可以包含一个或多个 SAN。
要接受来自 CSR 的 SAN,请在配置集中添加以下默认和约束,如 caCMCECserverCert :
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
# 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
生成 CSR 后,请按照 第 5.5.2 节 “CMC 注册过程” 中描述的步骤完成 CMC 注册。