我试图强制最终用户在访问我们的网站时使用 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
我做了什么:
打开 IIS 配置管理器。
右键单击“默认网站”,选择“管理网站”,然后单击“高级设置”。
使用以下设置启用 HSTS:
- 已启用:真
- IncludeSubDomains:真
- 最大年龄:31536000
- 预加载:错误
- 将 HTTP 重定向到 HTTPS
点击“确定”
单击“默认网站”并选择“IIS”部分下的“HTTP 重定向”。
选中“将请求重定向到此目的地”并输入我们的 HTTPS URL(恰好是一个负载均衡器,而不是这个特定的 Web 服务器)。
重新启动 IIS。
在使用远程桌面会话连接到 Web 服务器时,我打开了 Microsoft Edge。
去了
http://internal-hostname/
Edge。
预期行为:用户被重定向到https://ourdomain.com
。
实际行为:浏览器加载了“403.4 Forbidden”错误页面。
HSTS 似乎已启用,因为我Strict-Transport-Security
在响应中获得了预期的 HTTP 标头,但没有获得从 HTTP 到 HTTPS 1的所需重定向,如RFC 6797。
1一个好的答案也可能是“HSTS”是 IIS 10 中的一个不成熟的解决方案,我确实需要添加 HTTP 重定向规则。