Sun Java System Web Proxy Server 4.0.8 管理指南

第 5 章 使用证书和密钥

本章介绍了如何使用证书和密钥验证来确保 Sun Java System Web Proxy Server 的安全性。Proxy Server 引入了所有 Sun Java System 服务器的安全体系结构,并且以行业标准和公共协议为基础,最大程度地保证了互操作性和一致性。

本章假定您已熟悉公钥加密的基本概念,包括加密和解密、公钥和私钥、数字证书以及加密协议。

本章包含以下各节:

确保 Administration Server 访问的安全性

Administration Server 是基于 Web 的用户界面,用于管理、添加、删除和迁移服务器,需要确保其安全性。

默认 Administration Server 页面在 HTTP 模式下启动。可用的 Proxy Server 实例以列表的形式显示在标题 "Manage Servers" 的下方。要管理任何 Proxy Server 实例,请单击列表中的名称。单击 Proxy Server 实例的名称时,将显示该实例的 Server Manager 页面。

在 Server Manager 页面中,单击该页面左上角的 "Manage Servers" 链接可返回到 Administration Server 页面。

安全性功能(如基于证书的验证、创建信任数据库、配置 SSL、申请并安装证书、设置安全性首选项等)可应用于 Administration Server 和各个 Proxy Server 实例。对于 Administration Server 的安全性相关的配置,请使用 Administration Server 页面上显示的 "Preferences" 选项卡和 "Security" 选项卡。对于 Proxy Server 实例相关的安全性配置,请使用该实例的 Server Manager 页面上显示的 "Preferences" 选项卡和 "Security" 选项卡。

要在安全模式下启动 Administration Server,需要使用 HTTPS 而不是默认 HTTP 进行访问。

以下各节详细介绍了这些安全性功能。

基于证书的验证

验证是确认身份的过程。在网络交互环境中,验证是一方对另一方的保密确认。证书是支持验证的一种方法。

证书中包含的数字数据指定了个人、公司或其他实体的名称,并证明证书中包含的公钥属于该实体。

客户机和服务器都可以拥有证书。服务器验证指客户机对服务器进行的信任识别,或者对假定为负责特定网络地址服务器的组织的确认。客户机验证指服务器对客户机进行的信任识别,或对被认为使用客户机软件的人员进行的识别。客户机可以有多个证书,如同一个人可以有几个不同的身份一样。

证书由证书授权机构 (Certificate Authority, CA) 颁发并进行数字签名。CA 可以是销售证书的公司,也可以是负责为您公司的内联网或外部网颁发证书的部门。您可以将您充分信任的 CA 确定为其他用户身份的检验者。

证书包括以下信息。


注 –

在激活加密之前必须安装服务器证书。


创建信任数据库

申请服务器证书之前,必须创建信任数据库。在 Proxy Server 中,Administration Server 和每个服务器实例可以拥有自己的信任数据库。信任数据库只能在本地计算机上创建。

创建信任数据库时,您需要指定将用于密钥对文件的密码。您还需要此密码来启动使用加密通信的服务器。有关选择密码时应考虑的一系列准则,请参见选择强密码

在信任数据库中,可以创建并存储公钥和私钥(称为密钥对文件)。密钥对文件用于 SSL 加密。申请和安装服务器证书时将用到该密钥对文件。安装证书之后,证书将存储在信任数据库中。

密钥对文件以加密的形式存储在以下目录中。

server-root/alias/proxy-serverid-key3.db

Administration Server 中只能有一个信任数据库。每个服务器实例都可以拥有自己的信任数据库。

Procedure创建信任数据库

  1. 访问 Administration Server 或 Server Manager,并单击 "Security" 选项卡。

  2. 单击 "Create Database" 链接。

  3. 键入信任数据库的密码。

  4. 再次键入密码,然后单击 "OK"。

使用 password.conf

默认情况下,Proxy Server 在启动之前会提示管理员输入密钥数据库密码。要重新启动无人照管的 Proxy Server,必须将密码保存在 password.conf 文件中。仅当系统具有充分的保护时才可以这样做,以免文件和密钥数据库遭到破坏。

通常,无法使用 /etc/ rc.local/etc/inittab 文件启动启用了 SSL 的 UNIX 服务器,因为该服务器在启动前要求输入密码。虽然可以通过将密码以纯文本格式存储在某个文件中,来自动启动启用了 SSL 的服务器,但这样做会不安全。服务器的 password.conf 文件应归 root 用户或安装服务器的用户所有,并且只有所有者对该文件拥有读写权限。

在 UNIX 上,将启用了 SSL 的服务器的密码保存在 password.conf 文件中会带来很大的安全风险。任何可以访问该文件的用户都有权访问启用了 SSL 的服务器的密码。将启用了 SSL 的服务器的密码保存在 password.conf 文件中之前,请考虑可能带来的安全风险。

在 Windows 上,如果使用的是 NTFS 文件系统,应通过限制访问来对包含 password.conf 文件的目录进行保护,即使不使用该文件也应该这样做。Administration Server 用户和 Proxy Server 用户应该对该目录拥有读写权限。保护该目录可以防止其他用户创建伪 password.conf 文件。在 FAT 文件系统上,无法通过限制访问来保护目录或文件。

自动启动启用了 SSL 的服务器

Procedure自动启动启用了 SSL 的服务器

  1. 确保已启用了 SSL。

  2. 在 Proxy Server 实例的 config 子目录中创建新的 password.conf 文件。

    • 如果使用的是 Proxy Server 附带的内部 PKCS #11 软件加密模块,请键入以下信息:internal: your-password

      • 如果使用的是其他 PKCS #11 模块(用于硬件加密或硬件加速器),请指定 PKCS #11 模块的名称,并后跟密码,例如:nFast:your-password

        即使在创建了 password.conf 文件之后,您在启动 Proxy Server 时始终会收到输入密码的提示。

使用 Sun Crypto Accelerator 密钥库

Sun Crypto Accelerator 4000 卡能够以远远超过系统 CPU 的速度提供优化的、可伸缩 SSL 操作。

