Sun WebServer 安装指南,Solaris for Intranets 版

第 3 章 SSL 配置

SSL 要求概览

本节逐个解释为了在 Web 站点使用"安全插座层"(SSL) 而需要在您的站点安装的每一个主要组件,目的是为了使您对于必须安装什么和这些组件如何交互作用,有一个大致的了解。在 "SSL 配置步骤" 中有关于配置 SSL 的步骤的列表。

在 Web 站点可以使用 SSL 之前,它必须有用来加密的公共和私有密钥,以及一个可以提供给客户的 X.509 证书。该证书含有该 Web 站点的标识(判别名)、颁发者的标识、该 Web 站点的公共密钥以及颁发者的数字签名。公共 Web 站点的证书一般是由一个第三方认证机构 (Certificate Authority,CA) 签署的,如 VeriSign;如果一个客户也有该第三方 CA 的公共密钥,那么它可以相信该站点的标识已经过核实,是可靠的。


注意:

本文档中的"证明"指一个密钥包--公共和私有密钥-及有关证书。


Sun WebServer 包括用来运行 CA 的软件。该 CA 可以为 Web 站点创建 SSL 证明。其它工具用来安装 Web 站点的证明供 Sun WebServer 实例使用,以及取得由第三方签署的证明和安装第三方证书。

必须在您的站点完成下列操作,才能运行 SSL:

根认证机构 (Root CA)

您需要在自己的站点创建一个 Root CA 以便为 Web 站点创建证明。Root CA 用户将为自己创建证明,然后用这些证明为您的网络中的 Web 服务器创建密钥包和签署证书。您可以将证明存储在"联合命名服务" (FNS) 中以便于从别的机器上访问,或者只将它们存储在 Root CA 机器上的文件中以限制访问。在缺省状态下,它们存储在 /var/fn 中。

Root CA 主机(证明在此创建)不必和 Sun WebServer 是同一台机器。出于安全的原因,您可能想在不同的机器上或者干脆在不能上网的机器上运行 Root CA。


注意:

只有自己签署的证书才需要完成上述步骤。如果只使用第三方证书则不需要。


Root CA 用户

您可以在 Root CA 主机上使用 root (UID 0) 以外的任何用户名做 Root CA 用户。Root CA 用户是唯一能够为 Web 站点创建证明的用户。Root CA 用户将拥有自己的、受口令保护的证明,用来签署它创建的所有证书。

Root CA 证明被绑定到判别名 (DN) 条目。所有证明都被绑定到某个 DN。Root CA 判别名使用下列属性:

 属性类型 缩写 示例
 公用名 cn cn=rootca
 电子邮件地址 em em=rootca@A.net
 序号 serial serial=no12345
 组织单位名  ou ou=web
 机构名 o o=A.net
 地区名 l l=internet
 州或省名 st st=California
 国名 c c=US

在 DN 中属性的顺序是很重要的。DN 必须以最具体的属性开始,依次排列到最不具体的属性。这些属性以最具体(公用名)到最不具体(国家)的顺序在表中排列。

所有证明都存储在 Root CA 用户所拥有的一个目录中,该目录不应是公开可读的。Root CA 用户的证明(以及每个 Web 站点的证明)将可通过"联合命名服务"(FNS) 得到。

Root CA 主机

所有使用 SSL 或密钥包的计算机都将需要安装安全工具包。必须至少有一台机器,即 Root CA 主机,上面

Root CA 将为此主机上的 Web 站点创建和存储证明。

在 Root CA 主机上不必运行 Sun WebServer。Sun WebServer 机器可以通过从 Root CA 主机复制文件,来获得对其上的 Web 站点的证明的访问权。

联合命名服务 (Federated Naming Service,FNS)

FNS 是 SSL 安全工具用来访问证明的接口。Sun WebServer 安全软件包创建一个命名服务环境,在其中存储和从文件中检索证明。

去除任何已有的 FNS 软件包,安装与 Sun WebServer 捆绑的 SUNWfns 软件包。

此步骤在您安装 Sun WebServer 之前完成。如果您未去除 SUNWfns 和安装捆绑的软件包,那么现在就在您将使用 SSL 的主机上进行这些工作,包括 Root CA 主机。


注意:

