C.2. 映射程序插件模块
本节论述了为证书管理器提供的映射程序插件模块。这些模块配置证书管理器以启用和配置特定的映射程序实例。
可用的映射程序插件模块包括:
C.2.1. LdapCaSimpleMap
LdapCaSimpleMap 插件模块将证书管理器配置为自动在 LDAP 目录中为 CA 创建条目,然后通过从证书请求、证书主题名称、证书扩展、证书扩展和属性变量断言(AVA)来声明条目的 DN 来将 CA 的证书映射到目录条目。有关 AVAs 的更多信息,请查看目录文档。
CA 证书映射程序指定是否为 CA 创建条目,将证书映射到现有条目,还是同时执行。
如果发布目录中已存在 CA 条目,并且分配给该映射器的 dnPattern 参数的值已更改,但 uid 和 o 属性相同,则映射器无法创建第二个 CA 条目。例如,如果目录已经具有 uid=CA,ou=Marketing,o=example.com 的 CA 条目,并且将映射器配置为创建另一个带有 uid=CA,ou=Engineering,o=example.com 的 CA 条目,则操作会失败。
操作可能会失败,因为目录会将 UID 唯一 插件设置为特定的基本 DN。此设置可防止目录在该基本 DN 下有两个带有相同 UID 的条目。在本例中,它可防止目录在 o=example.com 下有两个条目,它们具有相同的 UID CA。
如果映射器无法创建第二个 CA 条目,请检查设置 UID 唯一插件的基本 DN,并检查目录中是否已存在具有相同 UID 的条目。如有必要,调整 mapper 设置,删除旧的 CA 条目,注释掉插件,或者手动创建条目。
- 用于 CRL 的 LdapCrlMap (请参阅 第 C.2.1.2 节 “LdapCrlMap”)
- CA 证书的 LdapCaCertMap (请参阅 第 C.2.1.1 节 “LdapCaCertMap”)。
参数 | 描述 |
---|---|
createCAEntry |
如果选中(默认)创建 CA 条目。
如果选中,证书管理器首先会尝试在目录中为 CA 创建条目。如果证书管理器在创建条目中成功,它会尝试将 CA 的证书发布到该条目。如果没有选择此项,则必须已存在该条目才能发布到该条目。
|
dnPattern |
指定证书管理器应该用来在发布目录中搜索 CA 条目的 DN 模式。dnPattern 的值可以是用逗号分开的 AVAs 列表。AVA 可以是变量,如 cn=$subj.cn,证书管理器可以从证书主题名称或常量生成,如 o=Example 公司。
如果 CA 证书在其主题名称中没有 cn 组件,请调整 CA 证书映射 DN 模式,以反映要发布 CA 证书的目录中的 DN。例如,如果 CA 证书主题 DN 是 o=Example 公司,目录中的 CA 条目是 cn=Certificate Authority, o=Example 公司,则模式为 cn=Certificate Authority, o=$subj.o。
在上例中,$req 从证书请求中获取属性,$subj 从证书主题名称获取属性,$ext 从证书扩展中获取属性。
|
C.2.1.1. LdapCaCertMap
LdapCaCertMap mapper 是 LdapCaSimpleMap 模块的实例。证书管理器在安装过程中自动创建此映射程序。
此映射器在目录中为 CA 创建一个条目,并将 CA 证书映射到目录中的 CA 条目。
默认情况下,映射程序配置为在目录中为 CA 创建条目,用于查找 CA 条目的默认 DN 模式如下:
uid=$subj.cn,ou=people,o=$subj.o
C.2.1.2. LdapCrlMap
LdapCrlMap mapper 是 LdapCaSimpleMap 模块的实例。证书管理器在安装过程中自动创建此映射程序。
此映射器在目录中为 CA 创建一个条目,并将 CRL 映射到目录中的 CA 条目。
默认情况下,映射程序配置为在目录中为 CA 创建条目。查找 CA 条目的默认 DN 模式如下:
uid=$subj.cn,ou=people,o=$subj.o
C.2.2. LdapDNExactMap
LdapDNExactMap 插件模块将证书管理器配置为通过搜索与证书主题名称匹配的 LDAP 条目 DN 来将证书映射到 LDAP 目录条目。要使用此映射程序,每个证书主题名称必须与目录条目中的 DN 完全匹配。例如,如果证书主题名称为 uid=jdoe、o=Example 公司、c=US,在搜索条目的目录时,证书管理器仅搜索 DN uid=jdoe、o=Example 公司、c=US 的条目。
如果没有找到匹配的条目,服务器会返回错误,且不会发布证书。
此映射程序不需要任何参数的任何值,因为它从证书获取所有值。
C.2.3. LdapSimpleMap
LdapSimpleMap 插件模块将证书管理器配置为通过从证书请求中指定的组件派生条目、证书名称、证书扩展和属性变量断言(AVA)来将证书映射到 LDAP 目录条目。有关 AVAs 的更多信息,请参阅 目录文档。
默认情况下,证书管理器使用基于简单映射程序的映射程序规则。在安装过程中,证书管理器会自动创建一个简单映射程序模块实例,名为 LdapUserCertMap。默认映射程序将各种类型的最终用户证书映射到对应的目录条目。
简单映射程序需要一个参数 dnPattern。dnPattern 的值可以是用逗号分开的 AVAs 列表。AVA 可以是变量,如 uid=$subj.UID,也可以是常量,如 o=Example 公司。
- 示例 1: uid=CertMgr, o=Example
- 示例 2: cn=$subj.cn,ou=$subj.ou,o=$subj.o,c=US
- Example 3: uid=$req.HTTP_PARAMS.uid, e=$ext.SubjectAlternativeName.RFC822Name,ou=$subj.ou
在示例中,$req 从证书请求中获取属性,$subj 从证书主题名称获取属性,$ext 从证书扩展中获取属性。
C.2.4. LdapSubjAttrMap
LdapSubjAttrMap 插件模块配置证书管理器,以使用可配置的 LDAP 属性将证书映射到 LDAP 目录条目。要使用此映射程序,目录条目必须包含指定的 LDAP 属性。
此映射器需要主题 DN 的确切模式,因为证书管理器在目录中搜索与整个主题 DN 完全匹配的值的属性。例如,如果指定的 LDAP 属性是 certSubjectDN,证书主题名称为 uid=jdoe、o=Example 公司、c=US,则证书管理器搜索具有属性 certSubjectDN=uid=jdoe、o=Example 公司、c=US 的条目。
如果没有找到匹配的条目,服务器会返回错误并将其写入日志中。
参数 | 描述 |
---|---|
certSubjNameAttr | 指定包含证书主题名称的 LDAP 属性的名称作为其值。默认为 certSubjectName,但这可以配置为任何 LDAP 属性。 |
searchBase | 指定启动属性搜索的基本 DN。允许的值是 LDAP 条目的有效 DN,如 o=example.com、c=US。 |
C.2.5. LdapDNCompsMap
LdapDNCompsMap 插件模块实现 DN 组件映射器。此映射程序通过从组件构建条目的 DN 来将证书映射到 LDAP 目录条目,如 cn、ou、o 和 c,然后在证书主题名称中指定,然后使用它作为搜索 DN 在目录中查找条目。映射程序找到以下条目:
- 用于发布 CA 证书和 CRL 的目录中的 CA 条目。
- 用于发布最终用户证书的目录中的最终用户条目。
映射程序采用 DN 组件来构建搜索 DN。映射程序也采用可选的 root 搜索 DN。服务器使用 DN 组件组成 LDAP 条目以开始子树搜索和过滤器组件,以组成子树的搜索过滤器。如果没有配置 DN 组件,服务器将使用基本 DN 进行子树。如果基础 DN 为 null 且没有 DN 组件匹配,则返回错误。如果没有 DN 组件和过滤组件匹配,则返回错误。如果过滤器组件为 null,则会执行基础搜索。
DNComps 和 filterComps 参数接受有效的 DN 组件或用逗号分隔的属性。参数不接受属性的多个条目;例如,filterComps 可以设置为 cn,ou 2,ou1。要使用相同属性的多个实例创建过滤器,如如果目录条目包含多个 ou s,请修改 LdapDNCompsMap 模块的源代码。
以下组件通常在 DN 中使用:
- UID 代表目录中用户的用户 ID。
- cn 代表目录中用户的通用名称。
- ou 代表目录中的组织单元。
- o 代表目录中的一个机构。
- l 代表本地性(城市)。
- st 代表状态。
- c 代表国家/地区。
例如,以下 DN 代表名为 Jane Doe 的用户,其适用于示例公司(位于 美国 加利州)的销售部门:
cn=Jane Doe, ou=Sales, o=Example Corporation, l=Mountain View, st=California, c=US
证书管理器可以使用其中一些或全部组件(cn、ou、o、l、st、c)来构建用于搜索目录的 DN。在创建映射程序规则时,可以为服务器指定用于构建 DN 的服务器;即,与目录中属性匹配的组件。这通过 dnComps 参数设置。
例如,组件 cn、ou、o 和 c 设置为 dnComps 参数的值。要在目录中找到 Jane Doe 条目,证书管理器通过从证书读取 DN 属性值来构建以下 DN,并使用 DN 作为搜索目录的基础:
cn=Jane Doe, ou=Sales, o=Example Corporation, c=US
- 主题名称不需要在 dnComps 参数指定所有组件。服务器忽略不属于主题名称的任何组件,如本例中的 l 和 st。
- 未指定组件不用于构建 DN。在示例中,如果没有包含 ou 组件,服务器使用这个 DN 作为搜索目录的基础:
cn=Jane Doe, o=Example Corporation, c=US
对于 dnComps 参数,请输入这些 DN 组件,证书管理器可用于精确组成 LDAP DN。然而,在某些情况下,证书中的主题名称可能与目录中的多个条目匹配。然后,证书管理器可能没有获得与 DN 不同的单个匹配条目。例如,主题名称 cn=Jane Doe, ou=sales, o=Example 公司, c=US 可能与两个名为 Jane Doe 的用户匹配。如果发生了这种情况,证书管理器需要额外的条件来确定哪个条目与证书的主题对应。
要指定证书管理器必须用来区分目录中的不同条目的组件,请使用 filterComps 参数;详情请参阅 表 C.10 “LdapDNCompsMap 配置参数”。例如,如果 cn、ou、o 和 c 是 dnComps 参数的值,则仅在 l 属性可用于区分具有相同 cn、ou、o 和 c 值的条目时,才会为 filterComps 参数输入 l。
如果两个 Jane Doe 条目由 uid 属性的值区分 - 一个条目的 uid 是 janedoe1,其他条目的 uid 为 janedoe2 - 证书的主题名称可以设置为包含 uid 组件。
注意
e、l 和 st 组件不包含在为结束实体提供的标准证书请求表单中。这些组件可以添加到表单中,或者在以证书颁发形式编辑主题名称时插入这些组件。
C.2.5.1. LdapDNCompsMap 的配置参数
使用这个配置,证书管理器通过使用 dnComps 值形成 DN 和 filterComps 值,将证书与 LDAP 目录中的证书映射,以形成子树的搜索过滤器。
- 如果 formed DN 为 null,服务器将使用 baseDN 值作为子树。如果被组成的 DN 和基本 DN 都为空,服务器会记录错误。
- 如果过滤器为 null,服务器将使用 baseDN 值进行搜索。如果过滤器和基本 DN 都为空,服务器会记录错误。
表 C.10 “LdapDNCompsMap 配置参数” 描述这些参数。
参数 | 描述 |
---|---|
baseDN | 指定开始搜索发布目录中条目的 DN。如果 dnComps 字段为空,服务器将使用基本 DN 值在目录中启动其搜索。 |
dnComps |
指定证书管理器应开始搜索与 CA 或结束实体信息匹配的 LDAP 条目的位置。
例如,如果 dnComps 使用 DN 的 o 和 c 属性,服务器会从目录中的 o=org,c=country 条目启动搜索,其中 org 和 country 将被替换为证书中 DN 的值。
如果 dnComps 字段为空,服务器将检查 baseDN 字段,并在 DN 中搜索与 filterComps 参数值指定的过滤器匹配的目录树。
允许的值是有效的 DN 组件或用逗号分开的属性。
|
filterComps |
指定证书管理器应用于过滤搜索结果中的条目的组件。服务器使用 filterComps 值组成子树的 LDAP 搜索过滤器。服务器通过从证书主题名称收集这些属性的值来构建过滤器;它使用过滤器搜索和匹配 LDAP 目录中的条目。
如果服务器在目录中找到多个与从证书收集的信息匹配的条目,搜索可以成功,并且服务器可以选择执行验证。例如,如果 filterComps 设为使用电子邮件和用户 ID 属性(filterComps=e,uid),服务器将搜索目录,其值为电子邮件和用户 ID 的值与从证书收集的信息匹配。
允许的值是以逗号分开的证书 DN 中的有效目录属性。过滤器的属性名称需要来自证书的属性名称,而不是来自 LDAP 目录中的属性名称。例如,大多数证书都有用户电子邮件地址的 e 属性;LDAP 调用该属性 mail。
|