Procedure将 Proxy Server 配置为使用 Sun Crypto Accelerator

  1. 安装 Sun Crypto Accelerator 4000 板。

  2. 初始化 Sun Crypto Accelerator 4000 板。

  3. 安装 Proxy Server 4.0.8(最好以 root 用户身份)。

  4. 在代理实例中创建信任数据库。

    有关创建信任数据库的更多信息,参见创建信任数据库

  5. 启用 Sun Crypto Accelerator 4000 板。

Procedure为 Proxy Server 启用 Sun Crypto Accelerator 4000 板

  1. 使用命令 secadm 设置用户和领域。

  2. 将目录 "server-root/bin/proxy" 复制到目录 "server-root /bin/https"。

    要使脚本 ipsslcfg 能够找到命令 modutil,必须执行此步骤。

  3. 编辑脚本 /opt/SUNWconn/bin/iplsslcfg 并提供指向 modutil 的路径。

  4. 执行 /opt/SUNWconn/bin/iplsslcfg

  5. 选择选项 1. Configure Sun ONE Web Server for SSL


    注 –

    选项 1 表示为 SSL 配置 Web Server。对于 Proxy Server 配置,也要选择选项 1


  6. 指定 Proxy Server 4.0.8 安装目录并选择 y 以继续。

    模块 Sun Crypto Accelerator 将添加到数据库中。

  7. 重新启动管理服务器。

  8. 重新启动后,选择 "Security" -> "Request Certificate" -> "Cryptographic Module"。

    列表将显示以下内容:"SUNW acceleration only"、"Internal" 以及 "keystore_name"。每个密钥库在列表中都有其对应的条目。

  9. 选择密钥库。

    如果创建服务器证书,请勿选择选项 "SUNW acceleration only"。

申请和安装 VeriSign 证书

VeriSign 是 Proxy Server 的首选证书授权机构。该公司的技术简化了证书申请过程。VeriSign 的优势在于能够直接将证书返回服务器。

为服务器创建证书信任数据库后,您可以申请一个证书并将其提交给 CA(Certificate Authority,证书授权机构)。如果您的公司有自己的内部 CA,则可以向该部门申请证书。如果打算从商业 CA 处购买证书,请选择一个 CA 并索要所需的特定格式信息。

Administration Server 中只能有一个服务器证书。每个服务器实例可以拥有自己的服务器证书。

Procedure申请 VeriSign 证书

  1. 访问 Administration Server 或 Server Manager,并单击 "Security" 选项卡。

  2. 单击 "Request VeriSign Certificate link." 链接。

  3. 查看所显示的页面中列出的步骤,然后单击 "OK"。

    "VeriSign Enrollment Wizard" 将引导您完成该过程。

Procedure安装 VeriSign 证书

  1. 访问 Administration Server 或 Server Manager,并单击 "Security" 选项卡。

  2. 单击 "Install VeriSign Certificate" 链接。

  3. 如果不计划使用外部加密模块,请从 "Cryptographic Module" 下拉式列表中选择 "Internal"。

  4. 键入密钥对文件密码或 PIN。

  5. 从下拉式列表中选择要检索的事务 ID,然后单击 "OK"。

申请和安装其他服务器证书

除了 VeriSign,还可以从其他证书授权机构申请和安装证书。您的公司或组织可能会提供自己的内部证书。本节介绍如何申请和安装其他类型的服务器证书。

本节包含以下主题:

所需的 CA 信息

开始申请过程之前,请确保了解 CA 所需的信息。不同的 CA 要求的信息的格式会有所不同,但通常都会要求您提供以下所列信息。对于证书更新,以下大部分信息通常不是必需的。

所有这些信息组合为一系列属性值对(称为标识名 (distinguished name, DN)),用于唯一标识证书的主题。

如果从商业 CA 处购买证书,必须在 CA 颁发证书之前与之联络,以查明他们所需的其他信息。多数 CA 都要求您提供身份证明。例如,CA 需要验证您的公司名称和公司授权管理服务器的用户,还可能询问您是否拥有使用您提供的信息的合法权限。

某些商业 CA 向出具较为详细标识的组织或个人提供内容详细且精确的证书。例如,您可以购买一个证书,声明 CA 不仅验证了您是 www.example.com 计算机的合法管理员,而且验证了您的公司是已从事三年商业活动且无未决的客户诉讼案件的公司。

申请其他服务器证书

Procedure申请其他服务器证书

  1. 访问 Administration Server 或 Server Manager,并单击 "Security" 选项卡。

  2. 单击 "Request Certificate" 链接。

  3. 指定这是一个新证书还是证书更新。

    许多证书在一段时间(例如六个月或一年)后会到期。某些 CA 会自动发送证书更新。

  4. 指定是否要提交证书申请:

    • 要使用电子邮件提交申请,请选择 "CA Email Address",然后输入这些申请相应的电子邮件地址。

      • 要使用 CA 的 Web 站点提交申请,请选择 "CA URL",然后键入这些申请相应的 URL。

  5. 从 "Cryptographic Module" 下拉式列表中,选择在申请证书时要用于密钥对文件的加密模块。

  6. 键入密钥对文件的密码。

    除非选择了加密模块而不是 "Internal",否则在创建信任数据库时指定该密码。服务器将使用该密码获取专私钥并加密发送给 CA 的消息,然后将您的公钥和加密的消息发送给 CA。CA 使用公钥来解密您的消息。

  7. 提供您的标识信息,如姓名和电话号码。

    此信息的格式因 CA 而异。对于证书更新,以下大部分信息通常不是必需的。

  8. 再次检查您的工作以确保准确性,然后单击 "OK"。

    信息越准确,批准证书的速度可能就越快。如果要将申请发送至证书服务器,您将在提交申请之前收到验证格式信息的提示。

    服务器将生成包含您的信息的证书申请。该申请中包含使用私钥创建的数字签名。CA 使用数字签名来验证在从服务器计算机向 CA 的路由过程中申请是否被更改。极少数情况下申请会被更改,这时 CA 通常会通过电话与您联络。

    如果选择通过电子邮件发送申请,服务器将发送包含该申请的电子邮件到 CA。通常,证书会在随后通过电子邮件发送给您。如果您指定了指向证书服务器的 URL,服务器将使用该 URL 向证书服务器提交申请。您可能会收到电子邮件响应或某种其他方式的响应,视 CA 而定。

    如果 CA 同意向您颁发证书,将会通知您。多数情况下,CA 会使用电子邮件向您发送证书。如果您的组织使用的是证书服务器,可以使用证书服务器的表单搜索证书。


    注 –

    并不是所有从商业 CA 申请证书的用户都会获得证书。很多 CA 在颁发证书之前都需要您提供身份证明。另外,审批通常可能会花费一天到几周不等的时间。您应向 CA 及时提供所有必要的信息。


    在收到证书后,安装该证书。在此期间,您仍然可以使用未安装 SSL 的 Proxy Server。

