Sun ONE logo      上一页      目录      索引      下一页     

Sun ONE Web Server 6.1 管理员指南

第 6 章
使用证书和密钥

本章介绍了如何使用证书和密钥验证来确保 Sun ONE Web Server 6.1 的安全性。还介绍了如何激活用于保护您的数据、拒绝入侵者访问和允许所需的访问的各种安全功能。Sun ONE Web Server 6.1 集成了所有 Sun ONE 服务器的安全体系结构:它建立在行业标准和公共协议基础之上,以获取最大的互操作性和一致性。

在阅读本章之前,您应该已经熟悉公共密钥加密的基本概念。这些概念包括加密和解密、公共密钥和专用密钥、数字证书以及加密协议。有关详细信息,请参阅 Introduction to SSL

以下各节详细介绍了确保 Web 服务器安全的过程:


基于证书的验证

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

使用证书进行验证

证书中包含的数字数据用于指定个人、公司或其他实体的名称,并证明证书中包含的公共密钥属于该实体。客户机和服务器都可以拥有证书。

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

除了公共密钥和由证书标识的实体名称之外,证书还包括到期日期、颁发该证书的 CA 的名称和颁发该证书的 CA 的“数字签名”。有关证书内容和格式的详细信息,请参见 Introduction to SSL


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


服务器验证

服务器验证指客户机对服务器进行的信任识别;即对被认为要对位于特定网络地址的服务器负责的组织进行识别。

客户机验证

客户机验证指服务器对客户机进行的信任识别;即对被认为使用客户端软件的人员进行识别。客户机可以有多个证书,如同一个人可以有几个不同的身份一样。

虚拟服务器证书

每台虚拟服务器可以拥有不同的证书数据库。每个虚拟服务器数据库可以包含多个证书。虚拟服务器的每个实例也可以拥有不同的证书。


创建信任数据库

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

创建信任数据库时,您需要指定将用于密钥对文件的密码。您还需要此密码来启动使用加密通信的服务器。有关更改密码时的注意事项列表,请参见“更改密码或 PIN”。

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

Administration Server 中只能有一个信任数据库。每个服务器实例都可以拥有自己的信任数据库。虚拟服务器将采用为其服务器实例创建的信任数据库。

创建信任数据库

要创建信任数据库,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 单击 "Create Database" 链接。
  4. 输入数据库的密码。
  5. 重复以上步骤。
  6. 单击 "OK"。
  7. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

使用 password.conf

默认情况下,Web 服务器会在启动之前提示管理员输入密钥数据库密码。如果希望重新启动一个无人参与的 Web 服务器,则需要将该密码保存在 password.conf 文件中。仅当系统受到充分的保护时才可以执行此操作,只有这样文件和密钥数据库才不会被损坏。

正常情况下,无法使用 /etc/rc.local/etc/inittab 文件启动已启用 SSL 的 UNIX 服务器,因为该服务器在启动之前要求输入密码。尽管可以通过将密码以纯文本格式存储在某个文件中来自动启动启用了 SSL 的服务器,但建议不要使用这种方法。服务器的 password.conf 文件应归超级用户或安装服务器的用户所有,并且只有所有者对其具有读写权限。

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

在 Windows 上,如果安装了 NTFS 文件系统,则应该限制对包含 password.conf 文件(即使不使用该文件)的目录的访问权限,从而保护包含该文件的目录。管理服务器用户和 Web 服务器用户应该对该目录具有读/写权限。保护该目录可以防止其他用户创建伪 password.conf 文件。您无法通过限制对 FAT 文件系统上的目录或文件的访问权限来保护它们。

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

如果您不担心会带来安全风险,请执行以下步骤自动启动启用了 SSL 的服务器:

  1. 确保已启用 SSL。
  2. 在服务器实例的 config 子目录中创建新的 password.conf 文件。
    • 如果使用的是服务器附带的内部 PKCS#11 软件加密模块,请输入以下信息:
    • internal:your_password

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

  3. 停止并重新启动服务器,以使新设置生效。

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


申请和安装 VeriSign 证书

VeriSign 是 Sun ONE Web Server 的首选证书授权机构。VeriSign 的 VICE 协议可以简化证书的请求过程。VeriSign 的优势在于能够直接将证书返回服务器。

为服务器创建证书信任数据库后,您可以申请一个证书并将其提交给认证机构 (CA)。如果公司有自己的内部 CA,则可以向其申请证书。如果打算从商业 CA 处购买证书,请选择一个 CA 并索要所需的特定格式信息。包括指向其站点链接的可用认证机构列表可以从 "Request a Certificate" 中获得。有关 CA 所需内容的详细信息,请参阅通过 "Server Administrator" 和 "Request a Certificate" 下的 "Server Manager Security Pages" 所获得的认证机构列表。

Administration Server 中只能有一个服务器证书。每个服务器实例可以拥有自己的服务器证书。您可以为每台虚拟服务器选择一个服务器实例证书。

申请 VeriSign 证书

要请求 VeriSign 证书,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 单击 "Request VeriSign Certificate" 链接。
  4. 查看所需的步骤。
  5. 单击 "OK"。
  6. 按照 VeriSign 中的步骤进行操作。

安装 VeriSign 证书

如果您申请了 VeriSign 证书并获得了批准,该证书会于一到三天内显示在 "Install VeriSign Certificate" 页面的下拉列表中。要安装 VeriSign 证书,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 单击 "Install VeriSign Certificate" 链接。
  4. 除非您将使用外部加密模块,否则从加密模块的下拉列表中选择内部(软件)模块。
  5. 输入密钥对文件密码或 PIN。
  6. 从下拉列表中选择要检索的事务 ID。
  7. 通常选择最后一个。

  8. 单击 "OK"。
  9. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。


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

