B.2.11. 主题名称约束

Subject Name 约束会检查证书请求中的主题名称是否满足条件。

表 B.32. subject Name Constraint 配置参数

参数 描述
pattern 指定用于构建主题 DN 的正则表达式或其他字符串。

主题名称和正则表达式

Subject Name Constraint 的正则表达式与匹配正则表达式的 Java 工具匹配。这些正则表达式的格式列在 中 https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html。这允许通配符(如星号(1))搜索任意字符和句点(.)搜索任何类型字符。

例如,如果主题名称约束的模式设置为 uid=.*,则证书配置集框架会检查证书请求中的主题名称是否与模式匹配。uid=user、o=Example、c=US 满足模式 uid=.* 等主题名称。subject name cn=user, o=example,c=US 不满足该模式。UID=.* 表示主题名称必须以 uid 属性开头; period-asterisk(.*)通配符允许任何 type 和 uid 后面的字符数。
可能需要内部模式,如 .*ou=Engineering.*,它要求带有任意字符串的 ou=Engineering 属性。这会显示 cn=jdoe,ou=internal,ou=west coast,ou=engineering,o="Example Corp",st=NC 以及 uid=bjensen,ou=engineering,dc=example,dc=com
最后,也可以通过在选项间设置管道符号(|)来允许作为字符串或另一个字符串的请求。例如,要允许包含 ou=engineering ,ou=engineering, ou= engineering,o="Example Corp" 的主题名称,其模式是 .*ou=engineering,ou= people.* | .*ou=engineering,o="Example Corp".*.
注意
对于构造使用特殊字符的模式,如句点(),请使用反斜杠\转义字符。 例如,要搜索字符串 o="Example Inc.",请将特征设置为 o="Example Inc\. "。

证书请求中的 subject Name 和 UID 或 CN

用于构建主题 DN 的模式也可以基于请求证书的用户的 CN 或 UID。Subject Name Constraint 设置 CN(或 UID)的 patter,以在证书请求的 DN 中识别,然后在该 CN 上构建 Subject Name Default 构建,以使用预定义的目录树创建证书的主题 DN。

例如,使用证书请求的 CN:
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