安装其他服务器证书

您从 CA 收到的证书会使用您的公钥加密,因此只有您可以将其解密。只有输入正确的信任数据库密码,才能解密和安装证书。

有三种类型的证书:

证书链是由各证书授权机构依次签署的一系列有层次结构的证书。CA 证书用于标识证书授权机构以及对该机构颁发的证书进行签名。反过来,CA 证书又可以由父 CA 的 CA 证书签名,依此类推,直到根 CA。


注 –

如果 CA 没有自动向您发送他们的证书,请申请该证书。很多 CA 在电子邮件中包含他们的证书和您的证书,您的服务器将同时安装这两个证书。


您从 CA 收到的证书会使用您的公钥加密,因此只有您可以将其解密。安装证书时,Proxy Server 将使用您指定的密钥对文件密码将其解密。您可以将电子邮件保存在服务器可以访问的位置中,也可以复制电子邮件的文本并准备将其粘贴到 "Install Certificate" 表单中,如以下过程所述。

Procedure安装其他服务器证书

  1. 访问 Administration Server 或 Server Manager,并单击 "Security" 选项卡。

  2. 单击 "Install Certificate" 链接。

  3. 在 "Certificate For" 旁,选择要安装的证书的类型:

    • This Server

      • Server Certificate Chain

      • Certification Authority

        有关特定设置的更多信息,请参见联机帮助。

  4. 从下拉式列表中选择加密模块。

  5. 键入密钥对文件密码。

  6. 只有在步骤 3 中选择了 "Server Certificate Chain" 或 "Certification Authority" 时,才需要键入证书名称。

  7. 通过执行以下操作之一提供证书信息:

    • 选择 "Message Is In This File",然后键入包含 CA 证书的文件的完整路径名。

      • 选择 "Message Text"(包含标头),然后复制并粘贴 CA 证书的内容。请确保包含标头 Begin Certificate 和 End Certificate,其中包含起始和终止连字符。

  8. 单击 "OK"。

  9. 指出是添加新证书还是更新现有证书。

    • 添加证书(如果要安装新的证书)。

      • 替换证书(如果要安装证书更新)。

        证书将存储在服务器的证书数据库中。例如:

        server-root/alias/ proxy-serverid-cert8.db

从先前版本迁移证书

从 Sun ONE Web Proxy Server 3.6(也称为 iPlanet Web Proxy Server)迁移到 Sun Java System Web Proxy Server 4 时,将会自动更新相应的文件(包括信任数据库和证书数据库)。

确保 Proxy Server 4 Administration Server 拥有旧 3.x 数据库文件的读取权限。这些文件是位于 3.x-server-root/alias 目录中的 alias-cert.db alias-key.db

只有对服务器启用了安全保护时,才可以迁移密钥对文件和证书。您也可以使用 Administration Server 和 Server Manager 的 "Security" 选项卡中的 "Migrate 3.x Certificates" 选项自动迁移密钥和证书。有关特定设置的信息,请参见联机帮助。

在以前的版本中,证书和密钥对文件由别名引用,该别名可以由多个服务器实例使用。Administration Server 管理所有的别名及其委托证书。在 Sun Java System Web Proxy Server 4 中,Administration Server 和每个服务器实例都有自己的证书和密钥对文件,称为信任数据库而不是别名。

从 Administration Server 可以为其本身管理信任数据库及其委托证书,从 Server Manager 可以为服务器实例管理信任数据库及其委托证书。证书和密钥对数据库文件按使用它们的服务器实例命名。如果是在以前的版本中,多个服务器实例共享同一个别名,迁移时将为新服务器实例重命名证书和密钥对文件。

与服务器实例关联的整个信任数据库将被迁移。以前数据库中列出的所有 CA 将被迁移到 Proxy Server 4 数据库。如果出现重复的 CA,请使用以前的 CA,直到它过期。请不要尝试删除重复的 CA。

Proxy Server 3.x 证书将被迁移为支持的网络安全服务 (Network Security Services, NSS) 格式。证书将根据是从 Administration Server 还是从 Server Manager 的 "Security" 选项卡访问了 Proxy Server 页面,来进行相应命名。

Procedure迁移证书

  1. 从本地计算机访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。

  2. 单击 "Migrate 3.x Certificates" 链接。

  3. 指定安装 3.6 版服务器的根目录。

  4. 指定此计算机的别名。

  5. 键入管理员密码,然后单击 "OK"。

使用内置根证书模块

Proxy Server 附带的动态可加载根证书模块包含许多 CA(包括 VeriSign)的根证书。通过根证书模块,可以更容易地将根证书升级到更高的版本。以前,您需要逐个删除旧的根证书,然后再逐个安装新的证书。要安装常用的 CA 证书,现在可以只将根证书模块文件更新到更高的版本,因为它在以后版本的 Proxy Server 中将可用。

由于根证书是作为 PKCS #11 加密模块实现的,因此您将永远无法删除该模块包含的根证书。管理这些证书时,不会提供用于删除的选项。要删除服务器实例的根证书,可通过删除服务器的 alias 目录中的以下条目来禁用根证书模块。

如果要恢复根证书模块,可以将 libnssckbi.sonssckbi.dllserver-root/bin/proxy/lib (UNIX) 或 server-root\\ bin\\proxy\\bin (Windows) 复制到 alias 子目录中。

可以修改根证书的信任信息。信任信息将写入编辑的服务器实例的证书数据库中,而不是返回根证书模块本身。

管理证书

您可以查看、删除或编辑自己的证书或服务器上安装的 CA 证书的信任设置。

