执行可确保服务器安全的所有步骤后,可以为客户机设置其他安全性要求。
客户机验证对于 SSL 连接不是必要的,但是可以提供额外的保证,即已加密的信息将发送到正确的接收方。您可以在反向代理中使用客户机验证来确保,内容服务器不会与未经授权的代理或客户机共享信息。
本节包含以下主题:
您可以为 Administration Server 和每个服务器实例启用侦听套接字,以要求客户机验证。启用客户机验证后,将需要客户机证书,然后服务器才将响应发送给查询。
Proxy Server 支持通过将客户机证书中的 CA 与用于签署客户机证书的信任 CA 相匹配来验证客户机证书。您可以通过 "Security" 选项卡的 "Manage Certificates" 页面查看用于客户机证书签名的受信任 CA 列表。
您可以对 Proxy Server 进行配置,以拒绝不具有来自受信任 CA 的客户机证书的任何客户机。要接受或拒绝受信任的 CA,必须对 CA 设置客户机信任。有关更多信息,请参见管理证书。
如果证书已到期,Proxy Server 将记录错误、拒绝证书并向客户机返回一条消息。也可以在 "Manage Certificates" 页面上查看已到期的证书。
您可以对服务器进行配置,以便从客户机证书收集信息并将其与 LDAP 目录中的用户条目相匹配。此过程可以确保客户机具有有效的证书和 LDAP 目录中的条目。而且还可以确保客户机证书与 LDAP 目录中的证书相匹配。要了解如何执行此操作,请参见将客户机证书映射到 LDAP。
您可以将客户机证书和访问控制结合使用,以便除了来自受信任的 CA 以外,与证书关联的用户还必须与访问控制规则 (ACL) 相匹配。有关更多信息,请参见使用访问控制文件。
访问 Administration Server 或 Server Manager,然后单击 "Preferences" 选项卡。
单击 "Edit Listen Sockets" 链接。
单击将要求客户机验证的侦听套接字的链接。
使用 "Client Authentication" 下拉式列表要求对侦听套接字进行客户机验证,然后单击 "OK"。
在反向代理中,可以根据以下任何方案配置客户机验证:
代理验证客户机。通过此方案,可允许具有可接受证书的所有客户机的访问,或者仅允许不但具有可接受证书,而且在 Proxy Server 的访问控制列表中为可识别用户的那些客户机的访问。
代理必须具有 CA 的用户根密钥,或者已签署了用户证书的自签署应用程序。用户必须具有已加载的 CA 的 Proxy Server 根密钥,或者已签署 Proxy Server 证书的自签署应用程序。
内容服务器验证代理服务器。通过此方案,可确保内容服务器实际与 Proxy Server 建立连接而不是其他某个服务器。
代理服务器必须具有 CA 的内容服务器根密钥,或者已签署内容服务器证书的自签署应用程序。内容服务器必须具有 CA 的 Proxy Server 根密钥,或者已签署 Proxy Server 证书的自签署应用程序。
代理服务器验证客户机且内容服务器验证代理服务器。此方案为反向代理提供最可靠的安全性和验证。
有关如何配置这些方案的信息,请参见在反向代理中设置客户机验证。
安全反向代理中的客户机验证为连接安全提供了进一步的保证。以下说明解释了如何根据所选择的方案配置客户机验证。
每种方案都假定,您既具有客户机到代理的安全连接,也具有代理到内容服务器的安全连接。
请遵循第 14 章的“设置反向代理”一节中有关配置客户机到代理的安全和代理到内容服务器的安全方案的说明。
访问服务器实例的 Server Manager 并单击 "Preferences" 选项卡。
单击 "Edit Listen Sockets" 链接,然后单击所显示表中需要的侦听套接字的链接。
(使用 "Add Listen Socket" 链接可配置和添加侦听套接字。)
指定客户机验证要求:
允许具有有效证书的所有用户的访问:
在 "Security" 部分中,使用 "Client Authentication" 设置要求对此侦听套接字进行客户机验证。如果尚未安装服务器证书,此设置将不可见。
仅允许不但具有有效证书,而且还在访问控制中被指定为可接受用户的那些用户的访问:
在 "Security" 部分中,将 "Client Authentication" 设置保留为关闭状态。如果尚未安装服务器证书,此设置将不可见。
在此服务器实例的 Server Manager "Preferences" 选项卡中,单击 "Administer Access Control" 链接。
选择一个 ACL,然后单击 "Edit" 按钮。
此时将显示 "Access Control Rules For" 页面(如果出现提示,将首先验证)。
打开访问控制(如果未选中 "Access control Is On" 复选框,请将其选中)。
将 Proxy Server 设置为作为反向代理进行验证。
有关更多信息,请参见设置反向代理。
单击所需访问控制规则的 "Rights" 链接,在下面的框架中指定访问权限,然后单击 "Update" 以更新该条目。
单击 "Users/Groups" 链接。在下面的框架中,指定用户和组,选择 SSL 作为验证方法,然后单击 "Update" 以更新该条目。
在上面的框架中,单击 "Submit" 以保存条目。
有关设置访问控制的更多信息,请参见第 8 章。
请遵循设置反向代理中有关配置客户机到代理服务器的安全和代理服务器到内容服务器的安全方案的说明。
在内容服务器中,打开客户机验证。
您可以修改此方案,以便与 Proxy Server 进行不安全客户机连接,与内容服务器进行安全连接,并使内容服务器验证 Proxy Server。为此,必须关闭加密功能,并要求代理仅按以下步骤中所述来初始化证书。
请遵循配置“代理服务器验证客户机”方案中有关配置“代理服务器验证客户机”方案的说明。
在内容服务器中,打开客户机验证。
本节介绍 Proxy Server 用来将客户机证书映射到 LDAP 目录中的条目的过程。在将客户机证书映射到 LDAP 之前,还必须配置所需的 ACL。有关更多信息,请参见第 8 章。
服务器收到客户机的请求后,将在处理请求之前要求提供客户机的证书。某些客户机会在向服务器发送请求的同时发送客户机证书。
服务器将尝试查看该 CA 是否与 Administration Server 中的某个信任 CA 相匹配。如果不存在匹配条目,Proxy Server 将结束连接。如果存在匹配条目,服务器将继续处理请求。
验证证书是来自受信任的 CA 之后,服务器会通过以下方式将证书映射到 LDAP 条目:
将颁发者和主题 DN 从客户机证书映射到 LDAP 目录中的分支点
在 LDAP 目录中搜索与客户机证书的主题(最终用户)相关信息相匹配的条目
(可选)验证客户机证书是否与对应于 DN 的 LDAP 条目中的证书相匹配
服务器使用名为 certmap.conf 的证书映射文件来确定如何执行 LDAP 搜索。映射文件将告诉服务器要使用客户机证书中的哪些值(例如最终用户的名称、电子邮件地址等)。服务器将使用这些值搜索 LDAP 目录中的用户条目,但服务器首先必须确定从 LDAP 目录中的哪个位置开始搜索。证书映射文件也会告诉服务器开始搜索的位置。
服务器了解了开始搜索的位置和要搜索的内容之后,将在 LDAP 目录中执行搜索(第二步)。如果未找到匹配条目或找到多个匹配条目,并且映射未设置为验证证书,搜索将失败。
下表列出了预期的搜索结果行为。您可以在 ACL 中指定期望的行为。例如,可以指定,如果证书匹配失败,Proxy Server 将仅接受您。有关如何设置 ACL 首选项的更多信息,请参见使用访问控制文件。
表 5–1 LDAP 搜索结果
LDAP 搜索结果 |
证书验证打开 |
证书验证关闭 |
---|---|---|
未找到条目 |
验证失败 |
验证失败 |
恰好找到一个条目 |
验证失败 |
验证成功 |
找到多个条目 |
验证失败 |
授权失败 |
服务器在 LDAP 目录中找到匹配条目和证书后,就可以使用该信息处理事务。例如,某些服务器使用证书-到-LDAP (certificate-to-LDAP) 映射来确定对某台服务器的访问权限。
证书映射用于确定服务器在 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。