我想对我的应用程序实施HSTS。
我有一个ELB终止SSL并将流量转发到我的应用程序,该应用程序是用作反向代理的apache服务器。
我知道为了实现HSTS,我需要在请求中添加标头Strict-Transport-Security。
不幸的是,似乎我无法在我的Apache服务器上实现它,因为必须将其添加到HTTPS虚拟主机,并且我的Apache仅配置了http虚拟主机,因为SSL在ELB上终止了。
这意味着ELB在转发请求时必须向请求添加标头Strict-Transport-Security。
我怎么做?我可以添加某种对我有用的安全策略吗?
我询问了AWS支持人员,答案是目前ELB无法在来自客户端的请求上添加HSTS标头。因此,我决定使用我的Apache服务器找到一种解决方法。这是我找到的解决方案:
该HSTS RFC规定,
HSTS主机绝不能在通过非安全传输传递的HTTP响应中包含STS头字段。
然后,我要做的是在Apache中在http => https重定向之后设置标头。由于此重定向具有标志[L],因此这意味着301重定向将不包含标头,但任何https请求都将包含该标头。我的Apache配置看起来像这样:
<VirtualHost *:80>
...
#http=>https
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
#hsts
Header set Strict-Transport-Security "max-age=31536000"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句