Pra*_*B R 6 iis ssl amazon-web-services amazon-elb hsts
我们想对我们的IIS部署的Web应用程序启用HSTS。
我们有SSL终止ELB应用程序负载平衡器。我们已经在IIS中启用了URL重写模块,并配置了x-Forward-Proto标记来决定并启用响应中的HSTS标头。
当前,ALB似乎没有将自定义标头从IIS传递到ALB,再传递给最终用户。我们想看看是否有一种方法可以在允许接受自定义标头的ALB级别启用HSTS,还是可以在IIS级别设置HSTS并使ALB可以通过HSTS标头传递给浏览器?
And*_*dge 16
听起来这就是OP使用的方法,但由于某种原因,标头没有被传递。我只是想确认这种方法确实有效并提供更多详细信息。
完全可以通过 HTTP 在后端服务器上设置 HSTS 标头。归根结底,它只是一个像其他标头一样的标头,服务器会很乐意发送它。
然而,根据 HSTS 规范,浏览器将忽略 HTTP 响应中收到的 HSTS 标头。
但是,有一种方法可以使其工作,首先配置后端服务器以发送 HSTS 标头。
然后,假设应用程序负载均衡器正在侦听 HTTPS,但您的目标组(和后端服务器)正在使用 HTTP,则会发生以下情况:
因此,浏览器通过 HTTPS 接收响应和 HSTS 标头,并且它将遵守 HSTS。
反对这样做的一个论点是,您根本不应该通过 HTTP 发送 HSTS 标头。然而,同样的论点也适用于您的整个网站 - 任何人都不应该通过 HTTP 向互联网提供任何网站服务。如果您认为在 ALB 处终止 HTTPS 并在 HTTP 上运行后端服务器是安全的,那么以相同的方式发送 HSTS 标头也同样安全。
注意:如果您使用 HSTS,那么您几乎肯定已经获得了从 HTTP 到 HTTPS 的重定向。请记住,HSTS 标头将通过 HTTP 与重定向一起发送,但浏览器将忽略它。一旦发生重定向并且 HSTS 标头通过 HTTPS 传输,浏览器就会遵循它。
从技术上讲,根据RFC6707 第 7.2 节,您不应通过纯 HTTP 将 HSTS 标头发送回浏览器。您应该做的是根据请求标头值对标头进行有条件的设置X-Forwarded-Proto。
HSTS是由后端而不是由负载均衡器控制的策略。有人可能会说AWS可以做到这一点,但是还有其他一些问题使事情变得更加复杂(违反规范,HTTP的永久重定向等)。
HSTS的问题在于您不能(不应)通过HTTP发送严格传输安全性。规范说只能通过安全连接发送标头。HTTP不安全。由于负载平衡器正在通过HTTP与后端通信,因此IIS不会发送标头。您需要在后端使用HTTPS来启用HSTS。
如果您的目标是向客户端发送“严格的传输安全性”,请在负载均衡器上使用第4层侦听器,并在后端处理HTTPS。如果请求通过HTTP到达,则发送永久重定向(301)。好处包括绝对控制,改进的HTTP / 2等。
另一个选择是将您的侦听器更改为使用HTTPS与后端通信。在后端设置HTTPS和SSL。
| 归档时间: |
|
| 查看次数: |
3140 次 |
| 最近记录: |