使用 Azure 应用程序网关添加 HSTS 标头- Azure 门户

本文介绍如何在应用程序网关 v2 SKU 中使用标头重写添加 HTTP Strict-Transport-Security (HSTS) 响应标头,以便更好地通过应用程序网关保护流量。

HSTS 策略有助于保护或尽量减少站点免受中间人、Cookie 劫持和协议降级攻击。 客户端与已启用 HSTS 的网站建立第一个成功的 HTTPS 连接后,HSTS 标头可确保客户端只能通过 HTTPS 进行访问。

如果没有 Azure 订阅,可在开始前创建一个试用帐户

开始之前

若要完成本文中的步骤,需要有应用程序网关 v2 SKU 部署。 v1 SKU 不支持重写标头。 如果没有 v2 SKU,请在开始之前创建应用程序网关 v2 SKU 部署。

登录 Azure

使用 Azure 帐户登录到 Azure 门户

创建所需对象

若要配置 HSTS 策略,必须先完成以下步骤:

  1. 创建添加 HSTS 标头所需的对象:

    • HTTP 侦听器:创建基本或多站点 HTTP 侦听器。 此侦听器必须侦听端口 80,并且协议必须设置为 HTTP。

    • HTTPS 侦听器:创建基本或多站点 HTTPS 侦听器。 此侦听器必须在端口 443 上侦听,将协议设置为 HTTPS,并包含证书。

  2. 创建一个路由规则,用于将来自 HTTP 侦听器的所有流量重定向到 HTTPS 侦听器。

若要详细了解如何设置 http 到 https 重定向,请参阅 HTTP 到 HTTPS 重定向

配置 HSTS 策略

在此示例中,我们将使用应用程序网关的重写规则添加严格传输安全性 (STS) 响应标头。

  1. 选择“所有资源”,然后选择你的应用程序网关 。

  2. 在左窗格中,选择“重写”。

  3. 选择“重写集” :

    显示如何添加重写集的屏幕截图。

  4. 为重写集提供一个名称,并将其与路由规则相关联:

    • 在“名称”框中输入重写集的名称。

    • 选择在“关联的路由规则”列表中列出的一个或多个规则。 只能选择尚未与其他重写集关联的规则。 已经与其他重写集关联的规则处于灰显状态。

    • 选择下一步

      显示如何为重写集添加名称和关联的屏幕截图。

  5. 创建重写规则:

    • 选择“添加重写规则”。

      显示如何添加重写规则的屏幕截图。

    • 在“重写规则名称”框中输入重写规则的名称。 在“规则顺序”框中输入一个数字。

      显示如何添加重写规则名称的屏幕截图。

  6. 添加操作来重写响应头:

    • 在“重写类型”列表中,选择“响应头”

    • 在“操作类型”列表中,选择“设置”。

    • 在“标头名称”下选择“常用标头”。

    • 在“通用标头”列表中,选择“Strict-Transport-Security”。

    • 输入标头值。 在此示例中,我们将使用 max-age=31536000; includeSubdomains; preload 作为标头值。

    • 选择“确定”

      显示如何添加操作的屏幕截图。

  7. 选择“创建”以创建重写集:

    显示如何单击“创建”的屏幕截图。

限制和建议

  • 若要最大程度地提高安全性,必须在用户开始 HTTPS 会话时尽快显示 HSTS 策略。 为了对给定域强制实施 HTTPS,浏览器只需观察 STS 标头一次。 因此,它应添加到网站的主页和关键页面。 但是,这还不够,最佳做法是尽可能多地涵盖 URL 空间,并优先考虑不可缓存的内容。

  • 在此示例中,响应头 Strict-Transport-Security 设置为 max-age=31536000; includeSubdomains; preload。 但是,用户还可以将标头设置为等于 max-age=31536000; includeSubdomains,从而删除预加载。 预加载通过确保客户端始终使用 HTTPS 访问站点来帮助增强 HSTS,即使客户端首次访问也是如此。 必须将域和子域提交到 https://hstspreload.org/,以确保用户永远不会使用 HTTP 访问网站。 尽管预加载列表由 Google 托管,但所有主要浏览器都使用此列表。

  • HSTS 策略不会阻止针对 TLS 本身的攻击或服务器上的攻击。

后续步骤

若要了解有关指令的详细信息,请访问 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security

若要详细了解如何设置某些常见标头重写用例,请参阅常见标头重写方案