Procedure管理证书

  1. 访问 Administration Server 或 Server Manager,并单击 "Security" 选项卡。

  2. 单击 "Manage Certificates" 链接。

    • 如果要使用内部加密模块管理默认配置的证书,将显示所有已安装证书的列表,其中包括证书的类型和到期日期。所有证书都存储在 server-root/alias 目录中。

      • 如果要使用外部加密模块(例如硬件加速器),必须先为每个特定模块键入密码,然后单击 "OK"。证书列表将更新,以便在模块中包含这些证书。

  3. 单击要管理的证书的名称。

    此时将显示一个页面,其中包含该类型证书的管理选项。只有 CA 证书允许您设置或取消设置客户机信任。某些外部加密模块不允许删除证书。

  4. 指定所需操作。

    可以使用以下选项:

    • "Delete certificate" 或 "Quit"(对于内部获得的证书)

      • "Set client trust"、"Unset server trust" 或 "Quit "(对于 CA 证书)

        证书信息中包含所有者和颁发证书的机构。通过信任设置,您可以设置客户机信任或取消设置服务器信任。对于 LDAP 服务器证书,服务器必须被信任。

安装和管理 CRL 和 CKL

证书撤销列表 (Certificate Revocation List, CRL) 和已泄密密钥列表 (Compromised Key List, CKL) 能够清楚地列出客户机或服务器用户应不再信任的所有证书和密钥。如果证书中的数据发生变化(例如,某位用户在证书到期之前变更了办公室或离开了组织),该证书将被撤回,其数据将显示在 CRL 中。如果密钥被更改或受到某种程度的损坏,密钥及其数据将显示在 CKL 中。CRL 和 CKL 均由 CA 生成并由 CA 定期更新。与特定 CA 联系以获取这些列表。

本节介绍如何安装和管理 CRL 和 CKL。

Procedure安装 CRL 或 CKL

  1. 从 CA 获取 CRL 或 CKL,并将其下载到本地目录。

  2. 访问 Administration Server 或 Server Manager,并单击 "Security" 选项卡。

  3. 单击 "Install CRL/CKL" 链接。

  4. 选择以下任一选项:

    • Certificate Revocation List

      • Compromised Key List

  5. 键入关联文件的完整路径名,然后单击 "OK"。

    此时将显示 "Add Certificate Revocation List" 或 "Add Compromised Key List" 页面,其中列出了 CRL 或 CKL 信息。如果数据库中已存在 CRL 或 CKL,将显示 "Replace Certificate Revocation List" 或 "Replace Compromised Key List" 页面。

  6. 添加或替换 CRL 或 CKL。

Procedure管理 CRL 和 CKL

  1. 访问 Administration Server 或 Server Manager,并单击 "Security" 选项卡。

  2. 单击 "Manage CRL/CKL" 链接。

    此时将显示 "Manage Certificate Revocation Lists /Compromised Key Lists" 页面,其中列出了所有已安装的 CRL 和 CKL 及其到期日期。

  3. 从 "Server CRLs" 或 "Server CKLs" 列表中选择一个证书。

  4. 选择 "Delete CRL" 或 "Delete CKL" 可删除 CRL 或 CKL。.

  5. 退出以返回到管理页面。

设置安全性首选项

获得证书后,就可以开始保护您的服务器。Sun Java System Web Proxy Server 提供了许多安全性元素,将在本节中讨论。

加密是转换信息、使除预期接收者以外的任何人都无法识别信息的过程。解密是转换加密信息、使其重新可被识别的过程。Proxy Server 支持安全套接字层 (Secure Sockets Layer, SSL) 和传输层安全 (Transport Layer Security, TLS) 加密协议。

加密器是一种用于加密或解密的加密算法(一种数学函数)。SSL 和 TLS 协议包含了多个加密算法套件。某些加密算法比其他加密算法更强大且更安全。一般而言,加密算法使用的位越多,将数据解密越难。

在任何双向加密过程中,双方都必须使用相同的加密器。由于可以使用多种加密算法,因此必须让服务器使用最常用的加密算法。

在安全连接过程中,客户机和服务器都同意使用可以进行通信的最强大的加密算法。您可以从 SSL 2.0、SSL 3.0 和 TLS 协议中选择加密器。


注 –

因为在 SSL 2.0 之后对 SSL 的安全性和性能进行了各种改进,所以除非客户机无法使用 SSL 3.0,否则不要使用 SSL 2.0。使用 SSL 2.0 加密算法无法为客户机证书提供保证。


单独的加密过程并不足以确保服务器机密信息的安全。使用加密器的同时还要必须使用密钥,以达到真正的加密效果,或解密先前加密的信息。加密过程使用以下两种密钥获得此结果:公钥和私钥。使用公钥加密的信息只能使用关联的私钥进行解密。公钥作为证书的一部分进行发布。只有关联的私钥受到安全保护。

有关各种加密算法套件的说明以及密钥和证书的更多信息,请参见《SSL 介绍》。

您可以指定服务器将使用的加密算法。除非有充分的理由不使用特定的加密算法,否则应全部选中。您可能不希望启用非最优加密的加密算法。


注意 – 注意 –

不要选择 "Enable No Encryption, Only MD5 Authentication"。如果客户端没有其他可用的加密算法,服务器将默认使用此设置且不进行加密。


本节包含以下主题:

SSL 和 TLS 协议

Proxy Server 支持使用 SSL 和 TLS 协议进行加密通信。SSL 和 TLS 是独立的应用程序,并且更高级的协议可以在它们上面透明地分层排列。

SSL 和 TLS 协议支持各种加密算法,用于服务器和客户机的相互验证、传输证书和建立会话密钥。客户机和服务器可以支持各种加密算法套件或加密算法集合,这取决于各种因素:例如所支持的协议、公司有关加密强度的政策以及政府对加密软件出口的限制。在其他函数中,SSL 和 TLS 握手协议将确定服务器和客户机如何协商以决定将用来通信的加密算法套件。

使用 SSL 与 LDAP 通信

您应该要求 Administration Server 使用 SSL 与 LDAP 进行通信。


注 –

此情况下,Proxy Server 充当 SSL 客户机,且必须已导入用于签署 SSL 服务器 LDAP 证书的根 CA 证书。如果 LDAP 的 SSL 证书不是由知名 CA 颁发,则必须将所使用的 CA 根密钥导入到 Proxy Server 密钥库中。


