Sun Java System Web Proxy Server 4.0.8 管理指南

设置客户机安全性要求

执行可确保服务器安全的所有步骤后,可以为客户机设置其他安全性要求。

客户机验证对于 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) 相匹配。有关更多信息,请参见使用访问控制文件

Procedure要求客户机验证

  1. 访问 Administration Server 或 Server Manager,然后单击 "Preferences" 选项卡。

  2. 单击 "Edit Listen Sockets" 链接。

  3. 单击将要求客户机验证的侦听套接字的链接。

  4. 使用 "Client Authentication" 下拉式列表要求对侦听套接字进行客户机验证,然后单击 "OK"。

反向代理中的客户机验证

在反向代理中,可以根据以下任何方案配置客户机验证:

有关如何配置这些方案的信息,请参见在反向代理中设置客户机验证

在反向代理中设置客户机验证

安全反向代理中的客户机验证为连接安全提供了进一步的保证。以下说明解释了如何根据所选择的方案配置客户机验证。


注 –

每种方案都假定,您既具有客户机到代理的安全连接,也具有代理到内容服务器的安全连接。


Procedure配置“代理服务器验证客户机”方案

  1. 请遵循第 14 章的“设置反向代理”一节中有关配置客户机到代理的安全和代理到内容服务器的安全方案的说明。

  2. 访问服务器实例的 Server Manager 并单击 "Preferences" 选项卡。

  3. 单击 "Edit Listen Sockets" 链接,然后单击所显示表中需要的侦听套接字的链接。

    (使用 "Add Listen Socket" 链接可配置和添加侦听套接字。)

  4. 指定客户机验证要求:

    1. 允许具有有效证书的所有用户的访问:

      在 "Security" 部分中,使用 "Client Authentication" 设置要求对此侦听套接字进行客户机验证。如果尚未安装服务器证书,此设置将不可见。

    2. 仅允许不但具有有效证书,而且还在访问控制中被指定为可接受用户的那些用户的访问:

      1. 在 "Security" 部分中,将 "Client Authentication" 设置保留为关闭状态。如果尚未安装服务器证书,此设置将不可见。

      2. 在此服务器实例的 Server Manager "Preferences" 选项卡中,单击 "Administer Access Control" 链接。

      3. 选择一个 ACL,然后单击 "Edit" 按钮。

        此时将显示 "Access Control Rules For" 页面(如果出现提示,将首先验证)。

      4. 打开访问控制(如果未选中 "Access control Is On" 复选框,请将其选中)。

      5. 将 Proxy Server 设置为作为反向代理进行验证。

        有关更多信息,请参见设置反向代理

      6. 单击所需访问控制规则的 "Rights" 链接,在下面的框架中指定访问权限,然后单击 "Update" 以更新该条目。

      7. 单击 "Users/Groups" 链接。在下面的框架中,指定用户和组,选择 SSL 作为验证方法,然后单击 "Update" 以更新该条目。

      8. 在上面的框架中,单击 "Submit" 以保存条目。

        有关设置访问控制的更多信息,请参见第 8 章

Procedure配置“内容服务器验证代理服务器”方案

  1. 请遵循设置反向代理中有关配置客户机到代理服务器的安全和代理服务器到内容服务器的安全方案的说明。

  2. 在内容服务器中,打开客户机验证。

    您可以修改此方案,以便与 Proxy Server 进行不安全客户机连接,与内容服务器进行安全连接,并使内容服务器验证 Proxy Server。为此,必须关闭加密功能,并要求代理仅按以下步骤中所述来初始化证书。

Procedure配置“代理验证客户机且内容服务器验证代理”方案

  1. 请遵循配置“代理服务器验证客户机”方案中有关配置“代理服务器验证客户机”方案的说明。

  2. 在内容服务器中,打开客户机验证。

将客户机证书映射到 LDAP

本节介绍 Proxy Server 用来将客户机证书映射到 LDAP 目录中的条目的过程。在将客户机证书映射到 LDAP 之前,还必须配置所需的 ACL。有关更多信息,请参见第 8 章

