启用 HSTS 后,IIS 10 不会将 HTTP 重定向到 HTTPS

启用 HSTS 后,IIS 10 不会将 HTTP 重定向到 HTTPS

我试图强制最终用户在访问我们的网站时使用 HTTPS。我在 IIS 中的站点和应用程序级别启用了 HSTS。我在站点级别设置了到 的 HTTP 重定向https://ourdomain.com。我可以访问我们网站的主页并查看Strict-Transport-Security: max-age: XXXX; includeSubDomains标题,但我没有获得从http://internal-hostname/到 的重定向https://ourdomain.com

我读了IIS 10.0 版本 1709 HTTP 严格传输安全 (HSTS) 支持,我相信我已经正确遵循了这些步骤。启用 HSTS 后,我期望自动从 HTTP 重定向到 HTTPS。我还读过在 IIS 中将所有 HTTP 重定向到 HTTPS 的最佳方法,但该问题集中在 IIS7 上。从那时起,HSTS 支持方面发生了很多变化,但也许我对自动重定向的期望是错误的。

系统信息:

  • Windows Server 2019(版本 1809)
  • IIS 10.0.17763.1

我做了什么:

  1. 打开 IIS 配置管理器。

  2. 右键单击“默认网站”,选择“管理网站”,然后单击“高级设置”。

  3. 使用以下设置启用 HSTS:

    • 已启用:真
    • IncludeSubDomains:真
    • 最大年龄:31536000
    • 预加载:错误
    • 将 HTTP 重定向到 HTTPS

    高级设置的屏幕截图,显示已启用 HSTS 并设置最大使用期限和重定向

  4. 点击“确定”

  5. 单击“默认网站”并选择“IIS”部分下的“HTTP 重定向”。

  6. 选中“将请求重定向到此目的地”并输入我们的 HTTPS URL(恰好是一个负载均衡器,而不是这个特定的 Web 服务器)。

    默认网站的 IIS HTTP 重定向设置的屏幕截图

  7. 重新启动 IIS。

  8. 在使用远程桌面会话连接到 Web 服务器时,我打开了 Microsoft Edge。

  9. 去了http://internal-hostname/Edge。

预期行为:用户被重定向到https://ourdomain.com

实际行为:浏览器加载了“403.4 Forbidden”错误页面。

打开开发者工具的主页屏幕截图,显示 Strict-Transport-Security 标头

HSTS 似乎已启用,因为我Strict-Transport-Security在响应中获得了预期的 HTTP 标头,但没有获得从 HTTP 到 HTTPS 1的所需重定向,如RFC 6797


1一个好的答案也可能是“HSTS”是 IIS 10 中的一个不成熟的解决方案,我确实需要添加 HTTP 重定向规则。

相关内容