Procedure在 Administration Server 上使用 SSL 连接启用 LDAP

  1. 访问 Administration Server 并单击 "Global Settings" 选项卡。

  2. 单击 "Configure Directory Service" 链接。

  3. 在所显示的表中,单击目录服务链接。

    此时将显示 "Configure Directory Service" 页面。如果尚未创建基于 LDAP 的目录服务,请从 "Create New Service of Type" 下拉式列表中选择 "LDAP Server",然后单击 "New" 以配置目录服务。有关针对基于 LDAP 的目录服务显示的特定字段的更多信息,请参见联机帮助。

  4. 选择 "Yes" 可以对连接使用 SSL,然后单击 "Save Changes"。

通过 Proxy Server 对 SSL 进行隧道操作

在正向运行 Proxy Server(代理)且客户机通过此代理请求与安全服务器建立 SSL 连接时,代理将打开到安全服务器的连接,并双向复制数据,但不干预安全事务。此过程称为 SSL 隧道,如下图所示。

图 5–1 SSL 连接

图中说明从客户机通过代理服务器到安全服务器的 SSL 连接

要对 HTTPS URL 使用 SSL 隧道,客户机必须同时支持 SSL 和 HTTPS。将 SSL 与常规 HTTP 一起使用可实现 HTTPS。不支持 HTTPS 的客户机仍然可以使用 Proxy Server 的 HTTPS 代理功能访问 HTTPS 文档。

SSL 隧道为较低层的活动,不会影响应用层 (HTTPS)。SSL 隧道与不使用代理的 SSL 一样安全。中间存在代理不会对安全性带来任何危害,也不会降低 SSL 的功能。

使用 SSL 时,数据流会被加密,这样代理将无权访问实际事务。因此,访问日志不能列出从远程服务器收到的状态码或标头长度。此过程也可防止代理或任何其他第三方对事务进行窃听。

由于代理看不到数据,因此无法验证客户机与远程服务器之间使用的协议是否为 SSL。所以,代理也无法阻止其他协议通过。应将 SSL 连接限制为仅使用 Internet 号码分配机构 (Internet Assigned Numbers Authority, IANA) 指定的常用 SSL 端口,即端口 443(对于 HTTPS)以及 563(对于 SNEWS)。如果有在其他端口运行安全服务器的站点,可以明确 规定特例,允许某些主机连接其他端口。此操作通过 connect://.* 资源完成。

SSL 隧道功能实际上一个类似于 SOCKS 的常规功能,它独立于协议,因此也可以将此功能用于其他服务。Proxy Server 可以对支持 SSL 的任何应用程序处理 SSL 隧道,而不仅仅是 HTTPS 和 SNEWS 协议。

配置 SSL 隧道

以下步骤说明了如何配置 Proxy Server 对 SSL 进行隧道操作。

Procedure配置 SSL 隧道

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

  2. 单击 "Enable/Disable Proxying" 链接。

  3. 从下拉式列表中选择 "connect://.*.443" 资源。

    connect:// 方法是内部代理表示法,不能存在于代理外部。有关 connect 的更多信息,请参见SSL 隧道的技术详细信息

    要允许到其他端口的连接,可以使用模板中类似的 URL 模式。有关这些模板的更多信息,请参见第 16 章

  4. 选择 "Enable Proxying Of This Resource" 然后单击 "OK"。


    注意 – 注意 –

    如果代理配置错误,有人可能会利用代理使 telnet 连接看似来自代理主机而不是实际连接主机。所以,在非绝对必要的情况下,不要允许使用任何其他端口,并且可以在代理上使用访问控制来限制客户机主机。


SSL 隧道的技术详细信息

SSL 隧道在内部将 CONNECT 方法与作为参数的目标主机名和端口号一起使用,后跟一个空行:

CONNECT energy.example.com:443 HTTP/1.0

以下示例说明了 Proxy Server 的成功响应,并后跟一个空行:

HTTP/1.0 200 Connection establishedProxy-agent: Sun-Java-System-Web-Proxy-Server/4.0

然后,将在客户机与远程服务器之间建立连接。数据可以双向传输,直到任意一方关闭连接。

在内部,为了利用基于 URL 模式的典型配置机制,主机名和端口号会自动被映射到 URL,例如:

connect://energy.example.com:443

connect:// 是 Proxy Server 为了使配置更简单,与其他 URL 模式更统一而采用的内部表示法。在 Proxy Server 外部,不存在 connect URL。如果 Proxy Server 收到来自网络的这样的 URL,它将标记该 URL 无效,并拒绝对请求提供服务。

为侦听套接字启用安全性

可以通过执行以下操作来确保服务器的侦听套接字的安全性:


注 –

只能以反向代理模式而不是正向代理模式启用安全性。


打开安全性

为侦听套接字配置其他安全设置之前,必须打开安全性。您可以在创建新的侦听套接字或编辑现有侦听套接字时打开安全性。

Procedure创建侦听套接字时打开安全性

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

  2. 单击 "Add Listen Socket" 链接。

  3. 提供所需的信息。


    注 –

    创建侦听套接字后,可使用 "Edit Listen Sockets" 链接来配置安全性设置。


  4. 要打开安全性,请从 "Security" 下拉式列表中选择 "Enabled",然后单击 "OK"。

    如果未安装服务器证书,唯一的选择为 "Disabled"。有关特定设置的更多信息,请参见联机帮助。

Procedure编辑侦听套接字时打开安全性

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

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

  3. 单击要编辑的侦听套接字的链接。

  4. 从 "Security" 下拉式列表中选择 "Enabled",然后单击 "OK"。

    如果未安装服务器证书,唯一的选择为 "Disabled"。

为侦听套接字选择服务器证书

您可以在 Administration Server 或 Server Manager 中配置侦听套接字,以使用您已申请和安装的服务器证书。


注 –

必须至少安装一个证书。


Procedure为侦听套接字选择服务器证书

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

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

  3. 单击要编辑的侦听套接字的链接。

  4. 从 "Security" 下拉式列表中选择 "Enabled",然后单击 "OK"。

    如果未安装服务器证书,唯一的选择为 "Disabled"。

  5. 从 "Server Certificate Name" 下拉式列表中为侦听套接字选择服务器证书,然后单击 "OK"。

选择加密算法