作为 Solaris 2.6 的一个组成部分的 SUNWfns 软件包不能与 SSL 共用。去除该软件包不会使您丢失任何数据。一旦新的 SUNWfns 软件包安装之后,您已有的 FNS 环境将得到保留。两种软件包均为 11.6.0 版,但 pkginfo -l SUNWfns 的完全 版本 是供所支持的软件包使用的 11.6.0,REV=1998.02.08.15.10


启用了 SSL 的 Sun WebServer

若要使 Web 站点支持 SSL,您需要一个 Sun WebServer 实例,该实例拥有所有的 SSL 软件包和库可供使用,并在将要使用 SSL 的每一个 IP 地址的端口上启用 SSL。

一旦 Root CA 创建了证明,这些证明必须安装在站点所在的 Sun WebServer 机器上。

Web 站点的唯一 IP

Root CA 用户使用 Web 站点的主机名和 IP 地址为 Web 站点创建证明。这些证明必须被绑定到一个唯一的主机名和 IP 地址,因此必须有一个唯一的 IP 地址,该地址为每一个启用了 SSL 的站点提供一个 SSL 端口。

证书签署

当一个客户连接到一个启用了 SSL 的 Web 站点端口时,它请求该站点的证明。要核实这些证明,它们必须被该客户拥有其公共密钥并对其信任的一个 CA 签署。

由于大多数客户不会有您的本地 Root CA 的公共密钥,因此您将需要取得由一个著名的 CA 签署的站点证明,如 VeriSign。

SSL 配置步骤

本节列出了配置 SSL 的主要步骤。每一个步骤都有指向更详细步骤的链接。

如果您对运行 SSL 和认证机构所需要的环境不熟悉,请在进行下列步骤之前参阅 "SSL 要求概览"

  1. "Root CA 的配置"

  2. "创建证明"

  3. "在 Web 站点上启用 SSL "

  4. (可选)"申请签署证书 "

Root CA 的配置

需要"根认证机构"(Root CA) 为您的网络上的 Web 站点创建密钥包和证书。如果您对 Root CA 用户和 Root CA 机器的作用不熟悉,请参阅 "SSL 要求概览"

您需要配置 Root CA 机器,然后创建能够为 Web 站点创建证明的 Root CA。

配置 Root CA 机器
  1. 确保机器上安装的用来生成证明的软件包是正确的:

    SUNWhttp

    含有用来运行 Root CA 的工具和正文。

    SUNWfns

    最新"联合命名服务"文件。

    SUNWski

    SKI 库。

    SUNWskica

    用来生成密钥包和证书的加密软件。

    SUNWskicw

    Root CA 的许可软件。

    SUNWskimc

    SKI 1.0 软件(CA Man 页软件包)

    SUNWskimu

    SKI 1.0 软件(CA 用户 Man 页软件包)

    SUNWssl

    SSL 1.0 软件(全球版本库)

    SUNWskild

    SKI 1.0 软件包(美国和加拿大库)

    SUNWssld

    SSL 1.0 软件(美国和加拿大库)

    如果您选择安装 SSL,那么这些软件包在安装 Sun WebServer 时都将被安装。

  2. Sun WebServer 安装将会启动为生成安全密钥和证书所需要的进程。确保下列进程在运行:

    • /usr/lib/security/skiserv

    • /usr/lib/security/cryptorand

  3. 选择或创建一个用户为 Root CA 用户。


    注意:

    本文档将称此用户为 rootca,但您可以从 /etc/passwd 选择任何 UNIX 用户名。


  4. 创建一个由 rootca 所拥有的目录,用来存储证明。

    此目录对于别人应为不可读取的。例如:


    # mkdir /var/SSL_CERTS# chmod 700 /var/SSL_CERTS# chown rootca /var/SSL_CERTS
    
