证书映射用于确定服务器在 LDAP 目录中查找用户条目的方式。您可以使用 certmap.conf 文件配置证书(按名称指定)映射到 LDAP 条目的方式。您可以编辑此文件并添加条目,以匹配 LDAP 目录的组织和列出您希望用户拥有的证书。用户可以基于 subjectDN 中使用的用户 ID、电子邮件地址或任何其他值进行身份验证。具体而言,映射文件可定义以下信息:
服务器应从 LDAP 树中的哪个位置开始搜索
在 LDAP 目录中搜索条目时,服务器应用作搜索条件的证书属性
服务器是否要进行其他验证过程
server-root/userdb/certmap.conf
该文件包含了一个或多个已命名的映射,每个映射都应用于不同的 CA。映射的语法如下:
certmap name issuerDNname :property [ value]
第一行用于指定条目的名称以及形成 CA 证书中标识名的属性。name 是任意的,可以根据自己的喜好进行定义。但是,issuerDN 必须与颁发客户机证书的 CA 的颁发者 DN 完全匹配。例如,以下两个颁发者 DN 行仅在分隔属性的空格上有所差异,但服务器将其视为两个不同的条目:
certmap sun1 ou=Sun Certificate Authority,o=Sun,c=UScertmap sun2 ou=Sun Certificate Authority, o=Sun, c=US
如果使用的是 Sun Java System Directory Server 并在匹配颁发者 DN 时遇到问题,请检查 Directory Server 错误日志中是否存在有用的信息。
已命名的映射中的第二行和随后的行将属性与值相匹配。certmap.conf 文件中包含六个默认属性。您也可以使用证书 API 自定义属性。默认属性包括:
DNComps 是一系列以逗号分隔的属性,用于确定服务器应从 LDAP 目录何处开始搜索匹配用户(即客户机证书的所有者)信息的条目。服务器从客户机证书中收集这些属性的值,并用这些值形成 LDAP DN,然后即可确定服务器从 LDAP 目录的哪个位置开始其搜索。例如,如果将 DNComps 设置为使用 DN 的 o 和 c 属性,服务器将从 LDAP 目录中的 o=org, c= country 条目开始搜索,其中 org 和 country 将替换为证书中 DN 的值。
请注意以下情况:
如果映射中不存在 DNComps 条目,服务器将使用 CmapLdapAttr 设置或客户机证书中的整个主题 DN(即最终用户的信息)。
如果 DNComps 条目存在但没有对应的值,服务器将在整个 LDAP 树中搜索匹配过滤器的条目。
FilterComps 是一系列逗号分隔的属性,用于通过收集客户机证书中用户 DN 的信息来创建过滤器。服务器将使用这些属性的值,以形成用于匹配 LDAP 目录中各条目的搜索条件。如果服务器在 LDAP 目录中找到了一个或多个与从证书中收集到的用户信息相匹配的条目,这表示搜索成功并且服务器可以选择执行某个验证。
例如,如果 FilterComps 被设置为使用电子邮件地址和用户 ID 属性 (FilterComps=e,uid),服务器将在目录中搜索电子邮件和用户 ID 的值与从客户机证书中收集到的最终用户信息相匹配的条目。电子邮件地址和用户 ID 是非常好的过滤器,因为它们在目录中通常是唯一的。过滤器必须非常具体,以仅仅匹配 LDAP 数据库中的某一条目。
过滤器的属性名称必须是来自证书(而不是来自 LDAP 目录)的属性名称。例如,某些证书将 e 属性用于用户的电子邮件地址,而 LDAP 称该属性为 mail。
下表列出了 x509v3 证书的属性。
属性 |
描述 |
---|---|
国家(地区) |
|
组织 |
|
通用名称 |
|
位置 |
|
状态 |
|
组织单位 |
|
UNIX/Linux 用户 ID |
|
电子邮件地址 |
verifycert 通知服务器是否应将客户机的证书与在 LDAP 目录中找到的证书进行比较。该属性具有两个值:on 和 off。只有 LDAP 目录包含证书时,才应使用该属性。此功能有助于确保最终用户使用的证书有效且未被撤销。
CmapLdapAttr 是 LDAP 目录中包含有该用户所有证书主题 DN 的属性的名称。该属性的默认值是 certSubjectDN。该属性不是标准的 LDAP 属性,因此要使用该属性,必须扩展 LDAP 模式。有关更多信息,请参见《Introduction to SSL》。
如果 certmap.conf 文件中存在此属性,服务器将在整个 LDAP 目录中搜索其特性(以此属性命名)与主题的完整 DN(从证书中获得)相匹配的条目。如果没有找到任何条目,服务器将会使用 DNComps 和 FilterComps 映射重新进行搜索。
在使用 DNComps 和 FilterComps 匹配条目比较困难时,这种将证书与 LDAP 条目相匹配的方法非常有用。
有关这些属性的更多信息,请参阅映射样例中所述的示例。
您可使用客户机证书 API 创建自已的属性。创建自定义映射后,就可以按照如下所示引用该映射:
name:library path_to_shared_libraryname :InitFN name_of_ init_function
例如:
certmap default1 o=Sun Microsystems, c=US default1:library /usr/sun/userdb/plugin.so default1:InitFn plugin_init_fn default1:DNComps ou o c default1:FilterComps l default1:verifycert on
certmap.conf 文件应至少包含一个条目。以下示例说明了 certmap.conf 的不同使用方法。
certmap default defaultdefault:DNComps ou, o, cdefault:FilterComps e, uiddefault:verifycert on
使用本示例,服务器可以在包含 ou=orgunit, o=org, c=country 条目的 LDAP 分支点处开始搜索,其中斜体文本将替换为客户机证书中主题 DN 的值。
然后,服务器将使用证书中的电子邮件地址和用户 ID 的值在 LDAP 目录中搜索匹配的条目。找到匹配的条目时,服务器将比较客户机发送的证书和存储在目录中的证书,以验证该证书。
以下示例文件中包括两个映射:一个是默认映射,另一个用于美国邮政总局 (US Postal Service)。
certmap default defaultdefault:DNCompsdefault:FilterComps e, uid
certmap usps ou=United States Postal Service, o=usps, c=USusps:DNComps ou,o,cusps:FilterComps eusps:verifycert on
如果服务器收到的证书来自美国邮电总局以外的其他用户,服务器将使用默认映射,即从 LDAP 树的顶端启动并搜索与客户机电子邮件和用户 ID 相匹配的条目。如果证书来自美国邮电总局,服务器将从包含组织单位的 LDAP 分支启动并搜索匹配的电子邮件地址。服务器还将验证该证书。其他证书不会进行验证。
证书中的颁发者 DN(即 CA 的信息)必须与映射的第一行中所列的颁发者 DN 一致。在以上示例中,来自颁发者 DN(即 o=United States Postal Service,c=US)的证书就不匹配,因为 DN 的 o 和 c 属性之间没有空格。
以下示例使用 CmapLdapAttr 属性在 LDAP 数据库中搜索名为 certSubjectDN 的特性,该特性的值与从客户机证书获取的整个主题 DN 完全匹配。本示例假定 LDAP 目录中包含带有 certSubjectDN 属性的条目
certmap myco ou=My Company Inc, o=myco, c=USmyco:CmapLdapAttr certSubjectDNmyco:DNComps o, c myco:FilterComps mail, uid myco:verifycert on
如果客户机证书主题为:
uid=Walt Whitman, o=LeavesOfGrass Inc, c=US
服务器将首先搜索包含以下信息的条目:
certSubjectDN=uid=Walt Whitman, o=LeavesOfGrass Inc, c=US
如果找到了一个或多个匹配的条目,服务器将继续验证各条目。如果未找到匹配的条目,服务器将使用 DNComps 和 FilterComps 搜索匹配的条目。在本示例中,服务器会在 o=LeavesOfGrass Inc, c=US 下的所有条目中搜索 uid=Walt Whitman。