除了 VeriSign,还可以从其他认证机构申请和安装证书。可以通过服务器管理员 (Server Administrator) 和 "Request a Certificate" 下的 "Server Manager Security" 获得 CA 列表。您的公司或组织可能会提供自己的内部证书。本节介绍如何申请和安装这些其他类型的服务器证书。

所需的 CA 信息

开始请求过程之前,请确保您了解 CA 所需的信息。无论从商业 CA 还是内部 CA 申请服务器证书,都需要提供以下信息:

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

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

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

申请其他服务器证书

要请求证书,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 单击 "Request a Certificate" 链接。
  4. 选择这是一个新证书,还是证书更新。
  5. 许多证书在一段时间(例如六个月或一年)后会到期。某些 CA 会自动发送证书更新。

  6. 要指定提交证书申请的方式,请执行以下步骤:
    • 如果 CA 期望以 Email 的形式收到申请,请选中 "CA Email" 并输入该 CA 的 Email 地址。要获得 CA 的列表,请单击 "List of available certificate authorities"。
    • 如果要从使用 Netscape 证书服务器 (Certificate Server) 的内部 CA 申请证书,请单击 "CA URL" 并输入该证书服务器的 URL。此 URL 应指向处理证书请求的证书服务器的程序。样例 URL 如下所示:https://CA.mozilla.com:444/cms
  7. 从下拉列表中选择申请证书时要使用的密钥对文件的加密模块。
  8. 输入密钥对文件的密码。
  9. 除非您选择内部模块以外的加密模块,否则该密码是您创建信任数据库时指定的密码。服务器将使用该密码获取专用密钥并加密发送给 CA 的信息,然后将您的公共密钥和加密的信息发送给 CA。CA 使用公共密钥来解密您的信息。

  10. 输入您的标识信息。
  11. 此信息的格式因 CA 而异。有关这些字段的常规说明,请参阅通过服务器管理员 (Server Administrator) 和 "Request a Certificate" 下的 "Server Manager Security" 中所获得的认证机构的列表。请注意,证书更新通常不需要此信息中的大部分内容。

  12. 仔细检查这些内容以确保其准确性。
  13. 信息越准确,批准证书的速度可能就越快。如果要将请求发送至证书服务器,您将在提交请求之前收到验证格式信息的提示。

  14. 单击 "OK"。
  15. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

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

如果选择通过 Email 发送申请,服务器将撰写包含申请的 Email 并将其发送给 CA。通常,证书会通过 Email 返回。如果您指定了指向证书服务器的 URL,服务器将使用 URL 向证书服务器提交申请。您可以通过 Email 或其他方式获得回应,这取决于 CA。

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


并不是所有从商业 CA 申请证书的用户都会获得证书。很多 CA 在向您颁发证书之前都需要您提供身份证明。而且,要获得批准可能需要一天到两个月的时间。您负责及时向 CA 提供所有必需的信息。


收到证书后,即可进行安装。在此期间,您仍然可以使用未安装 SSL 的服务器。

安装其他服务器证书

当您收到从 CA 发回的证书时,该证书将通过公共密钥加密,因此只有您可以将其解密。只有输入正确的信任数据库密码,才能解密和安装证书。

证书有三种类型:

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


如果 CA 未向您自动发送其证书,则您应该请求证书。很多 CA 在 Email 中包含他们的证书和您的证书,您的服务器将同时安装这两个证书。


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

安装证书

要安装证书,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 单击 "Install Certificate" 链接。
  4. 选中要安装的证书类型:
    • "This Server" 用于仅与您的服务器关联的单个证书。
    • "Server Certificate Chain" 用于要包含在证书链中的 CA 证书。
    • "Trusted Certificate Authority (CA)" 用于某个信任 CA 的证书,该 CA 将作为客户机验证的信任 CA 使用。
  5. 从下拉列表中选择加密模块。
  6. 输入密钥对文件密码。
  7. 如果该证书的名称是此服务器实例中使用的唯一名称,请保留 "a name for the certificate"(该证书的名称)字段为空,除非出现以下情况:
    • 多个证书将用于虚拟服务器
    • 输入服务器实例中唯一的证书名称

    • 使用了内部模块以外的加密模块
    • 在单个加密模块中,输入所有服务器实例中唯一的证书名称

      如果输入了名称,该名称将显示在 "Manage Certificates" 列表中,并且应为说明性名称。例如,"United States Postal Service CA" 是某个 CA 的名称,而 "VeriSign Class 2 Primary CA" 则同时说明了 CA 和证书的类型。如果未输入证书名称,则应用默认值。

  8. 选择以下任一选项:
    • "Message is in this file"(消息包含在此文件中),并输入已保存的 Email 的完整路径名
    • "Message text"(消息文本)(带标头),并粘贴 Email 文本
    • 如果复制并粘贴文本,请确保包含标头 "Begin Certificate" 和 "End Certificate",其中包含起始和终止连字符。

  9. 单击 "OK"。
  10. 选择以下任一选项:
    • "Add Certificate"(如果要安装新的证书)。
    • "Replace Certificate"(如果要安装证书更新)。
  11. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

证书将存储在服务器的证书数据库中。文件名为 <alias>-cert8.db。例如:


升级时迁移证书

如果要从 iPlanet Web Server 4.1 或 6.0 进行移植,您的文件(包括信任数据库和证书数据库)将被自动更新。

