Leer en inglés

Compartir a través de

什么是 Azure 应用服务中的 TLS/SSL?

Nota

Azure 服务上的 TLS 1.1 和 TLS 1.0 停用不会影响在 Azure 应用服务、Azure Functions 或 Azure 逻辑应用(标准)上运行的应用程序。 配置为接受 TLS 1.1 或 TLS 1.0 传入请求的应用服务、Azure Functions 或 Logic Apps(标准版)上的应用程序可以继续运行而不受影响。

传输层安全性 (TLS) 是一种广泛采用的安全协议,旨在保护服务器和客户端之间的连接和通信。 在 Azure 应用服务中,可以使用 TLS 和安全套接字层 (SSL) 证书来帮助保护 Web 应用中的传入请求。

应用服务支持 TLS 来帮助确保:

  • 传输中的数据加密。
  • 使用受信任的证书对 Web 应用进行身份验证。
  • 用于防止数据在传输过程中被篡改的完整性。

TLS 版本支持

Azure 应用服务对向 Web 应用发出的传入请求支持以下 TLS 版本:

  • TLS 1.3:最新版本和最安全的版本现已完全受支持。
  • TLS 1.2:新 Web 应用的默认最低 TLS 版本。
  • TLS 1.1 和 TLS 1.0:支持向后兼容性的版本,但不建议这样做。

可以为发往你的 Web 应用及其源代码管理管理器 (SCM) 站点的传入请求配置最低 TLS 版本。 默认情况下,最低设置为 TLS 1.2。

可以使用 Azure Policy 来帮助审核资源和最低 TLS 版本。 转到 应用服务应用应使用最新的 TLS 版本策略定义 ,并将值更改为希望 Web 应用使用的最低 TLS 版本。 有关其他应用服务资源的相关 策略定义,请参阅内置策略定义列表 - 适用于应用服务的 Azure Policy

TLS 1.3

应用服务完全支持 TLS 1.3,它引入了 TLS 1.2 的多项改进:

  • 安全性更强,具有简化的密码套件和前向保密性。
  • 加快握手速度,降低延迟。
  • 加密握手消息以提高隐私性。

要要求所有入站请求都使用 TLS 1.3,请在 Azure 门户、Azure CLI 或 Azure 资源管理器模板(ARM 模板)中将“最低入站 TLS 版本”设置为“TLS 1.3”。

TLS 1.3 支持以下密码套件,这些套件是固定的,无法自定义:

  • TLS_AES_256_GCM_SHA384
  • TLS_AES_128_GCM_SHA256

这些套件提供强加密,并在协商 TLS 1.3 时自动使用。

TLS 1.2

TLS 1.2 是应用服务的默认 TLS 版本。 它提供强加密和广泛的兼容性,同时满足支付卡行业数据安全标准 (PCI DSS) 等合规性标准。 默认情况下,新的 Web 应用和 SCM 终结点使用 TLS 1.2,除非你更改它们。

Azure 应用服务使用一组安全的 TLS 1.2 密码套件来帮助确保加密连接并防范已知漏洞。 尽管可以启用 TLS 1.1 和 TLS 1.0 来实现后向兼容性,但建议使用最低版本的 TLS 1.2。

TLS 1.1 和 TLS 1.0

TLS 1.1 和 TLS 1.0 被视为旧协议,不再被视为安全协议。 应用服务仅支持这些版本以实现后向兼容性,应尽可能避免使用。 新应用的默认最低 TLS 版本为 TLS 1.2,建议迁移使用 TLS 1.1 或 TLS 1.0 的应用。

Importante

对 Web 应用的传入请求和对 Azure 的传入请求的处理方式不同。 应用服务继续对发往 Web 应用的传入请求支持 TLS 1.1 和 TLS 1.0。

对于直接发往 Azure 控制平面的传入请求(例如,通过 Azure 资源管理器或 API 调用),建议不要使用 TLS 1.1 或 TLS 1.0。

最低 TLS 密码套件

Nota

多租户应用服务上的基本 SKU 或更高版本支持“最低 TLS 密码套件”设置。

最低 TLS 密码套件包括一个固定的密码套件列表,其中包含无法更改的最佳优先级顺序。 不建议对密码套件重新排序或重新排列优先级,因为这可能会将 Web 应用暴露给较弱的加密。 也不能向此列表添加新的或不同的密码套件。 选择最低密码套件时,系统会自动为 Web 应用禁用所有不安全的密码套件。 不能有选择地仅禁用一些较弱的密码套件。

什么是密码套件以及它们如何在应用服务上运行?