要保护 Proxy Server 的安全性,应启用 SSL。您可以启用 SSL 2.0、SSL 3.0 和 TLS 加密协议并选择各种密码组。可以在侦听套接字上为 Administration Server 启用 SSL 和 TLS 协议。在侦听套接字上为 Server Manager 启用 SSL 和 TLS,可为特定服务器实例设置这些安全性首选项。必须至少安装一个证书。


注 –

只有将 Proxy Server 配置为执行反向代理时,在侦听套接字上启用 SSL 才适用。


默认设置允许使用最常用的加密算法。除非有充分的理由不使用特定的加密算法,否则应全部选中。

TLS 回滚的默认和推荐设置为 "Enabled"。此设置将服务器配置为检测“中间人版本回滚”攻击企图。为了实现与某些未正确实现 TLS 规范的客户机的互操作性,可能需要将 TLS 回滚设置为 "Disabled"。

禁用 TLS 回滚将使连接容易遭到版本回滚攻击。版本回滚攻击是第三方可以强制客户机和服务器使用旧的、不安全的协议(如 SSL 2.0)进行通信的一种机制。由于 SSL 2.0 协议具有已知的缺陷,因此无法检测“版本回滚”攻击企图将使第三方很容易截取并解密已加密的连接。

Procedure启用 SSL 和 TLS

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

  2. 单击 "Edit Listen Sockets" 链接,然后单击要编辑的侦听套接字的链接。

    对于安全的侦听套接字,将会显示可用的加密算法设置。

    如果未在侦听套接字上启用安全性,将不会列出任何 SSL 和 TLS 信息。要使用加密算法,请确保已在选定侦听套接字上启用了该安全性。有关更多信息,请参见为侦听套接字启用安全性

  3. 选中对应于所需加密设置的复选框,然后单击 "OK"。

  4. 对于 Netscape Navigator 6.0,请选择 TLS 和 SSL 3.0。对于 TLS 回滚也要选择 TLS,并确保禁用 SSL 3.0 和 SSL 2.0。

    在服务器上启用 SSL 后,其 URL 将使用 https 而不是 http。指向启用了 SSL 的服务器上文档的 URL 具有以下格式:https://servername .domain.dom :port,例如,https://admin.example.com:443

    如果使用默认的安全 HTTP 端口 (443),将不需要在 URL 中输入该端口号。

全局配置安全性

安装启用了 SSL 的服务器将会在 magnus.conf 文件(服务器的主配置文件)中为全局安全性参数创建指令条目。

SSLSessionTimeout

SSLSessionTimeout 指令用于控制 SSL 2.0 会话高速缓存。语法为:

SSLSessionTimeout seconds

其中 seconds 是高速缓存的 SSL 会话保持有效的秒数。默认值为 100 秒。如果指定了 SSLSessionTimeout 指令,秒数的值将自动限定为 5 到 100 之间。

SSLCacheEntries

指定可以高速缓存的 SSL 会话的数量。

SSL3SessionTimeout

SSL3SessionTimeout 指令用于控制 SSL 3.0 和 TLS 会话高速缓存。语法为:

SSL3SessionTimeout seconds

其中 seconds 是高速缓存的 SSL 3.0 会话保持有效的秒数。默认值为 86400 秒(24 小时)。如果指定了 SSL3SessionTimeout 指令,秒数的值将自动限定为 5 到 86400 之间。

Procedure为 SSL 配置文件指令设置值

  1. 访问服务器实例的 Server Manager。

  2. 确保为要配置的侦听套接字启用了安全性。

    有关更多信息,请参见为侦听套接字启用安全性

  3. 手动编辑 magnus.conf 文件并提供以下设置的值:

    • SSLSessionTimeout

    • SSLCacheEntries

    • SSL3SessionTimeout

    有关 magnus.conf 的更多信息,参见《Sun Java System Web Proxy Server 4.0.8 Configuration File Reference》

使用外部加密模块

Proxy Server 支持按照以下方法使用外部加密模块(如智能卡或令牌环):

激活 FIPS-140 加密标准之前,必须添加 PKCS #11 模块。

本节包含以下主题:

安装 PKCS #11 模块

Proxy Server 支持公钥加密标准 (Public Key Cryptography Standard, PKCS) #11,该标准定义了在 SSL 和 PKCS #11 模块之间通信所使用的接口。PKCS #11 模块用于指向 SSL 硬件加速器的基于标准的连接。外部硬件加速器的已导入证书和密钥存储在 secmod.db 文件中,该文件在安装 PKCS #11 模块时生成。该文件位于 server-root/alias 目录中。

使用工具 modutil 安装 PKCS #11 模块

可使用 modutil 工具以 .jar 文件或对象文件形式安装 PKCS #11 模块

Procedure使用工具 modutil 安装 PKCS #11 模块

  1. 确保关闭了所有服务器(包括 Administration Server)。

  2. 转至包含数据库的 server-root/alias 目录。

  3. server-root/bin/proxy/admin/bin 添加到 PATH 中。

  4. server-root /bin/proxy/admin/bin 中找到 modutil

  5. 设置环境。

    • 在 UNIX 上:setenv

      LD_LIBRARY_PATH server-root/bin/proxy/lib:${LD_LIBRARY_PATH}

    • 在 Windows 上,将以下内容添加到 PATH

      LD_LIBRARY_PATH server-root/bin/proxy/bin

      您会发现您计算机的 PATH 列在 server-root/proxy-admserv/start 下。

  6. 在终端窗口中,键入 modutil

    将列出各种选项。

  7. 执行所需的操作。

    例如,要在 UNIX 中添加 PKCS #11 模块,请输入:

    modutil -addPKCS#11 文件的名称-libfile用于 PKCS #11 的 libfile-nocertdb -dbdir数据库目录)。

使用工具 pk12util 导出

使用 pk12util 可以将证书和密钥从内部数据库导出,以及将其导入到内部或外部 PKCS #11 模块。您可以将证书和密钥始终导出到内部数据库中,但多数外部令牌不会允许您导出证书和密钥。默认情况下,pk12util 使用名为 cert8.dbkey3.db 的证书数据库和密钥数据库。

