你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

具有 Azure Front Door 的端到端 TLS

传输层安全性 (TLS) 以前称为安全套接字层 (SSL),是一种用于在 Web 服务器和客户端(如 Web 浏览器)之间建立加密链接的标准安全技术。 该链接可确保在服务器和客户端之间传递的所有数据都会得到保密和加密。

为了满足你的安全性或合规性要求,Azure Front Door 支持端到端 TLS 加密。 Front Door TLS/SSL 卸载会终止 TLS 连接,解密 Azure Front Door 的流量,并在将流量转发到源之前对其进行重新加密。 如果与源的连接使用源的公共 IP 地址,则在 Azure Front Door 上将 HTTPS 配置为转发协议是一种很好的安全做法。 通过使用 HTTPS 作为转发协议,可以在从客户端到源的整个请求处理过程中强制实施端到端 TLS 加密。 如果使用专用链接功能通过 Azure Front Door 高级版部署专用源,则还支持 TLS/SSL 卸载。

本文介绍 Azure Front Door 如何与 TLS 连接配合使用。 有关如何将 TLS 证书用于自己的自定义域的详细信息,请参阅 自定义域的 HTTPS。 若要了解如何在自己的自定义域上配置 TLS 证书,请参阅使用 Azure 门户在 Azure Front Door 上配置自定义域

端到端 TLS 加密

端到端 TLS 允许在传输到源时保护敏感数据,同时受益于全局负载均衡和缓存等 Azure Front Door 功能。 某些功能还包括基于 URL 的路由、TCP 拆分、距离客户端最近边缘位置上的缓存及在边缘自定义 HTTP 请求。

Azure Front Door 会在边缘卸载 TLS 会话,并对客户端请求进行解密。 然后,它会应用配置的传递规则,以便将请求路由到源组中的相应源。 接着,Azure Front Door 会在请求传输到源之前重新开始与源的 TLS 连接,并使用源的证书对所有数据进行重新加密。 来自源的任何响应都会经历相同的加密过程返回最终用户。 你可以将 Azure Front Door 配置为使用 HTTPS 作为转发协议,以启用端到端 TLS。

支持的 TLS 版本

Azure Front Door 支持 4 种 TLS 协议版本:TLS 版本 1.0、1.1、1.2 和 1.3。 2019 年 9 月之后创建的所有 Azure Front Door 配置文件均在已启用 TLS 1.3 的情况下使用 TLS 1.2 作为默认最小值,但为了保证后向兼容性,仍然支持 TLS 1.0 和 TLS 1.1。

尽管 Azure Front Door 支持 RFC 5246 中的 TLS 1.2(引入了客户端/相互身份验证),但目前 Azure Front Door 尚不支持客户端/相互身份验证 (mTLS)。

可以使用 Azure 门户或Azure REST API 在自定义域 HTTPS 设置中配置 Azure Front Door 中的最低 TLS 版本。 目前可以在 1.0 和 1.2 之间进行选择。 因此,将 TLS 1.2 指定为最低版本会控制 Azure Front Door 将从客户端接受的最低可接受 TLS 版本。 对于最低版本 TLS 1.2,协商将尝试建立 TLS 1.3,然后建立 TLS 1.2,而对于最低版本 TLS 1.0,将尝试所有 4 个版本。 当 Azure Front Door 启动到源的 TLS 流量时,它将尝试协商源能够可靠且始终接受的最佳 TLS 版本。 源连接支持的 TLS 版本是 TLS 1.0、TLS 1.1、TLS 1.2 和 TLS 1.3。

注意

  • 若要为符合 Microsoft SDL 要求的 EC 曲线(包括 Secp384r1、Secp256r1 和 Secp521)之一提供支持,必须使用启用了 TLS 1.3 的客户端,这样才能使用 TLS 1.3 成功地通过 Azure Front Door 发出请求。
  • 建议客户端在请求期间使用这些曲线之一作为首选曲线,以避免增加 TLS 握手延迟,该延迟可能是因多次往返协商支持的 EC 曲线导致的。

支持的证书

创建 TLS/SSL 证书时,必须使用 Microsoft 受信任 CA 列表中允许的证书颁发机构 (CA) 创建完整的证书链。 如果使用不允许的 CA,请求会被拒绝。

不允许来自内部 CA 的证书或自签名证书。

联机证书状态协议 (OCSP) 装订

默认情况下,Azure Front Door 中支持 OCSP 装订且无需经过任何配置。