密钥对文件和证书只有在服务器启用了安全性时才能被迁移。也可以使用 "Administration Server" 和 "Server Manager" 中的 "Security" 选项卡自行迁移密钥和证书。

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

您可以通过 Administration Server(为其自身)或 Administration Server(为服务器实例)管理信任数据库及其委托证书,其中包括服务器证书和所有包含的认证机构。证书和密钥对数据库文件现在按使用它们的服务器实例命名。如果是在以前的版本中,多个服务器实例共享同一个别名,迁移时将为新服务器实例重命名证书和密钥对文件。

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

使用内置根证书模块

Sun ONE Web Server 6.1 附带的动态可装入根证书模块包括了许多 CA(其中包括 VeriSign)的根证书。通过根证书模块,您可以将根证书升级到更高的版本,且方法比以前容易的多。以前,您需要逐个删除旧的根证书,然后再逐个安装新的证书。要安装常用的 CA 证书,现在可以只将根证书模块文件更新到更高的版本,因为它在以后版本的 Sun ONE Web Server 或 Service Packs 中将可用。

因为根证书是作为 PKCS#11 加密模块实现的,所以绝不能删除该模块包含的根证书,并且管理这些证书时也不会提供删除证书的选项。要从服务器实例中移除根证书,可以通过删除服务器 alias 文件中的以下内容来禁用根证书模块:

如果以后要恢复根证书模块,则可以将扩展程序从 bin/https/lib(UNIX 和 HP)或 bin\https\bin (Windows) 复制回 alias 子目录。

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


管理证书

您可以查看、删除或编辑服务器上安装的各种证书的信任设置。其中包括您自己的证书和来自 CA 的证书。

要管理证书列表,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 单击 "Manage Certificates" 链接。
    • 如果要使用内部加密模块管理默认配置的证书,将显示所有已安装证书的列表,其中包括证书的类型和截止日期。所有证书都存储在 server_root/alias 目录中。
    • 如果要使用外部加密模块(例如硬件加速器),则需要先为每个特定模块输入密码,然后单击 "OK"。证书列表将更新,以便在模块中包含这些证书。
  4. 单击要管理的 "Certificate Name"(证书名称)。
  5. 将显示 "Edit Server Certificate",其中包含该证书类型的管理选项。只有 CA 证书允许您设置或取消设置客户机信任。某些外部加密模块不允许删除证书。

    编辑服务器证书
    图中显示了

  6. 在 "Edit Server Certificate" 窗口中,您可以选择以下选项:
    • "Delete Certificate" 或 "Quit"(对于内部获得的证书)
    • "Set client trust"、"Unset server trust" 或 "Quit"(对于 CA 证书)
  7. 单击 "OK"。
  8. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

证书信息中包含所有者和颁发证书的机构。

通过信任设置,您可以设置客户机信任或取消设置服务器信任。对于 LDAP 服务器证书,服务器必须被信任。


安装和管理 CRL 和 CKL

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

安装 CRL 或 CKL

要从 CA 获得 CRL 或 CKL,请执行以下步骤:

  1. 获取 CA 的 URL,以下载 CRL 或 CKL。
  2. 在浏览器中输入 URL,访问该站点。
  3. 按照 CA 的说明将 CRL 或 CKL 下载到本地目录中。
  4. 访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。
  5. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  6. 单击 "Install CRL/CKLs" 链接。
  7. 选择以下任一选项:
    • "Certificate Revocation List"(证书撤回列表)
    • "Compromised Key List"(损坏的密钥列表)
  8. 输入关联文件的完整路径名。
  9. 单击 "OK"。
    • 如果选择 "Certificate Revocation List",将显示 "Add Certificate Revocation List",其中列出了 CRL 信息。
    • 如果选择 "Compromised Key List",将显示 "Add Compromised Key List",其中列出了 CKL 信息。

      如果数据库中已存在 CRL 或 CKL 列表,将显示 "Replace Certificate Revocation List" 或 "Replace Compromised Key List"。


  10. 单击 "Add"。
  11. 单击 "OK"。
  12. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

管理 CRL 和 CKL

要管理 CRL 和 CKL,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 单击 "Manage CRL/CKLs" 链接。
  4. 将显示 "Manage Certificate Revocation Lists /Compromised Key Lists",其中列出了所有已安装的服务器 CRL 和 CKL 及其截止日期。

  5. 从 "Server CRLs" 或 "Server CKLs" 列表中选择 "Certificate Name"。
  6. 选择以下选项:
    • "Delete CRL"
    • "Delete CKL"
  7. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。


设置安全首选项

获得证书后,就可以开始保护您的服务器。Sun ONE Web Server 提供了多个安全元素。

加密是转换信息、使除预期接收者以外的任何人都无法识别信息的过程。解密是变换加密信息、使其重新可被识别的过程。Sun ONE Web Server 6.1 支持 SSL 和 TLS 加密协议。

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

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

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


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


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

有关各种加密算法套件的说明以及密钥和证书的详细信息,请参见 Introduction to SSL

要指定服务器可以使用的加密算法,请在列表中选中这些算法。除非有充分的理由不使用特定的加密算法,否则应全部选中。但是,您可能不希望启用非最优加密的加密算法。


注意

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


SSL 和 TLS 协议

Sun ONE Web Server 6.1 支持用于加密通信的安全套接字层 (SSL) 协议和传输层安全性 (TLS) 协议。SSL 和 TLS 是独立的应用程序,并且更高级的协议可以在它们上面透明地分层排列。

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

使用 SSL 与 LDAP 通信

