在 Oracle® Solaris 11.2 中确保网络安全

退出打印视图

更新时间: 2014 年 9 月
 
 

如何配置 Apache 2.2 Web 服务器以使用 SSL 内核代理

SSL 内核代理可加速 Apache 2.2 Web 服务器上的 SSL 包处理。此过程可实现Figure 3–1 中所示的简单方案。

开始之前

已配置 Apache 2.2 Web 服务器。Oracle Solaris 中包含该 Web 服务器。

您必须承担 root 角色。

  1. 停止 Web 服务器。
    # svcadm disable svc:/network/http:apache22
  2. 将服务器私钥和服务器证书放置在一个文件中。

    如果只在 ssl.conf 文件中指定了 SSLCertificateFile 参数,则指定的文件可直接用于 SSL 内核代理。

    如果还指定了 SSLCertificateKeyFile 参数,则必须合并证书文件和私钥文件。运行与下面类似的命令以合并文件:

    # cat cert.pem key.pem > cert-and-key.pem
  3. 确定要用于 ksslcfg 命令的参数。

      有关完整的选项列表,请参见 ksslcfg(1M) 手册页。必须提供的参数遵循:

    • key-format-与 –f 选项一起定义证书和密钥格式。对于 SSL 内核代理,支持的格式为 pkcs11pempkcs12

    • key-and-certificate-file-与 –i 选项一起设置存储 pempkcs12 key-format 选项的服务器密钥和证书的文件位置。

    • password-file-与 –p 选项一起获取用于加密 pempkcs12key-format 选项的密钥的口令。对于 pkcs11,该口令用于验证 PKCS #11 令牌。必须使用 0400 权限保护口令文件。无人参与的重新引导需要该文件。

    • token-label-与 –T 选项一起指定 PKCS #11 令牌。

    • certificate-label-与 –C 选项一起选择 PKCS #11 令牌的证书对象中的标签。

    • proxy-port-与 –x 选项一起设置 SSL 代理端口。必须指定标准端口 80 之外的其他端口。Web 服务器在 SSL 代理端口上侦听未加密纯文本流量。通常,此值为 8443

    • ssl-port-为 SSL 内核代理指定侦听端口。通常,此值为 443

  4. 创建 SSL 内核代理 的服务实例。

    使用以下格式之一指定 SSL 代理端口及关联的参数:

    • 指定 PEM 或 PKCS #12 作为密钥格式。
      # ksslcfg create -f key-format -i key-and-certificate-file \
      -p password-file -x proxy-port ssl-port
    • 指定 PKCS #11 作为密钥格式。
      # ksslcfg create -f pkcs11 -T PKCS11-token -C certificate-label \ 
      -p password-file -x proxy-port ssl-port
  5. 验证服务实例是否处于联机状态。
    # svcs svc:/network/ssl/proxy
    STATE          STIME    FMRI
    online         02:22:22 svc:/network/ssl/proxy:default

    以下输出表明未创建服务实例:

    svcs: Pattern 'svc:/network/ssl/proxy' doesn't match any instances
    STATE          STIME    FMRI
  6. 配置 Web 服务器以在 SSL 代理端口上侦听。

    编辑 /etc/apache2/2.2/http.conf 文件并添加一行,以定义 SSL 代理端口。如果使用服务器的 IP 地址,Web 服务器将只在该接口上侦听。该行类似于以下内容:

    Listen proxy-port
  7. 为 Web 服务器设置 SMF 依赖性。

    Web 服务器服务仅在启动 SSL 内核代理实例之后才能启动。以下命令将建立该相关性:

    # svccfg -s svc:/network/http:apache22
    svc:/network/http:apache22> addpg kssl dependency
    ...apache22> setprop kssl/entities = fmri:svc:/network/ssl/proxy:kssl-INADDR_ANY-443
    ...apache22> setprop kssl/grouping = astring: require_all
    ...apache22> setprop kssl/restart_on = astring: refresh
    ...apache22> setprop kssl/type = astring: service
    ...apache22> end
  8. 启用 Web 服务器服务。
    # svcadm enable svc:/network/http:apache22