Procedure从内部数据库导出证书和密钥

  1. 转至包含数据库的 server-root/alias 目录。

  2. server-root/bin/proxy/admin/bin 添加到 PATH 中。

  3. server-root /bin/proxy/admin/bin 中找到 pk12util

  4. 设置环境。

    • 在 UNIX 上:

      setenv LD_LIBRARY_PATH/ server-root/bin/proxy/lib:${LD_LIBRARY_PATH}

    • 在 Windows 上,将以下内容添加到 PATH

      LD_LIBRARY_PATH server-root/bin/proxy/bin

      您可以在以下位置找到您计算机的 PATH:server-root/proxy-admserv/start

  5. 在终端窗口中,键入 pk12util

    将列出各种选项。

  6. 执行所需的操作。

    例如,在 UNIX 中键入

    pk12util -o certpk12 -n Server-Cert [-d /server/alias] [-P https-test-host]

  7. 键入数据库密码。

  8. 键入 pkcs12 密码。

Procedure将证书和密钥导入内部或外部 PKCS #11 模块

  1. 转至包含数据库的 server-root/alias 目录。

  2. server-root/bin/proxy/admin/bin 添加到 PATH 中。

  3. server-root /bin/proxy/admin/bin 中找到 pk12util

  4. 设置环境。

    例如:

    • 在 UNIX 上:

      setenv LD_LIBRARY_PATH/ server-root/bin/proxy/lib:${LD_LIBRARY_PATH}

      • 在 Windows,将以下内容添加到 PATH

        LD_LIBRARY_PATH server-root/bin/proxy/bin

        可在 server-root/proxy-admserv/start 中找到您计算机的 PATH。

  5. 在终端窗口中,键入 pk12util

    将列出各种选项。

  6. 执行所需的操作。

    例如,在 UNIX 中输入:

    pk12util -i pk12_sunspot [-d certdir][-h “nCipher”][-P https-jones.redplanet.com-jones-]

    -P 必须跟在 -h 之后,且必须是最后一个参数。

    键入正确的令牌名称,包括大写字母和引号之间的空格。

  7. 键入数据库密码。

  8. 键入 pkcs12 密码。

使用外部证书启动服务器

如果将服务器的证书安装到外部 PKCS #11 模块(如硬件加速器),服务器将无法使用该证书启动,除非对 server.xml 文件进行编辑,或按如下所述指定证书名。

服务器会始终尝试使用名为 Server-Cert 的证书启动。但是,外部 PKCS #11 模块中的证书在其标识符中包括模块的某个令牌名称。例如,名为 smartcard0 的外部智能卡读取器上安装的服务器证书应命名为 smartcard0:Server-Cert

要使用安装在外部模块中的证书启动服务器,必须为在其上运行服务器的侦听套接字指定证书名称。

Procedure为侦听套接字选择证书名称

如果未在侦听套接字上启用安全性,将不会列出证书的信息。要为侦听套接字选择证书名称,首先必须确保已在该侦听套接字上启用了安全性。有关更多信息,请参见为侦听套接字启用安全性

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

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

  3. 单击要与证书关联的侦听套接字的链接。

  4. 从 "Server Certificate Name" 下拉式列表中为侦听套接字选择服务器证书,然后单击 "OK"。

    该列表中包含了所有已安装的内部和外部证书。

    但您也可以手动编辑 server.xml 文件,让服务器使用该服务器证书启动。将 SSLPARAMS 中的 servercertnickname 属性更改为:

    $TOKENNAME:Server-Cert

    要查找 $TOKENNAME 使用的值,请转至服务器的 "Security" 选项卡并选择 "Manage Certificates" 链接。当您登录到存储 Server-Cert 的外部模块时,$TOKENNAME:$NICKNAME 表单的列表中将显示其证书。

    如果未创建信任数据库,当申请或安装外部 PKCS #11 模块的证书时,将会为您创建一个信任数据库。创建的默认数据库没有密码,且无法访问。外部模块将工作,但您不能申请和安装服务器证书。如果创建了没有密码的默认数据库,请使用 "Security" 选项卡上的 "Create Database" 页面设置密码。

FIPS-140 标准

通过 PKCS #11 API,您可以与执行加密操作的软件或硬件模块进行通信。在 Proxy Server 上安装了 PKCS #11 之后,可以配置服务器使其符合 FIPS-140。FIPS 表示联邦信息处理标准 (Federal Information Processing Standard)。这些库仅包含在 SSL 3.0 中。

Procedure启用 FIPS-140

  1. 按照 FIPS-140 中的说明安装该插件。

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

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

    对于安全侦听套接字,"Edit Listen Sockets" 页面将显示可用的安全性设置。

    要使用 FIPS-140,请确保已在选定侦听套接字上启用了该安全性。有关更多信息,请参见为侦听套接字启用安全性

  4. 从 "SSL Version 3" 下拉式列表中选择 "Enabled"(如果尚未选定)。

  5. 选择相应的 FIPS-140 加密算法套件,然后单击 "OK":

    • 启用 Triple DES(168 位加密)和 SHA 验证 (FIPS)

      • 启用 DES(56 位加密)和 SHA 验证 (FIPS)

设置客户机安全性要求

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

客户机验证对于 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

设置更强大的加密算法

利用 Server Manager "Preferences" 选项卡上的 "Set Cipher Size" 选项可以选择使用 168 位、128 位或 56 位大小的密钥进行访问,或者无大小限制。您可以指定不符合限制条件时使用的文件。如果未指定文件,Proxy Server 将返回 "Forbidden" 状态。

如果选择的用于访问的密钥大小与 "Security Preference" 下的当前加密算法设置不一致,Proxy Server 将显示一条警告,指出您需要启用带有更大密钥大小的加密算法。

密钥大小限制的实现基于 obj.conf 中的 NSAPI PathCheck 指令,而不是 Service fn=key-toosmall。该指令为:

PathCheck fn="ssl-check" [secret-keysize=nbits ] [bong-file=filename ]

其中,nbits 是密钥中所需的最小位数,filename 是不符合限制条件时使用的文件的名称。

如果未启用 SSL 或未指定 secret-keysize 参数,PathCheck 将返回 REQ_NOACTION。如果当前会话的密钥大小小于所指定的 secret-keysize,则在未指定 bong-file 的情况下,该函数将返回 REQ_ABORTED(状态为 PROTOCOL_FORBIDDEN)。如果指定了 bong-file,该函数将返回 REQ_PROCEED,并将路径变量设置为 bong-file filename。而且,如果不符合密钥大小限制条件,当前会话的 SSL 会话高速缓存条目将失效,因此下次当同一台客户机连接到服务器时,将发生完整的 SSL 握手。