您应该要求 Administration Server 使用 SSL 与 LDAP 进行通信。要启用 Administration Server 上的 SSL,请执行以下步骤:

  1. 访问 Administration Server 并选择 "Global Settings" 选项卡。
  2. 单击 "Configure Directory Service" 链接。
  3. 选择 "Yes" 使用安全套接字层 (SSL) 进行连接。
  4. 单击 "Save Changes"。
  5. 单击 "OK" 将您的端口更改为使用 SSL 的 LDAP 标准端口。

为侦听套接字启用安全性

您可以通过以下方式确保服务器侦听套接字的安全:

打开安全性

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

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

要在创建新的侦听套接字时打开安全性,请执行以下步骤:

  1. 访问 Server Manager 并从下拉列表中选择要在其中创建侦听套接字的服务器实例。
  2. 选择 "Preferences" 选项卡(如果尚未显示)。
  3. 选择 "Edit Listen Sockets" 链接。
  4. 将显示 "Edit Listen Sockets"。

  5. 单击 "New" 按钮。
  6. 将显示 "Add Listen Socket"。

  7. 输入所需信息并选择默认的虚拟服务器。
  8. 要打开安全性,请从 "Security" 下拉列表中选择 "Enabled"。
  9. 单击 "OK"。
  10. 单击 "Apply",然后单击 "Restart" 使更改生效。

    您需要在创建侦听套接字后,使用 "Edit Listen Sockets" 链接来配置安全设置。


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

您也可以在通过 Administration Server 或 Server Manager 编辑侦听套接字时打开安全性。要在编辑侦听套接字时打开安全性,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Security" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 选择 "Preferences" 选项卡(如果尚未显示)。
  4. 选择 "Edit Listen Sockets" 链接。
  5. 将显示 "Edit Listen Sockets"。

  6. 要编辑侦听套接字,请单击要编辑的侦听套接字的 "Listen Socket ID"。
  7. 将显示 "Edit Listen Socket"。

  8. 要为侦听套接字打开安全性,请从 "Security" 下拉列表中选择 "Enabled"。
  9. 单击 "OK"。
  10. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

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

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


必须至少安装了一个证书。


要为侦听套接字选择服务器证书以便使用,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Preferences" 选项卡。
  2. 对于 Server Manager,您必须先从下拉列表中选择服务器实例。

  3. 选择 "Edit Listen Sockets" 链接。
  4. 将显示 "Edit Listen Sockets"。

  5. 要编辑侦听套接字,请单击要编辑的侦听套接字的 "Listen Socket ID"。
  6. 将显示 "Edit Listen Socket"。

  7. 要为侦听套接字打开安全性,请从 "Security" 下拉列表中选择 "Enabled"。
  8. .


    如果安装了外部模块,将显示 "Manage Server Certificates" 页面,并要求在继续操作之前输入外部模块的密码。


  9. 从 "Server Certificate Name" 下拉列表中为侦听套接字选择服务器证书。
  10. 该列表中包含了所有已安装的内部和外部证书。


    如果未安装服务器证书,将显示警告消息而不是 "Server Certificate Name" 下拉列表。


  11. 单击 "OK"。
  12. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

选择加密算法

要保护 Web 服务器的安全性,应启用 SSL。您可以启用 SSL 2.0、SSL 3.0 和 TLS 加密协议并选择各种加密算法套件。可以在侦听套接字上为 Administration Server 启用 SSL 和 TLS。在侦听套接字上为 Server Manager 启用 SSL 和 TLS 将为所有与该侦听套接字关联的虚拟服务器设置安全首选项。

如果希望使用非加密的虚拟服务器,则必须将其配置为使用相同的侦听套接字,并且关闭安全性。

默认设置允许使用最常用的加密算法。除非有充分的理由不使用特定的加密算法套件,否则应全部启用。有关特定密码的详细信息,请参见 Introduction to SSL


必须至少安装了一个证书。


推荐使用的 tlsrollback 参数的默认设置为 True。这会将服务器配置为检测人为版本回滚攻击。将此值设置为 False 可能需要与某些未正确实现 TLS 规范的客户机之间的互操作性。

请注意,将 tlsrollback 设置为 False 会降低连接对版本回滚攻击的防护能力。版本回滚攻击是一种机制,第三方可以通过这种机制强制客户机和服务器使用安全性较低的早期协议(例如 SSLv2)进行通信。由于 SSLv2 协议中存在已知的不足之处,因此无法检测到版本回滚攻击将使第三方更容易截取和解密加密的连接。

要启用 SSL 和 TLS,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Preferences" 选项卡。
  2. 对于 Server Manager,您必须先从下拉列表中选择服务器实例。

  3. 单击 "Edit Listen Sockets" 链接。
  4. 将显示 "Edit Listen Sockets"。对于安全侦听套接字,"Edit Listen Socket" 中显示可用的加密算法设置。


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


  5. 选中所需加密设置对应的复选框。

    对于 Netscape Navigator 6.0,请选中 TLS 和 SSL3。对于 TLS 回滚也要选中 TLS,并确保禁用了 SSL3 和 SSL2。


  6. 单击 "OK"。
  7. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

    打开侦听套接字的安全性后应用更改时,系统将自动修改 magnus.conf 文件以显示安全性已打开,并且自动指定所有与该侦听套接字关联的虚拟服务器的默认安全参数。


在服务器上启用 SSL 后,它的 URL 将使用 https,而不是 http。指向启用了 SSL 的服务器上文档的 URL 具有以下格式:

例如,https://admin.sun.com:443

如果使用默认的安全 http 端口号 (443),则无需在 URL 中输入该端口号。

全局配置安全性