创建 Root CA
  1. 为 root CA 确定判别名 (DN) 条目。

    有关详情,请参阅 "Root CA 用户"。DN 的一个示例是 cn=rootca, o=A.net, st=California, c=US

  2. 作为 Root CA 用户登录到 Root CA 机器。

  3. 运行 create_rootca

    如果在 /usr/bin 中没有 create_rootca,则说明您没有在本机上安装 SUNWski 软件包。

  4. 输入 Root CA 的 DN。


    输入判别名(例如:"o=SUN, c=US") 或 q[uit]: cn=rootca, o=A.net, st=California, c=US
    
  5. 输入将存储证明的目录名。


    输入存储密钥包和证书的目录路径名,或 q[uit]。  目录名?/var/SSL_CERTS
    

    正文将会为 Root CA 生成公共和私有密钥。所有密钥包都由口令保护以防未经授权的使用。

  6. 输入 Root CA 密钥包的口令。


    keypkg:输入您的"新"密钥包口令: keypkg:重新输入您的"新"密钥包口令:
    
  7. 您可以选择使密钥包在命名服务中可用。若要将密钥包存储在命名服务中,您将需要机器的根口令。

    密钥包总是存储在文件中。使密钥包可在命名服务中使用将使其它安全工具不需要路径全名,即可定位密钥。

    Root CA 现在已经配置好。下一步是由 Root CA 为 Web 站点生成密钥包和证书。

    继续进行下一个配置步骤,"创建证明"

  8. 如果您不选择这个选项,则把证明保存在 FNS 中,然后手工存储证明:


    # skistore -d dirname
    

    其中 dirname 如第 5 步所指定。

创建证明

Root CA 在 Root CA 机器上为 Web 站点创建和存储证明。作为一种选择,此后证书可以由另一个 CA 签署,如 VeriSign。当证明准备好之后,它们被安装在 Sun WebServer 机器上供 Web 站点使用。


注意:

本文档中的"证明"指一个密钥包 -公共和私有密钥- 及有关证书。


为 Web 站点创建证明
  1. 为 Web 站点确定判别名条目,使用"全限定域名"(FQDN) 作为公用名 (cn)。

    有关证书中的判别名的详细信息,请参见 "Root CA 用户"

  2. 作为 Root CA 用户登录到 Root CA 机器上。

  3. 创建一个目录,用来存储您将要创建的证明。


    rootca % mkdir /var/SSL_CERTS/121.122.123.12/
    
  4. 选择适当的选项运行 /usr/http/bin/setup_creds

    有效选项为:

    -d output_directory

    指定证明应存储的目录;例如,/var/SSL_CERTS/121.122.123.12/

    -f trusted_file

    (不必需;用来在设置时为其它可信赖的 CA 添加证书。)指定含有 Root CA 证书的文件的全路径名,例如,/export/skirca2/certs/skirca2.CERT

    -i IP_Address

    指定正在为其创建证明的 Web 站点的 IP 地址。

    -r rootca

    (可选)指定 Root CA 用户名(您用来运行正文的用户名)。如果 -r 被省略,setup_creds 将会要求提供本系统上的 Root CA 用户的用户名。


    # /usr/http/bin/setup_creds -r rootca \
        -d /var/SSL_CERTS/121.122.123.12/ -i 121.122.123.12
    
  5. 只作为 Web 站点的名称输入主机名。您下一步将被要求输入域名。

    例如,如果 Web 站点是 www.V.com,则输入 www


    输入您在其上运行 httpd 服务器的主机名: (敲回车键使用本地主机)www
    
  6. 输入 Web 站点的域名。


    输入您的服务器的域名(例如,eng.sun.com)V.com
    
  7. 输入 Web 站点的 DN 属性,不带公用名 (cn)。


    为您的服务器输入判别名后缀(例如,o=SUN, c=US):o="Company V", st=California, c=US
    
  8. 输入此 Web 站点的证明的新口令。

    每个密钥包都有一个口令,该口令应该与 Root CA 的证明的口令不同。


    请提供口令以加密您的服务器的私有密钥。 安装证书时您将会需要它。 输入口令: 重新输入口令:          使用配置文件 '/tmp/try/host_config  skilogin:输入您自己的密钥包口令:
    
  9. 站点的密钥包和证书将被生成并存储在您指定的输出目录中。

    证书的位置是 output_directory/certs/IP_Address.cert。在此例中,它是 /var/SSL_CERTS/121.122.123.12/certs/121.122.123.12.cert

    如果您在另一个证书之上重新安装此证书,您将会需要这个证书。

  10. 重复 1 至 9 步以便为其它 Web 站点生成证明。

您现在有了一个"自我签署"的证书。如果连接的浏览器的可信赖 CA 表中有您的 Root CA,则您可以使用此证书进行 SSL 加密。这在您的组织中是很有用的,您可以更新需要使用 SSL 的浏览器(例如,如果您用 SSL 保护"Sun WebServer 管理控制台")。但是,Internet 上的大多数客户都不会知道您的 Root CA,因此您会想让证书由第三方为公共 SSL 站点签署。当您在 Sun WebServer 机器上安装了证明之后,请参阅 "申请签署证书 "

继续 "在 Web 站点上启用 SSL " 中的步骤。

