第 3 章 配置 HTTPS

摘要

本章论述了如何配置 HTTPS 端点。

3.1. 验证方案

3.1.1. target-Only Authentication

概述

当为只为目标验证配置了应用程序时,目标会将自己验证给客户端,但客户端并不对目标对象进行身份验证,如 图 3.1 “只适用于目标身份验证” 所示。

图 3.1. 只适用于目标身份验证

仅限目标身份验证的验证模式

安全握手

在运行应用程序前,客户端和服务器应设置为如下:

在安全握手期间,服务器会将其证书链发送到客户端(请参阅 图 3.1 “只适用于目标身份验证”)。然后,客户端会搜索其可信 CA 列表以查找与服务器证书链中之一的 CA 证书匹配的 CA 证书。

HTTPS 示例

在客户端中,只验证目标不需要策略设置。只需在不将 X.509 证书与 HTTPS 端口关联 的情况下,配置您的客户端。您必须为客户端提供可信 CA 证书列表(请参阅 第 3.2 节 “指定受信任的 CA 证书”)。

在服务器端,在服务器的 XML 配置文件中,确保 sec:clientAuthentication 元素不需要客户端身份验证。可以省略此元素,在这种情况下,默认策略 不需要 客户端身份验证。但是,如果存在 sec:clientAuthentication 元素,则应按照以下方式进行配置:

<http:destination id="{Namespace}PortName.http-destination">
  <http:tlsServerParameters secureSocketProtocol="TLSv1">
    ...

    <sec:clientAuthentication want="false" required="false"/>
  </http:tlsServerParameters>
</http:destination>
重要

您必须将 secureSocketProtocol 设置为服务器端的 TLSv1,以便防止 Poodle 漏洞(CVE-2014-3566)

如果 want 属性设为 false(默认值),指定服务器不会在 TLS 握手期间从客户端请求 X.509 证书。required 属性也被设置为 false(默认值),指定没有客户端证书在 TLS 握手期间不会触发异常。

注意

want 属性可以设为 true 或设置为 false。如果设置为 true,则 希望 设置会导致服务器在 TLS 握手过程中请求客户端证书,但对缺少证书的客户端没有引发异常,只要将所需的属性设置为 false

另外,还需要将 X.509 证书与服务器的 HTTPS 端口(请参阅 第 3.3 节 “指定应用程序的 Own 证书” )关联,并为服务器提供可信 CA 证书列表(请参阅 第 3.2 节 “指定受信任的 CA 证书”

注意

密码套件的选择可能会影响是否支持仅限目标验证(请参阅 第 4 章 配置 HTTPS Cipher Suites)。

3.1.2. 双向身份验证

概述

当为相互验证配置了应用程序时,目标会将自己验证给客户端,客户端则向目标验证自己。图 3.2 “双向身份验证” 中演示了这种情况。在这种情况下,服务器和客户端都需要一个 X.509 证书才能获得安全性。

图 3.2. 双向身份验证

客户端和服务器与其他方进行身份验证

安全握手

在运行应用程序前,客户端和服务器必须设置如下:

在 TLS 握手期间,服务器会将其证书链发送到客户端,并且客户端将其证书链发送到服务器 - 请参阅 图 3.1 “只适用于目标身份验证”

HTTPS 示例

在客户端中,没有相互身份验证所需的策略设置。只需将 X.509 证书与客户端的 HTTPS 端口关联(请参阅 第 3.3 节 “指定应用程序的 Own 证书”)。您还需要为客户端提供可信 CA 证书列表(请参阅 第 3.2 节 “指定受信任的 CA 证书”)。

在服务器端,在服务器的 XML 配置文件中,确保将 sec:clientAuthentication 元素配置为 需要 客户端身份验证。例如:

<http:destination id="{Namespace}PortName.http-destination">
  <http:tlsServerParameters secureSocketProtocol="TLSv1">
    ...
    <sec:clientAuthentication want="true" required="true"/>
  </http:tlsServerParameters>
</http:destination>
重要

您必须将 secureSocketProtocol 设置为服务器端的 TLSv1,以便防止 Poodle 漏洞(CVE-2014-3566)

如果 want 属性设为 true,指定服务器在 TLS 握手期间从客户端请求 X.509 证书。必需 属性也设为 true,指定没有客户端证书在 TLS 握手期间触发异常。

另外,还需要将 X.509 证书与服务器的 HTTPS 端口(请参阅 第 3.3 节 “指定应用程序的 Own 证书”)关联,并为服务器提供可信 CA 证书列表(请参阅 第 3.2 节 “指定受信任的 CA 证书”

注意

密码套件的选择可能会影响是否支持相互验证(请参阅 第 4 章 配置 HTTPS Cipher Suites)。