安装启用了 SSL 的服务器将在 magnus.conf 文件(服务器的主配置文件)中为全局安全参数创建指令条目。安全性必须设置为 "on",虚拟服务器安全设置才能正常运行。虚拟服务器的 SSL 特性可以以服务器为单位在 server.xml 文件的 SSLPARAMS 元素中查找。

要设置 SSL 配置文件指令的值,请执行以下步骤:

  1. 访问 Server Manager 并从下拉列表中选择虚拟服务器的服务器实例。
  2. 确保为要配置的侦听套接字启用了安全性。要进行此操作,请执行以下步骤:
    1. 单击 "Edit Listen Sockets" 链接。
    2. 单击要启用其安全性的侦听套接字所对应的 "Listen Socket ID"。
    3. 将转至 "Edit Listen Socket"。

    4. 从 "Security" 下拉列表中选择 "Enabled"。
    5. 单击 "OK"。
  3. 单击 "Magnus Editor" 链接。
  4. 从下拉列表中选择 "SSL Settings" 并单击 "Manage"。
  5. 输入以下各参数的值:
    • SSLSessionTimeout
    • SSLCacheEntries
    • SSL3SessionTimeout
  6. 单击 "OK"。
  7. 单击 "Apply",然后单击 "Restart" 使更改生效。

这些 SSL 配置文件指令如下所述:

SSLSessionTimeout

SSLSessionTimeout 指令用于控制 SSL2 会话缓存。

语法

SSLSessionTimeout seconds

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

SSLCacheEntries

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

SSL3SessionTimeout

SSL3SessionTimeout 指令用于控制 SSL3 和 TLS 会话缓存。

语法

SSL3SessionTimeout seconds

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


使用外部加密模块

Sun ONE Web Server 6.1 支持以下使用外部加密模块(例如智慧卡或令牌环)的方法:

激活 FIPS-140 加密标准之前,您需要添加 PKCS #11 模块。

安装 PKCS#11 模块

Sun ONE Web Server 支持公共密钥加密标准 (PKCS) #11,该标准定义了在 SSL 和 PKCS#11 模块之间通信所使用的接口。PKCS#11 模块用于指向 SSL 硬件加速器的基于标准的连接。外部硬件加速器的导入证书和密钥存储在 secmod.db 文件中,该文件在安装 PKCs#11 模块时生成。

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

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

