负载平衡器不处理HTTP请求时是否需要HSTS

负载平衡器不处理HTTP请求时是否需要HSTS,http,ssl,https,amazon-elb,hsts,Http,Ssl,Https,Amazon Elb,Hsts,我有一个web应用程序在AWS EC2上运行,它使用一个负载平衡器,只侦听端口443上的HTTPS请求,还有一个安全组,该安全组只允许端口443上的流量,因此无法通过HTTP访问我的应用程序(据我所知) 该应用程序最近已经过pen测试,因此建议实施HST。我可以看到,实现HSTS的一个要求是使用301永久重定向将所有HTTP链接重定向到HTTPS。尝试通过负载平衡器上的另一个侦听器将流量从端口80重定向到端口443执行此操作时,我收到一条警告,即连接的安全组“不允许此侦听器端口上的流量” 我的问

我有一个web应用程序在AWS EC2上运行,它使用一个负载平衡器,只侦听端口443上的HTTPS请求,还有一个安全组,该安全组只允许端口443上的流量,因此无法通过HTTP访问我的应用程序(据我所知)

该应用程序最近已经过pen测试,因此建议实施HST。我可以看到,实现HSTS的一个要求是使用301永久重定向将所有HTTP链接重定向到HTTPS。尝试通过负载平衡器上的另一个侦听器将流量从端口80重定向到端口443执行此操作时,我收到一条警告,即连接的安全组“不允许此侦听器端口上的流量”


我的问题是我应该考虑启用HTTP流量,这样我就可以实现永久重定向,然后实现HSTS还是AM更好地离开它们的方式呢?我倾向于认为,因为我的负载平衡器不允许HTTP通信,所以我最好保持当前设置不变,但不是100%确定。谁能解释一下哪一个更安全,为什么?提前感谢。

这完全取决于您是否希望允许HTTP通信并将其重定向到HTTPS。例如,如果它是面向用户的应用程序,那么网关/负载平衡器通常允许HTTP流量,然后重定向到HTTPS,因为最终用户在访问HTTP时不应出现任何错误。在这种情况下,HSTS报头起着重要的作用


但它不是面向最终用户的应用程序,而且您知道消费实体将始终使用HTTPS进行访问,然后不允许HTTP通信。因此,这里不需要设置HSTS头。

允许HTTP只会削弱您的安全性。从我所看到的,HSTS并没有要求您启用HTTP。在服务器端,您已经通过只启用HTTPS做了正确的事情。HSTS允许服务器告诉客户端也只使用HTTPS。最好不用编写自己的自定义web客户端。在某些情况下,建议在端口80上启用HTTP服务器,并使用HST将后续请求重定向到HTTPS。如果出于某种原因,客户端试图使用HTTP连接到端口80,那么无论您是否在端口80上侦听,客户端都会受到攻击。这是因为中间的人可以监听端口80,即使你没有。客户端可能尝试在端口80上连接的最可能的原因是,您以前有一个HTTP服务,而客户端仍然有书签、旧电子邮件等带有旧HTTP URL的内容。在这种情况下,打开端口80可能是明智的