第 3 章 配置 HTTPS

摘要

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

3.1. 身份验证替代方案

3.1.1. target-Only Authentication

概述

当为仅目标身份验证配置了应用程序时,目标会向客户端验证其自身,但客户端并不对目标对象进行身份验证,如 图 3.1 “仅限目标身份验证” 所示。

图 3.1. 仅限目标身份验证

只适用于目标身份验证的身份验证模式

Security handshake

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

在安全握手过程中,服务器将其证书链发送到客户端(请参阅 图 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 属性可以设置为 truefalse。如果设置为 true,则 want 设置会导致服务器在 TLS 握手期间请求客户端证书,但不会给缺少证书的客户端引发异常,因此只要 将所需的 属性设置为 false

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

注意

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

3.1.2. 双向身份验证

概述

当为 mutual 身份验证配置应用程序时,目标会向客户端验证其自身,客户端向目标验证其自身。这个场景在 图 3.2 “双向身份验证” 中进行了说明。在这种情况下,服务器和客户端都需要一个 X.509 证书进行安全握手。

图 3.2. 双向身份验证

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

Security handshake

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

在 TLS 握手过程中,服务器将其证书链发送到客户端,客户端将其证书链发送到服务器,请参阅 图 3.1 “仅限目标身份验证”

HTTPS 示例

在客户端,mutual 身份验证不需要策略设置。只需将 X.509 证书与客户端的 HTTPS 端口关联(请参阅 第 3.3 节 “指定应用程序自己的证书”)。您还需要为客户端提供可信 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 证书。required 属性设置为 true,指定没有客户端证书在 TLS 握手期间触发异常。

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

注意

选择密码套件可能会影响是否支持 mutual 身份验证(请参阅 第 4 章 配置 HTTPS 加密套件)。