要使用 modutil 安装 PKCS#11 模块,请执行以下步骤:

  1. 确保关闭了所有服务器(包括 Administration Server)。
  2. 转至包含数据库的 server_root/alias 目录
  3. server_root/bin/https/admin/bin 添加到您的 PATH 中。
  4. server_root/bin/https/admin/bin 中找到 modutil
  5. 设置环境。例如:
    • 在 UNIX 上:setenv
    • LD_LIBRARY_PATH server_root/bin/https/lib:${LD_LIBRARY_PATH}

    • 在 IBM-AIX 上:LIBPATH
    • 在 HP-UX 上:SHLIB_PATH
    • 在 Windows 上,将以下内容添加到 PATH

      LD_LIBRARY_PATH server_root/bin/https/bin

      您可以在以下目录中找到您计算机的 PATH:server_root/https-admin/start

  6. 输入命令:modutil
  7. 将列出各种选项。

  8. 执行所需的操作。
  9. 例如,要在 UNIX 中添加 PCKS#11 模块,您需要输入:

    modutil -add(PCKS#11 文件的名称)-libfile(PCKS#11 的libfile -nocertdb -dbdir(您的 db 目录)。

使用 pk12util

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

使用 pk12util 导出

要从内部数据库中导出证书和密钥,请执行以下步骤:

  1. 转至包含数据库的 server_root/alias 目录
  2. server_root/bin/https/admin/bin 添加到您的 PATH 中。
  3. server_root/bin/https/admin/bin 中找到 pk12util
  4. 设置环境。例如:
    • 在 UNIX 上:setenv
    • LD_LIBRARY_PATH/server_root/bin/https/lib:${LD_LIBRARY_PATH}

    • 在 IBM-AIX 上:LIBPATH
    • 在 HP-UX 上:SHLIB_PATH
    • 在 Windows 上,将以下内容添加到 PATH
    • LD_LIBRARY_PATH server_root/bin/https/bin

      您可以在以下目录中找到您计算机的 PATH:server_root/https-admin/start

  5. 输入命令:pk12util
  6. 将列出各种选项。

  7. 执行所需的操作。
  8. 例如,在 UNIX 中,您需要输入:

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

  9. 输入数据库密码。
  10. 输入 pkcs12 密码。
使用 pk12util 导入

要将证书和密钥导入内部或外部 PKCS#11 模块,请执行以下步骤:

  1. 转至包含数据库的 server_root/alias 目录
  2. server_root/bin/https/admin/bin 添加到您的 PATH 中。
  3. server_root/bin/https/admin/bin 中找到 pk12util
  4. 设置环境。例如:
    • 在 UNIX 上:setenv
    • LD_LIBRARY_PATH/server_root/bin/https/lib:${LD_LIBRARY_PATH}

    • 在 IBM-AIX 上:LIBPATH
    • 在 HP-UX 上:SHLIB_PATH
    • 在 Windows 上,将以下内容添加到 PATH
    • LD_LIBRARY_PATH server_root/bin/https/bin

      您可以在以下目录中找到您计算机的 PATH:server_root/https-admin/start

  5. 输入命令:pk12util
  6. 将列出各种选项。

  7. 执行所需的操作。
  8. 例如,在 UNIX 中,您需要输入:

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

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

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

  9. 输入数据库密码。
  10. 输入 pkcs12 密码。使用某个外部证书启动服务器。

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

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

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

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

要为侦听套接字选择证书名称,请执行以下步骤:


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


  1. 访问 Administration Server 或 Server Manager,然后选择 "Preferences" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 选择 "Preferences" 选项卡(如果尚未选定)。
  4. 单击 "Edit Listen Sockets" 链接。
  5. 将显示 "Edit Listen Sockets"。

  6. 单击要与证书关联的侦听套接字所对应的 "Listen Socket Id" 链接。
  7. 将显示 "Edit Listen Socket"。

  8. 从 "Server Certificate Name" 下拉列表中为侦听套接字选择服务器证书。
  9. 该列表中包含了所有已安装的内部和外部证书。


    如果未安装服务器证书,将显示警告消息而不是 "Server Certificate Name" 下拉列表。


  10. 单击 "OK"。
  11. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

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

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


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


FIPS-140 标准

通过 PKCS#11 API,您可以与执行加密操作的软件或硬件模块进行通信。在服务器上安装 PKCS#11 之后,您可以对 Sun ONE Web Server 进行配置,使其与联邦信息处理标准 (FIPS)-140 兼容。这些库仅包含在 SSL 3.0 版本中。

要启用 FIPS-140,请执行以下步骤:

  1. 按照 FIPS-140 中的说明安装该插件。
  2. 访问 Administration Server 或 Server Manager,然后选择 "Preferences" 选项卡。
  3. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  4. 单击 "Edit Listen Sockets" 链接。
  5. 将显示 "Edit Listen Sockets"。对于安全侦听套接字,"Edit Listen Socket" 中将显示可用的安全设置。


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


  6. 从 SSL 3 版本的下拉列表中选择 "Enabled"(如果尚未选定)。
  7. 选中适当的 FIPS-140 加密算法套件:
    • (FIPS) 56 位加密 DES 和 SHA 消息验证
    • (FIPS) 168 位加密 Triple DES 和 SHA 消息验证
  8. 单击 "OK"。
  9. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。


设置客户机安全要求

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

要求客户机验证

您可以为 Administration Server 和每个服务器实例启用侦听套接字,以要求客户机验证。启用客户机验证后,将需要客户机证书,然后服务器才将响应发送给查询。

Sun ONE Web Server 支持通过将客户机证书中的 CA 与签名客户机证书时信任的 CA 相匹配来验证客户机证书。您可以在 Administration Server 的 "Security" 下的 "Manage Certificates" 中查看签名客户机证书时信任的 CA 列表。CA 有四种类型:

您可以对 Web 服务器进行配置,以拒绝不具有来自信任 CA 的客户机证书的任何客户机。要接受或拒绝信任的 CA,必须为 CA 设置了客户机信任。详细信息,请参见“管理证书”。

如果证书已过期,Sun ONE Web Server 将记录错误、拒绝证书并向客户机返回一条消息。也可以在 Administration Server 的 "Manage Certificates" 页面中查看已过期的证书。

您可以对服务器进行配置,以便从客户机证书收集信息并将其与 LDAP 目录中的用户项相匹配。这样可以确保客户机具有有效的证书和 LDAP 目录中的项。而且还可以确保客户机证书与 LDAP 目录中的证书相匹配。要了解如何进行此操作,请参见“将客户机证书映射到 LDAP”。

您可以将客户机证书和访问控制结合使用,以便除了来自信任的 CA 以外,与证书关联的用户还必须与访问控制规则 (ACL) 相匹配。详细信息,请参见“使用访问控制文件”。

您也可以处理客户机证书的信息。有关详细信息,请参见《Sun ONE Web Server 6.1 NSAPI Programmer's Guide》。

申请客户机验证

要请求客户机验证,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager,然后选择 "Preferences" 选项卡。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 单击 "Edit Listen Sockets" 链接。
  4. 将显示 "Edit Listen Sockets"。

  5. 单击要为其申请客户机验证的侦听套接字所对应的 "Listen Socket Id" 链接。
  6. 将显示 "Edit Listen Socket"。

  7. 要为侦听套接字申请客户机验证,请从 "Client Authentication" 下拉列表中选择 "Required"。
  8. 单击 "OK"。
  9. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

    目前,每个 Web 服务器实例只有一个证书信任数据库。在该服务器实例下运行的所有安全虚拟服务器都共享同一个信任的客户机 CA 列表。如果两台虚拟服务器需要不同的信任 CA,则这些虚拟服务器应该在具有单独信任数据库的不同的服务器实例中运行。


将客户机证书映射到 LDAP

本节介绍 Sun ONE Web Server 用来将客户机证书映射到 LDAP 目录中的项的过程。

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


将客户机证书映射到 LDAP 之前,还需要设置所需的 ACL;有关详细信息,请参阅“控制对服务器的访问”。


服务器将尝试查看该 CA 是否与 Administration Server 中的某个信任 CA 相匹配。如果找不到匹配的 CA,Sun ONE Web Server 将终止连接。如果能够找到匹配的 CA,服务器将继续处理请求。

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

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

服务器了解了开始搜索的位置和需要搜索的内容(步骤 1)之后,将在 LDAP 目录中执行搜索(步骤 2)。如果未找到匹配项或找到多个匹配项,并且映射设置为验证证书,搜索将失败。有关预期搜索结果行为的完整列表,请参见下表“表 5-1”。请注意,您可以在 ACL 中指定预期的行为,例如,您可以指定 Sun ONE Web Server 在证书匹配失败时仅接受您。有关如何设置 ACL 首选项的详细信息,请参阅“使用访问控制文件”。

表 6-1 LDAP 搜索结果

LDAP 搜索结果

证书验证打开

证书验证关闭

未找到项

验证失败

验证失败

恰好找到一个项

验证失败

验证成功

找到多个项

验证失败

授权失败

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

使用 certmap.conf 文件

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

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

该文件包含了一个或多个已命名的映射,每个映射都应用于不同的 CA。映射的语法如下:

第一行用于指定项的名称以及形成 CA 证书中独特的名称的属性。该名称是任意的,您可以将其定义为所需的任何名称。但是,issuerDN 必须与颁发客户机证书的 CA 的颁发者 DN 完全匹配。例如,以下两个 issuerDN 行仅在分隔属性的空格上有所差异,但服务器将其视为两个不同的项:

已命名的映射中的第二行和随后的行将特性与值相匹配。certmap.conf 文件中包含六个默认特性(可以使用证书 API 自定义特性):

有关这些属性的更多信息,请参见“映射样例”中介绍的示例。

创建自定义特性

您可以使用客户机证书 API 创建自己的特性。有关程序设计和使用客户机证书 API 的信息,请参见 NSAPI Programmer's Guide。

创建自定义映射后,就可以引用以下格式的映射:

<name>:library <path_to_shared_library>
<name>:InitFn <name_of_init_function>

例如:

映射样例

certmap.conf 文件中应至少包含一项。以下示例说明了使用 certmap.conf 文件的不同方式。

示例 1

本示例表示了只有一个“默认”映射的 certmap.conf 文件:

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

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

示例 2

以下示例文件中包括两个映射:一个是默认映射,另一个用于美国邮电业 (US Postal Service):

如果服务器获得的证书来自美国邮电业以外的其他用户,则服务器将使用默认映射,即从 LDAP 树的顶端启动并搜索匹配客户机的 Email 和用户 ID 的条目。如果证书来自美国邮电业,服务器将从包含组织单位的 LDAP 分支启动并搜索匹配的 Email 地址。而且,请注意,如果证书来自 USPS,服务器将验证该证书,而不验证其他证书。


注意

证书中的颁发者 DN(即 CA 的信息)必须与映射的第一行中所列的颁发者 DN 一致。在以上示例中,来自颁发者 DN(即 o=United States Postal Service,c=US)的证书就不匹配,因为 oc 属性之间没有空格。


示例 3

以下示例使用 CmapLdapAttr 特性在 LDAP 数据库中搜索名为 certSubjectDN 的属性,该属性的值与客户机证书中的整个主题 DN 完全匹配。

如果客户机证书主题为:

服务器将首先搜索包含以下信息的项:

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


本示例假设 LDAP 目录中包含带有 certSubjectDN 属性的项。



设置更强大的加密算法

"Stronger Ciphers" 选项提供了用于访问的 168 位、128 位或 56 位大小的密钥还提供了无限制密钥。您可以指定不符合限制条件时使用的文件。如果未指定文件,Sun ONE Web Server 将返回 "Forbidden" 状态。

如果选择的用于访问的密钥大小与 "Security Preferences" 下的当前加密算法设置不一致,Sun ONE Web Server 将显示一个弹出对话框,警告您需要启用带有更大密钥大小的加密算法。

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

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

如果未启用 SSL 或未指定 secret-keysize 参数,PathCheck 将返回 REQ_NOACTION。如果当前会话的密钥大小小于指定的 secret-keysize,函数将返回状态为 PROTOCOL_FORBIDDENREQ_ABORTED(如果未指定 bong-file),否则函数将返回 REQ_PROCEED,并且 "path" 变量被设置为 bong-file <filename>。而且,如果不符合密钥大小限制条件,当前会话的 SSL 会话缓存项将失效,因此下次当同一台客户机连接到服务器时,将发生完整的 SSL 握手。


当 "Stronger Ciphers" 表单中添加 PathCheck fn=ssl-check 时,它将删除所有在对象中找到的 Service fn=key-toosmall 指令。


要设置更强大的加密算法,请执行以下步骤:

  1. 访问 Server Manager 并从下拉列表中选择服务器实例。
  2. 单击 "Virtual Server Class" 选项卡。
  3. 从下拉列表中选择一个类并单击 "Manage"。
  4. 将显示 "Class Manager"。

  5. 选择 "Content Mgmt" 选项卡。
  6. 选择 "Stronger Ciphers"。
  7. 通过以下方式选择以进行编辑:
    • 从下拉列表中
    • 单击 "Browse"
    • 单击 "Wildcard"
  8. 选择密钥大小的限制:
    • 168 位或更大
    • 128 位或更大
    • 56 位或更大
    • 无限制
  9. 输入要拒绝访问的消息所在的文件位置。
  10. 单击 "OK"。
  11. 单击 "Apply"。
  12. 选择冷启动/重新启动或动态应用。

有关详细信息,请参阅 Introduction to SSL


考虑其他安全问题

除了某些人会试图破解您的加密以外,还存在其他安全风险。网络面临的风险来自外部和内部的黑客,他们使用各种方法试图访问您的服务器以及服务器上的信息。

因此除了在服务器上启用加密外,还应采取额外的安全预防措施。例如,将服务器计算机放在一个安全的房间内,以及不允许不信任的个人将程序上载到您的服务器中。

以下各节介绍了可以使服务器更安全的重要方法:

限制物理访问

这种简单的安全方法常常会被忘记。将服务器计算机放在一个上锁的房间中,只有授权的用户才能进入该房间。这样可以防止任何人攻击服务器计算机本身。

而且,要保护好计算机的管理 (root) 密码(如果有)。

限制管理访问

如果使用远程配置,请确保设置了访问控制,只允许少数用户和计算机进行管理。如果希望 Administration Server 为最终用户提供对 LDAP 服务器或本地目录信息的访问,请考虑维护两台 Administration Server 和使用群集管理。这样启用了 SSL 的 Administration Server 可用作主服务器,而另一台 Administration Server 则用于最终用户的访问。

有关群集的更多信息,请参见“关于群集”。

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

选择可靠的密码

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

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

创建难以破解的密码

以下这些简单的指导可帮助您创建更安全的密码。

不必将以下所有规则都用于一个密码,但使用的规则越多,密码就越难以破解:

更改密码或 PIN

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

只能在本地计算机上更改此密码。有关更改密码时的注意事项列表,请参阅“创建难以破解的密码”。

更改密码

要更改 Administration Server 或服务器实例的信任数据库/密钥对文件密码,请执行以下步骤:

  1. 访问 Administration Server 或 Server Manager。
  2. 对于 Server Manager,必须先从下拉列表中选择服务器实例。

  3. 选择 "Change Password" 链接。
  4. 从下拉列表中选择要在其中更改密码的安全令牌。
  5. 默认情况下,内部密钥数据库的安全令牌为 "internal"。如果安装了 PKCS#11 模块,则会看到列出的所有令牌。单击 "Change Password" 链接。

  6. 输入当前密码。
  7. 输入新密码。
  8. 再次输入新密码。
  9. 单击 "OK"。
  10. 对于 Server Manager,单击 "Apply",然后单击 "Restart" 使更改生效。

确保您的密钥对文件受到保护。Administration Server 将密钥对文件存储在 server_root/alias 目录中。使文件和目录只能被您计算机上安装的 Sun ONE 服务器读取。

了解备份磁带上是否存储了该文件以及其他人是否能够截获该文件也很重要。如果存储了该文件,则必须像保护服务器一样尽力保护您的备份。

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

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

UNIX 和 Linux

小心选择从 inittabrc 脚本启动的进程。请不要在服务器计算机中运行 telnetrlogin。并且,也不应在服务器计算机中运行 rdist(该命令可以用来分发文件,也可以用于更新服务器计算机中的文件)。

Windows

与其他计算机共享驱动器和目录时要格外小心。而且,要考虑哪些用户具有帐户或 Guest 权限。

同样,在服务器上安装哪些程序以及是否允许其他用户在服务器上进行安装都要格外小心。其他用户的程序可能会存在安全漏洞。最糟糕的是,有人可能会上载怀有恶意的程序,目的就是破坏您的安全性。允许在您的服务器上安装程序之前一定要仔细检查这些程序。

禁止客户机缓存 SSL 文件

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

限制端口

禁用计算机上未使用的所有端口。使用路由器或防火墙配置可以防止到绝对最小端口集以外的任何端口的传入连接。这意味着获取计算机上 Shell 的唯一方法就是通过物理方式使用服务器计算机,该计算机应该已放置在一个受限制的区域内。

了解服务器的限制

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

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

进行其他更改以保护服务器

如果要同时使用受保护的和不受保护的服务器,则应该在受保护的服务器以外的其他计算机上操作不受保护的服务器。如果您的资源有限,必须在同一台计算机上运行不受保护的服务器和受保护的服务器,请执行以下操作:

chroot 允许您创建第二个根目录,以限制服务器使用特定的目录。可以使用此功能来保护不受保护的服务器。例如,您可以设置根目录为 /d1/ms。那么 Web 服务器尝试访问根目录时,将会真正获得 /d1/ms。如果尝试访问的是 /dev,则会获得 /d1/ms/dev 等等。这允许您在 UNIX/Linux 系统上运行 Web 服务器,而不必授予它对实际根目录下所有文件的访问权限。

但是,如果使用 chroot,则需要在替代根目录下设置 Sun ONE Web Server 所需的完整目录结构,如下图所示:

为虚拟服务器类指定 chroot

通过执行以下步骤可以为虚拟服务器类指定 chroot 目录:

  1. 访问 Server Manager 并从下拉列表中选择服务器实例。
  2. 选择 "Virtual Server Class" 选项卡。
  3. 单击 "Edit Classes" 链接。
  4. 确保将要指定 chroot 目录的类的 "Option" 设置为 "Edit"。
  5. 单击该类的 "Advanced" 按钮。
  6. 将显示 "Virtual Servers CGI Settings"。

  7. 在 "Chroot" 字段中输入完整的路径名。
  8. 单击 "OK"。
  9. 单击 "Apply"。
  10. 选择 "Load Configuration Files" 动态应用更改。

为虚拟服务器指定 chroot

通过执行以下步骤可以为特定虚拟服务器指定 chroot 目录:

  1. 访问 Server Manager 并从下拉列表中选择服务器实例。
  2. 选择 "Virtual Server Class" 选项卡。
  3. 从服务器的树视图中,单击要指定 chroot 目录的虚拟服务器的链接。
  4. 选择 "Settings" 选项卡。
  5. 将显示 "Settings"。

  6. 在 "Chroot Directory" 旁边的 "Set to" 字段中输入完整的路径名。
  7. 单击 "OK"。
  8. 单击 "Apply"。
  9. 选择 "Load Configuration Files" 动态应用更改。

您也可以使用 "Class Manager Virtual Servers" 选项卡和 "CGI Settings" 链接为虚拟服务器指定 chroot 目录。

有关如何为虚拟服务器指定 chroot 目录的详细信息,请参见《Sun ONE Web Server 6.1 Programmer's Guide》。



上一页      目录      索引      下一页     


版权所有 2004 Sun Microsystems, Inc. 保留所有权利。