服务器收到客户机的请求后,将在处理请求之前要求提供客户机的证书。某些客户机会在向服务器发送请求的同时发送客户机证书。

服务器将尝试查看该 CA 是否与 Administration Server 中的某个信任 CA 相匹配。如果不存在匹配条目,Proxy Server 将结束连接。如果存在匹配条目,服务器将继续处理请求。

验证证书是来自受信任的 CA 之后,服务器会通过以下方式将证书映射到 LDAP 条目:

服务器使用名为 certmap.conf 的证书映射文件来确定如何执行 LDAP 搜索。映射文件将告诉服务器要使用客户机证书中的哪些值(例如最终用户的名称、电子邮件地址等)。服务器将使用这些值搜索 LDAP 目录中的用户条目,但服务器首先必须确定从 LDAP 目录中的哪个位置开始搜索。证书映射文件也会告诉服务器开始搜索的位置。

服务器了解了开始搜索的位置和要搜索的内容之后,将在 LDAP 目录中执行搜索(第二步)。如果未找到匹配条目或找到多个匹配条目,并且映射设置为验证证书,搜索将失败。

下表列出了预期的搜索结果行为。您可以在 ACL 中指定期望的行为。例如,可以指定,如果证书匹配失败,Proxy Server 将仅接受您。有关如何设置 ACL 首选项的更多信息,请参见使用访问控制文件

表 5–1 LDAP 搜索结果

LDAP 搜索结果 

证书验证打开 

证书验证关闭 

未找到条目 

验证失败 

验证失败 

恰好找到一个条目 

验证失败 

验证成功 

找到多个条目 

验证失败 

授权失败 

服务器在 LDAP 目录中找到匹配条目和证书后,就可以使用该信息处理事务。例如,某些服务器使用证书-到-LDAP (certificate-to-LDAP) 映射来确定对某台服务器的访问权限。

使用 certmap.conf 文件

证书映射用于确定服务器在 LDAP 目录中查找用户条目的方式。您可以使用 certmap.conf 文件配置证书(按名称指定)映射到 LDAP 条目的方式。您可以编辑此文件并添加条目,以匹配 LDAP 目录的组织和列出您希望用户拥有的证书。用户可以基于 subjectDN 中使用的用户 ID、电子邮件地址或任何其他值进行身份验证。具体而言,映射文件可定义以下信息:

证书映射文件位于以下位置:

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 自定义属性。默认属性包括:

表 5–2 x509v3 证书的属性

属性 

描述 

c

国家(地区) 

o

组织 

cn

通用名称 

l

位置 

st

状态 

ou

组织单位 

uid

UNIX/Linux 用户 ID 

email

电子邮件地址 

有关这些属性的更多信息,请参阅映射样例中所述的示例。

创建自定义特性

您可使用客户机证书 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 的不同使用方法。

示例 #1 仅带有一个默认映射的 certmap.conf 文件

certmap default defaultdefault:DNComps ou, o, cdefault:FilterComps e, uiddefault:verifycert on

使用本示例,服务器可以在包含 ou=orgunit, o=org, c=country 条目的 LDAP 分支点处开始搜索,其中斜体文本将替换为客户机证书中主题 DN 的值。

然后,服务器将使用证书中的电子邮件地址和用户 ID 的值在 LDAP 目录中搜索匹配的条目。找到匹配的条目时,服务器将比较客户机发送的证书和存储在目录中的证书,以验证该证书。

示例 #2 带有两个映射的 certmap.conf 文件

以下示例文件中包括两个映射:一个是默认映射,另一个用于美国邮政总局 (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 的 oc 属性之间没有空格。


示例 #3 搜索 LDAP 数据库

以下示例使用 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

如果找到了一个或多个匹配的条目,服务器将继续验证各条目。如果未找到匹配的条目,服务器将使用 DNCompsFilterComps 搜索匹配的条目。在本示例中,服务器会在 o=LeavesOfGrass Inc, c=US 下的所有条目中搜索 uid=Walt Whitman