在 Web 站点上启用 SSL

在 Web 站点上启用 SSL 要求进行三个步骤:确保 SSL 软件包已安装,在运行 Sun WebServer 的机器上安装证明,以及在 Web 站点可以使用的端口上配置 SSL。

创建站点证明

在 Sun WebServer 机器上安装站点证明
  1. 存储站点的证明的目录需要复制到 Sun WebServer 机器上。

    如果 Root CA 机器和 Sun WebServer 机器是同一台机器,则跳过这一步。

    您可以将目录移到一张软盘或其它便携的媒体上,或通过 NFS 与 Sun WebServer 机器共享该目录。

    不管哪种情况,都应复制您为 setup_creds 的输出指定的目录及其所有子目录。该目录应包含:

    • certs/IP_Address.CERT

    • keypkgs/IP_Address.KEYPKG

    其中 IP_Address 是 Web 站点使用的地址。

  2. 作为 Sun WebServer 机器上的根,运行 /usr/http/bin/install_certs

    您将需要指定证明的路径、Web 站点的 IP 地址以及 Sun WebServer 进程的用户 ID (uid)。例如


    # /usr/http/bin/install_certs -p /floppy/cert_floppy -i \ 121.122.123.12 0
    
  3. 输入此 Web 站点的密钥包口令。

    这是 "创建证明" 中的步骤 步骤 8 指定的口令。


    /usr/bin/skilogin:输入主机密钥包口令
    

    证明现在存储在 Sun WebServer 机器上。按照下一个步骤对 Web 站点进行配置以使用 SSL。

配置 Web 站点以使用 SSL

您必须在使用 SSL 的 Web 站点的 IP 地址上创建端口。用于 SSL 连接的缺省端口是 443。

这些说明是假设您正在使用"Sun WebServer 管理控制台"。您还可以通过编辑 Web 站点的服务器实例的配置文件来配置端口(例如,/etc/http/sws_server.httpd.conf)。如果选择编辑配置文件,请参阅 httpd.conf(4) 的 man 页。

配置 Web 站点以使用 SSL:
  1. 连接"Sun WebServer 管理控制台"并登录。

    有关连接的信息,参见 第 2 章,配置管理服务器

  2. 在"服务器"列表中找到该 Web 站点所在的服务器实例。如果配置页未列出,单击"+"以展开文件夹。

  3. 如果不知道 Web 站点的 IP 地址,选择"Web 站点"页。

    Web 站点使用的 IP 地址显示在列表中。


    注意:

    IP 地址不可以被多个 Web 站点使用。SSL 被绑定到一个唯一的 IP 地址和主机名。


  4. 单击"IP/ 端口"页向 Web 站点的 IP 地址添加一个端口。

    "网络连接"列表将在右侧显示,列出此服务器实例使用的所有 IP 地址和端口。

  5. 单击"添加"以创建一个使用 Web 站点的 IP 地址和端口 443 的"网络连接"。

    "网络连接"对话框打开。

  6. 在"IP 地址"和"端口"域填上 Web 站点的 IP 地址和您想激活 SSL 的端口(通常为 443)。设置"超时"及是否"允许 HTTP 1.0"保留""。

    如果对"超时"和"允许 HTTP 1.0"保留""没有把握,单击对话框中的"帮助"。为获得良好的效果,设置"超时"为 300 秒,并允许 HTTP 1.0"保留"。

  7. 单击"启用 SSL"框。

  8. 如果您只想接受具有有效个人证书的客户的连接,单击"要求客户证书"框。

    有关此部分的详细信息,请单击该对话框中的"帮助"。

  9. 设置要启用的密码组。

    服务器将与客户协商以使用一个公用的密码组。如果客户和服务器公有的密码组不止一个,则将使用最强的那组。

    如果您有美国 / 加拿大加密软件,您可以选择 128 位、40 位或两者都选。除非您想明确地要求客户某一个,否则请选择两者。

    如果您有全球加密软件,您只可以使用 40 位的密码组。单击 40 位框。

  10. 单击"确定"以保存变更,然后选择"服务器->保存 IP/ 端口"。

  11. 如果您正在服务器实例的缺省站点上配置 SSL,则跳过剩余步骤。

    服务器上的缺省站点侦听为该服务器定义的所有连接端点,因此不需要向 Web 站点添加新的 SSL 连接。

  12. 从"服务器列表"选择"Web 站点"页,在列表中选择 Web 站点。选择"服务器->编辑 Web 站点"。

    在"编辑 Web 站点"对话框中,从"连接"列表中找到启用了 SSL 的网络连接并选择它。这些连接列为 IP_Address:Port 组合。

  13. 单击 > 以在"站点连接"列表中移动该连接。


    注意:

    对于缺省站点,此选项是禁止的,因为缺省站点自动侦听服务器的所有连接端点。如果您正在为服务器实例配置缺省站点,则跳过 12 至 15 步。


  14. 单击 保存 以确认 Web 站点的变更。

  15. 选择 服务器->保存 以保存变更。

    接着进行下一个配置步骤,"申请签署证书 "