注 –

添加了 PathCheck fn=ssl-check 后,"Set Cipher Size" 表单将会删除对象中发现的所有 Service fn=key-toosmall 指令。


Procedure设置更强大的加密算法

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

  2. 单击 "Set Cipher Size" 链接。

  3. 从下拉式列表中选择要对其应用更强大的加密算法的资源,然后单击 "Select"。也可以指定一个正则表达式。

    有关更多信息,请参见第 16 章

  4. 选择密钥大小的限制:

    • 168 位或更大

      • 128 位或更大

      • 56 位或更大

      • 无限制

  5. 指定用于拒绝访问的消息的文件位置,并单击 "OK"。

    有关加密算法的更多信息,请参见Introduction to SSL

其他安全性注意事项

除了有人会尝试破坏加密之外,还存在其他安全性风险。网络面临的风险来自外部和内部的黑客,他们使用各种方法试图访问您的服务器以及服务器上的信息。除了在服务器上启用加密功能外,还应采取额外的安全性预防措施。例如,将服务器计算机放在一个安全的房间内,以及不允许任何不信任的个人将程序上载到您的服务器中。本节介绍使服务器更安全的一些重要内容。

本节包含以下主题:

限制物理访问

这种简单的安全方法常常会被忘记。将服务器计算机放在一个上锁的房间中,只有授权的用户才能进入该房间。此策略可防止任何人攻击服务器计算机本身。而且,要保护好计算机的管理(根)密码(如果有)。

限制管理访问

如果使用远程配置,请确保设置了访问控制,只允许少数用户和计算机进行管理。如果想要 Administration Server 为最终用户提供对 LDAP 服务器或本地目录信息的访问,请考虑维护两个 Administration Server 并使用群集管理。这样,启用了 SSL 的 Administration Server 将充当主服务器,另一个 Administration Server 供最终用户访问。有关群集的更多信息,请参见第 6 章

您还应为 Administration Server 打开加密功能。如果未将 SSL 连接用于管理,那么通过不安全的网络执行远程服务器管理时应该格外小心,因为任何人都可以截取您的管理密码并重新配置您的服务器。

选择强密码

您可以在服务器中使用多个密码:管理密码、私钥密码、数据库密码等等。管理密码是最重要的密码,因为持有该密码的用户可以在您的计算机上配置任何服务器。私钥密码是第二重要的密码。拥有您的私钥和私钥密码的任何用户都可以创建虚设服务器(伪装成您的服务器),或截取和更改服务器的通信信息。

密码最好便于您自己记忆,别人又无法猜到。例如,可以将 MCi12!mo 记成 "My Child is 12 months old!"。不要使用孩子的姓名或生日作为密码。

创建难以破解的密码

遵循以下指导可创建更强大的密码。不必将以下所有规则都用于一个密码,但使用的规则越多,密码就越难以猜到。一些提示:

更改密码或 PIN

请定期更改信任数据库/密钥对文件密码或 PIN。如果 Administration Server 中启用了 SSL,启动服务器时将需要此密码。定期更改密码可以增加对服务器的额外保护。

只能在本地计算机上更改此密码。有关更改密码时应考虑的准则列表,请参见创建难以破解的密码

Procedure更改信任数据库/密钥对文件密码

  1. 访问 Administration Server 或 Server Manager,并单击 "Security" 选项卡。

  2. 单击 "Change Key Pair File Password" 链接。

  3. 从 "Cryptographic Module" 下拉式列表中,选择要更改密码的安全令牌。

    默认情况下,内部密钥数据库的安全令牌为内部。如果安装了 PKCS #11 模块,将会列出了所有安全令牌。

  4. 键入当前密码。

  5. 键入新密码。

  6. 再次键入新密码,然后单击 "OK"。

    确保密钥对文件受到保护。Administration Server 将密钥对文件存储在 server-root/alias 目录中。

    确定备份磁带中是否存储了该文件,以及是否可能会被某些人截取。如果存储了该文件,必须像保护服务器一样尽力保护您的备份。

限制服务器上的其他应用程序

所有应用程序都在作为服务器的同一台计算机上运行时需要格外小心。某些人可能会利用服务器上运行的其他程序中的漏洞来避开服务器的安全保护。请禁用所有不必要的程序和服务。例如,UNIX sendmail 守护程序的安全难以配置,因此也就可以对其进行编程,以在服务器计算机上运行其他可能有危害的程序。

UNIX 和 Linux

小心选择从 inittab rc 脚本启动的进程。请不要从服务器计算机中运行 telnetrlogin。另外,服务器计算机上也不应包含 rdist。这可以分布文件,但也用于更新服务器计算机上的文件。

Windows

与其他计算机共享驱动器和目录时要格外小心。而且,要考虑哪些用户具有帐户或 guest 权限。在服务器上安装程序或者允许其他用户安装程序时要格外小心。其他用户的程序可能会存在安全漏洞。更糟糕的是,有人可能会上载怀有恶意的程序,目的就是破坏您的安全性。允许在您的服务器上安装程序之前一定要仔细检查这些程序。

禁止客户机高速缓存 SSL 文件

通过在 HTML 文件的 <HEAD> 部分中添加以下行,可以防止客户机高速缓存加密前的文件:

<meta http-equiv="pragma" content="no-cache">

限制端口

禁用计算机上未使用的所有端口。使用路由器或防火墙配置可以防止到绝对最小端口集以外的任何端口的传入连接。此保护意味着,获取计算机中 shell 的唯一方法是实际使用服务器,该服务器应已放置在受限制的区域中。

了解服务器的限制

服务器提供了服务器和客户机之间的安全连接。客户机获得信息之后,服务器既无法控制信息的安全性,也无法控制对服务器计算机本身及其目录和文件的访问。

了解这些限制有助于您理解要避免的情况。例如,您可以通过 SSL 连接获取信用卡号,但这些号码是否存储在服务器计算机上的安全文件中呢?SSL 连接终止后这些号码会怎样呢?请务必确保客户机通过 SSL 发送给您的所有信息的安全性。