源 TLS 连接(Azure Front Door 到源)

对于 HTTPS 连接,Azure Front Door 预期源会出示来自有效证书颁发机构 (CA) 的证书,该证书中的使用者名称与源主机名匹配。 例如,如果源主机名设置为 myapp-centralus.contosonews.net 并且源在 TLS 握手期间出示的证书的使用者名称中既没有 myapp-centralus.contosonews.net 也没有 *.contosonews.net,则 Azure Front Door 将拒绝连接,并且客户端将遇到错误。

注意

证书必须有包括叶证书和中间证书的完整证书链。 根 CA 必须是 Microsoft 受信任的 CA 列表的一部分。 如果提供的是没有完整链的证书,则不能保证涉及该证书的请求实现预期效果。

在某些用例(例如用于测试的用例)中,要解决 HTTPS 连接失败问题,可以对 Azure Front Door 禁用证书使用者名称检查。 请注意,源仍然需要提供具有有效受信任链的证书,但不必与源主机名匹配。

在 Azure Front Door 标准版和高级版中,可以配置源以禁用证书使用者名称检查。

在 Azure Front Door(经典版)中,可以通过更改 Azure 门户中的 Azure Front Door 设置来禁用证书使用者名称检查。 你还可以通过在 Azure Front Door API 中使用后端池的设置来配置检查。

注意

从安全角度来看,Microsoft 不建议禁用证书使用者名称检查。

前端 TLS 连接(客户端到 Azure Front Door)

要启用 HTTPS 协议以在 Azure Front Door 自定义域上安全地传递内容,可以选择使用由 Azure Front Door 托管的证书,或使用自己的证书。

有关详细信息,请参阅自定义域的 HTTPS

Azure Front Door 的托管证书通过 DigiCert 提供标准 TLS/SSL 证书,并存储在 Azure Front Door 的密钥保管库中。

如果你选择使用自己的证书,则可以从支持的 CA 加入证书,该证书可以是标准 TLS、扩展的验证证书,甚至通配符证书。 不支持自签名证书。 了解如何为自定义域启用 HTTPS

证书自动轮换

对于 Azure Front Door 托管证书选项,将在距离到期时间的 90 天内由 Azure Front Door 托管和自动轮换证书。 对于 Azure Front Door 标准/高级托管证书选项,将在距离到期时间的 45 天内由 Azure Front Door 托管和自动轮换证书。 如果你使用 Azure Front Door 托管证书并发现距离证书到期日期不到 60 天(对于标准/高级 SKU 为 30 天),请提交支持票证。

对于自定义的 TLS/SSL 证书:

  1. 请将机密版本设置为“最新”,以便在密钥保管库中有更新版本的证书可用时,自动将证书轮换为最新版本。 对于自定义证书,无论证书何时到期,证书都会在 3-4 天内自动轮换为更新版本的证书。

  2. 如果选择了特定版本,则不支持自动轮换。 你必须手动重新选择新版本才能轮换证书。 部署新版本的证书/机密最多需要 24 小时。

    注意

    如果域 CNAME 记录直接指向 Front Door 终结点或间接指向流量管理器终结点,Azure Front Door(标准和高级)托管证书会自动轮换。 否则,需要重新验证域所有权以轮换证书。

    你需要确保 Front Door 的服务主体有权访问密钥保管库。 请参阅如何授予对密钥保管库的访问权限。 只要证书的使用者名称或使用者替代名称 (SAN) 不发生更改,Azure Front Door 执行的这项已更新证书推出操作就不会在生产过程中造成任何停机时间。

支持的密码套件

对于 LS 1.2/1.3,支持的密码套件如下:

  • TLS_AES_256_GCM_SHA384(仅限 TLS 1.3)
  • TLS_AES_128_GCM_SHA256(仅限 TLS 1.3)
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

注意

对于 Windows 10 及更高版本,建议启用一个或全部两个 ECDHE_GCM 加密套件来增强安全性。 Windows 8.1、8 和 7 版本与这些 ECDHE_GCM 加密套件不兼容。 提供 ECDHE_CBC 和 DHE 加密套件是为了与这些操作系统兼容。

在启用 TLS 1.0 和 1.1 的情况下使用自定义域时,支持以下密码套件:

  • TLS_AES_256_GCM_SHA384(仅限 TLS 1.3)
  • TLS_AES_128_GCM_SHA256(仅限 TLS 1.3)
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

Azure Front Door 不支持为配置文件禁用或配置特定的密码套件。

后续步骤