申请签署证书

让独立的 CA 签署 Web 站点的证书,与让独立的审查者担保站点的标识是等效的。客户可能不会相信一个安全的站点确如它所声称的那么安全,除非它的证明由客户信任的 CA 进行了"数字化签署"。

Sun WebServer 当前只支持 VeriSign 作为第三方 CA。您可以使用随 Sun WebServer 提供的工具,通过 VeriSign 的公共 Web 站点给 VeriSign 发送一个证书和证书签署申请 (CSR)。

申请签署 Web 站点证书
  1. 您的本地 Root CA 必须生成证明并将其存储在 Sun WebServer 机器上。

    参见 "创建证明""在 Web 站点上启用 SSL "

  2. 作为超级用户 (root) 登录到 Sun WebServer 机器上。

  3. 运行 send_request 实用程序以生成可以发送给 CA 的证书。

    在命令行,您必须指定您希望其证书被签署的站点的 IP 地址。该便携证书将存储在 /tmp 中的一个文件里,除非您使用 -o 指定一个不同的目录(该目录必须已经存在)。


    # mkdir /var/SSL_CERTS/requests
    # /usr/http/bin/send_request -o /var/SSL_CERTS/requests \ 121.122.123.12
    
  4. 输入 Web 站点的密钥包口令。

    这不是 Root CA 的密钥包口令。这是您运行 setup_creds 时创建的口令。

  5. 证书签署申请将存储在您指定的目录或 /tmp 中的名为 cert.request 的文件中。

    该文件的内容可以通过 VeriSign 的 Web 站点发送给 VeriSign。

  6. 您将需要按照 CA 的签署证书申请步骤操作。在其过程中,您将需要向 CA 提供所生成的证书文件。

    若要申请一个 VeriSign 证书,请访问 http://www.verisign.com/idcenter/new/。您将需要为 Sun Microsystems 提供的服务器软件申请一个服务器证书。

  7. 当 CA 发来签署的证书时,将它保存在一个文件中。

    例如,将回复保存在 /tmp/121.122.123.12.cert 中。


    小心:小心:

    不要将 CA 发来的证书保存在 Root CA 用来存储证明的目录中。


  8. 作为根运行 /usr/http/bin/install_external,以便使签署的证书可为 SSL 使用。

启用客户鉴别

如果客户有数字 ID,您可以将 SSL 用作鉴别客户连接的一种方法。目前 Sun WebServer 支持 VeriSign 的个人数字 ID。VeriSign 提供三个级别的个人数字 ID,基于密钥和保险的保护力度:

您可以配置 SSL Web 站点以要求客户鉴别,并对接受哪个级别的个人 ID 进行定义。

为 SSL 要求客户鉴别
  1. 登录到"Sun WebServer 管理控制台",并转到启用了 SSL 的 Web 站点所在的服务器的"IP/ 端口" 列表。

  2. 选择此 Web 站点使用的启用了 SSL 的连接,然后单击"编辑"。

    "编辑网络连接"对话框打开。

  3. 在对话框中,单击 "申请客户证书" 框,然后单击"确定"。

  4. 选择"已选择->保存 IP/ 端口"以保存配置。

  5. 返回命令行,成为超级用户。

  6. 该命令的语法是:

    setup_client_auth -e | -d -i IP_Address Signer

    -e 标志启用、-d 标志禁止对具有由Signer (签署者)签署的证书的客户的访问。IP_Address 是启用了 SSL 的 Web 站点的 IP 地址。

    签署者可以为 VeriSign 的某一个级别:第 1 级、第 2 级或第 3 级。

    多次运行 setup_client_auth 以启用或禁止多个签署者。启用的 CA 被添加到 Web 站点的可信赖密钥列表中。