密码套件是一组指令,其中包含有助于保护客户端和服务器之间的网络连接的算法和协议。 默认情况下,前端 OS 选择应用服务和客户端支持的最安全密码套件。 但是,如果客户端仅支持弱密码套件,则前端 OS 最终会选择弱密码套件。 如果组织对允许的密码套件有限制,则可以更新 Web 应用的最低 TLS 密码套件属性,以确保为 Web 应用禁用弱密码套件。

使用群集设置 FrontEndSSLCipherSuiteOrder 的应用服务环境

对于配置了 FrontEndSSLCipherSuiteOrder 群集设置的应用服务环境,请更新设置以包括两个 TLS 1.3 密码套件:

  • TLS_AES_256_GCM_SHA384
  • TLS_AES_128_GCM_SHA256

更新群集设置后,必须重启前端才能使更改生效。 此外,即使更新以支持 TLS 1.3,仍必须包含前面所述的两个必需的密码套件。 如果已使用 FrontEndSSLCipherSuiteOrder,建议不要为 Web 应用启用“最低 TLS 密码套件”。 结果可能是冲突的配置。 仅配置其中一个选项来管理密码套件首选项。

端到端 TLS 加密

端到端 (E2E) TLS 加密可确保 Azure 应用服务中的前端与辅助角色之间的通信使用 TLS 进行加密。 如果没有此功能,而传入 HTTPS 请求会被加密到前端,则从前端到运行应用程序工作负载的辅助角色的流量将在 Azure 基础结构内以未加密的形式传输。

E2E TLS 有助于确保以下两者之间的流量完全加密:

  • 客户端和应用服务前端
  • 托管应用程序的应用服务前端和辅助角色进程

此功能适用于:

  • 高级应用服务计划(建议用于新部署)
  • 旧版标准应用服务计划(现有用户)

Importante

建议对需要 E2E 加密和其他高级安全功能的新部署使用高级计划。

启用端到端 TLS 加密

可以通过以下方式启用 E2E TLS 加密:

  • Azure 门户设置
  • Azure CLI 命令
  • 自动化的 ARM 模板

启用 E2E TLS 加密后,Web 应用的所有群集内通信都使用 TLS 进行加密,确保端到端数据保护。

应用服务上的 TLS/SSL 证书

要提供 HTTPS 流量,应用服务需要绑定到自定义域的 TLS/SSL 证书。 应用服务提供多个证书选项,从完全托管的免费证书到客户管理的证书。

证书类型

  • 应用服务托管证书 (免费)

    • 免费提供。
    • 完全由 Azure 应用服务管理,包括自动续订。
    • 客户无法访问、导出或使用应用服务外部的这些证书。
    • 不支持通配符或自定义根 CA。
  • 应用服务证书 (ASC)

    • GoDaddy 颁发的付费证书。
    • 客户拥有和管理证书。
    • 存储在客户的 Key Vault(KV)中,可以在应用服务外部导出和使用。
  • 自带证书(BYOC)

    • 上传和管理自己的 TLS/SSL 证书(PFX 格式)。
    • 完全由客户管理。

每个选项都根据安全性和管理需求提供灵活性。

将证书绑定到自定义域

上传或创建证书后,可以使用以下方法将其绑定到 Web 应用上的自定义域:

  • 适用于多租户托管的 SNI(服务器名称指示)SSL 绑定
  • 专用 IP 地址的 IP SSL 绑定

Nota

Azure 托管域(如 *.chinacloudsites.cn)会自动使用默认证书进行保护,因此无需额外配置。

相互 TLS (mTLS) 身份验证

Azure 应用服务在 Linux 和 Windows App 服务计划中均支持相互 TLS (mTLS),因此应用可能需要客户端证书来增强安全性。

mTLS 的工作原理

  • 客户端提供根据配置的受信任 CA 链验证的证书。
  • 只有具有有效证书的客户端才能连接。
  • 它通常用于保护 API 和内部应用。

配置选项

  • 使用 Azure 门户、Azure CLI 或 ARM 模板启用 mTLS。
  • 上传受信任的 CA 证书进行客户端验证。
  • 通过请求标头访问应用代码中的客户端证书信息。

自动证书管理

Azure 应用服务提供内置功能来自动管理证书:

  • 应用服务托管证书(免费)。 已为自定义域自动颁发和续订。 这些证书仅限于基本域验证,不支持通配符或可导出的证书。

  • 应用服务证书(付费)。 支持高级应用场景的完全托管证书,包括通配符域和可导出的证书。 这些证书存储在 Azure Key Vault 中并在那里进行管理。

借助 Azure 应用服务,可以轻松地使用 TLS 和 SSL 帮助保护 Web 应用。 应用服务支持新式 TLS 版本、灵活的证书选项和相互 TLS 等高级功能,可帮助保护传输中的数据并满足合规性要求。