JavaScript is required to for searching.
跳过导航链接
退出打印视图
在 Oracle Solaris 11.1 中保护网络安全     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  在虚拟化环境中使用链路保护

2.  调优网络(任务)

3.  Web 服务器和安全套接字层协议

SSL 内核代理加密 Web 服务器通信

使用 SSL 内核代理保护 Web 服务器(任务)

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

如何配置 Oracle iPlanet Web Server 以使用 SSL 内核代理

如何配置 SSL 内核代理以回退到 Apache 2.2 SSL

如何使用区域中的 SSL 内核代理

4.  Oracle Solaris 中的 IP 过滤器(概述)

5.  IP 过滤器(任务)

6.  IP 安全体系结构(概述)

7.  配置 IPsec(任务)

8.  IP 安全体系结构(参考信息)

9.  Internet 密钥交换(概述)

10.  配置 IKE(任务)

11.  Internet 密钥交换(参考信息)

词汇表

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

使用 SSL 内核代理保护 Web 服务器(任务)

以下过程说明如何配置 Web 服务器以使用 SSL 内核代理:

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

SSL 内核代理可加速 Apache 2.2 Web 服务器上的 SSL 包处理。此过程可实现图 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 选项一起设置存储 pempkcs12key-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 PKCS#11-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

如何配置 Oracle iPlanet Web Server 以使用 SSL 内核代理

SSL 内核代理可加速 Oracle iPlanet Web Server 上的 SSL 包处理。此过程可实现图 3-1 中所示的简单方案。

开始之前

已安装并配置 Oracle iPlanet Web Server。可从 Oracle iPlanet Web Server 下载服务器。有关说明,请参见 Oracle iPLANET WEB SERVER 7.0.15

您必须成为分配有 "Network Security"(网络安全)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  1. 停止 Web 服务器。

    使用管理员 Web 界面停止服务器。有关说明,请参见 Oracle iPLANET WEB SERVER 7.0.15

  2. 确定要用于 ksslcfg 命令的参数。

    有关完整的选项列表,请参见 ksslcfg(1M) 手册页。有关必须提供的参数列表,请参见如何配置 Apache 2.2 Web 服务器以使用 SSL 内核代理中的步骤 3

  3. 创建 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 PKCS#11-token -C certificate-label \ 
      -p password-file -x proxy-port ssl-port
  4. 验证实例是否处于联机状态。
    # svcs svc:/network/ssl/proxy
    STATE          STIME    FMRI
    online         02:22:22 svc:/network/ssl/proxy:default
  5. 配置 Web 服务器以在 SSL 代理端口上侦听。

    有关说明,请参见 Oracle iPLANET WEB SERVER 7.0.15

  6. 为 Web 服务器设置 SMF 相关性。

    Web 服务器服务仅在启动 SSL 内核代理实例之后才能启动。以下命令将建立该相关性,假设 Web 服务器服务的 FMRI 为 svc:/network/http:webserver7

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

如何配置 SSL 内核代理以回退到 Apache 2.2 SSL

在此过程中,从头配置 Apache 2.2 Web 服务器并将 SSL 内核代理配置为主 SSL 会话处理机制。如果客户机提供的 SSL 加密算法集合不包含 SSL 内核代理提供的加密算法,则 Apache 2.2 Web 服务器将用作回退机制。此过程可实现图 3-2 中所示的复杂方案。

开始之前

您必须承担 root 角色。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  1. 在 Apache 2.2 Web 服务器上,创建要由服务器的 SSL 内核代理使用的密钥证书。
    1. 生成证书签名请求 (Certificate Signing Request, CSR)。

      以下命令为 SSL 内核代理生成 CSR 及关联的私钥:

      # cd /root
      # openssl req \
      > -x509 -new \
      > -subj "/C=CZ/ST=Prague region/L=Prague/CN=`hostname`" \
      > -newkey rsa:2048 -keyout webkey.pem \
      > -out webcert.pem
      Generating a 2048 bit RSA private key
      .+++
      ........+++
      writing new private key to 'webkey.pem'
      Enter PEM pass phrase: JohnnyCashIsCool
      Verifying - Enter PEM pass phrase:  JohnnyCashIsCool
      #
      # chmod 440 /root/webcert.pem ; chown root:webservd /root/webcert.pem

      有关更多信息,请参见 openssl(5) 手册页。

    2. 向证书颁发机构 (Certificate Authority, CA) 发送 CSR。
    3. 使用 CA 的签名证书替换 webcert.pem 文件。
  2. 为 SSL 内核代理配置口令短语和公钥/私钥证书。
    1. 创建、保存和保护口令短语。
      # echo "RefrigeratorsAreCool" > /root/kssl.pass
      # chmod 440 /root/kssl.pass; chown root:webservd /root/kssl.pass

      注 - 口令短语不能包含空格。


    2. 将私钥证书和公钥证书合并到一个文件中。
      # cat /root/webcert.pem /root/webkey.pem > /root/webcombo.pem
    3. 为 SSL 内核代理配置公钥/私钥证书和口令短语。
      # ksslcfg create -f pem -i /root/webcombo.pem -x 8443 -p /root/kssl.pass 443
  3. 将 Web 服务器配置为在端口 8443 上侦听纯文本。

    /etc/apache2/2.2/httpd.conf 文件中编辑 Listen 行。

    # pfedit /etc/apache2/2.2/httpd.conf
    ...
    ## Listen 80
    Listen 8443
  4. 将 SSL 模块模板 ssl.conf 添加到 Apache 配置目录。
    # cp /etc/apache2/2.2/samples-conf.d/ssl.conf /etc/apache2/2.2/ssl.conf

    该模块为加密连接添加侦听端口 443

  5. 使 Web 服务器可解密 /root/kssl.pass 中的口令短语。
    1. 创建一个读取 kssl.pass 文件的 shell 脚本。
      # pfedit /root/put-passphrase.sh
      #!/usr/bin/ksh -p
      ## Reads SSL kernel proxy passphrase
      /usr/bin/cat /root/kssl.pass
    2. 使脚本可执行并保护该文件。
      # chmod 500 /root/put-passphrase.sh
      # chown webservd:webservd /root/put-passphrase.sh
    3. ssl.conf 文件中修改 SSLPassPhraseDialog 参数以调用 shell 脚本。
      # pfedit /etc/apache2/2.2/ssl.conf
      ...
      ## SSLPassPhraseDialog  builtin
      SSLPassPhraseDialog exec:/root/put-passphrase.sh
  6. 将 Web 服务器的公钥和私钥证书置于正确位置。

    ssl.conf 文件中的 SSLCertificateFileSSLCertificateKeyFile 参数值包含预期的位置和名称。您可以将证书复制或链接到正确位置。

    # ln -s  /root/webcert.pem /etc/apache2/2.2/server.crtSSLCertificateFile default location
    # ln -s /root/webkey.pem /etc/apache2/2.2/server.keySSLCertificateKeyFile default location
  7. 启用 Apache 服务。
    # svcadm enable apache22
  8. 可选验证两个端口是否正在运行。

    使用 openssl s_clientkstat 命令查看包。

    1. 使用可供 SSL 内核代理使用的加密算法。
      # openssl s_client -cipher RC4-SHA -connect web-server:443

      kstat 计数器 kssl_full_handshakes 增加 1 可确认 SSL 内核代理已对 SSL 会话进行处理。

      # kstat -m kssl -s kssl_full_handshakes
    2. 使用不可供 SSL 内核代理使用的加密算法。
      # openssl s_client -cipher CAMELLIA256-SHA -connect web-server:443

      kstat 计数器 kssl_fallback_connections 增加 1 可确认包已到达,但 Apache Web 服务器已对 SSL 会话进行处理。

      # kstat -m kssl -s kssl_fallback_connections

示例 3-1 配置 Apache 2.2 Web 服务器以使用 SSL 内核代理

以下命令将为使用 pem 密钥格式的 SSL 内核代理创建一个服务实例:

# ksslcfg create -f pem -i cert-and-key.pem -p kssl.pass -x 8443 443

如何使用区域中的 SSL 内核代理

SSL 内核代理在区域中工作时具有以下限制:

开始之前

已在非全局区域中配置并启用 Web 服务器服务。

您必须成为分配有 "Network Security"(网络安全)和 "Zone Management"(区域管理)权限配置文件的管理员。有关更多信息,请参见《Oracle Solaris 11.1 管理:安全服务》中的"如何使用指定给您的管理权限"

  1. 在非全局区域中停止 Web 服务器。

    例如,要停止 apache-zone 区域中的 Apache Web 服务器,请运行以下命令:

    apache-zone # svcadm disable svc:/network/http:apache22
  2. 在全局区域中,为区域中的 SSL 内核代理创建服务实例。

    要为 apache-zone 创建服务实例,请使用类似下面的命令:

    # ksslcfg create -f pem -i /zone/apache-zone/root/keypair.pem \
    -p /zone/apache-zone/root/skppass -x 8443 apache-zone 443
  3. 在非全局区域中,启用 Web 服务实例。

    例如,启用 apache-zone 中的 Web 服务。

    apache-zone # svcadm enable svc:/network/http:apache22