使用 AWS(ELB、Kubernetes Nginx 和 ACM)配置 HSTS
Posted
技术标签:
【中文标题】使用 AWS(ELB、Kubernetes Nginx 和 ACM)配置 HSTS【英文标题】:Configuring HSTS with AWS (ELB, Kubernetes Nginx and ACM) 【发布时间】:2021-03-24 03:44:12 【问题描述】:我们需要在我们的环境中实现 HSTS,而无需在 ACM 之外安装证书。
这是我们目前的配置:
IGW > ELB > Kunermetes nginx 实例
SSL 卸载由 ELB 通过 AWS Certificate Manager (ACM) 完成。因此,在 HTTPS 流量到达 ELB 后,将被解密并作为 HTTP 发送到 Nginx。
Nginx 有如下配置:
server
listen 80 default_server;
if ($http_x_forwarded_proto = 'http')
return 301 https://$host$request_uri;
有没有办法配置 Nginx 以使用 AWS Certificate Manager 中的证书?
我们正在考虑的方法是配置ELB通过HTTPS将流量传递给Nginx,然后在Nginx的443端口创建监听器,然后从ACM获取证书解密流量并直接处理请求,能够将 HSTS 标头返回给浏览器。
据我们了解,要么采用这种方法,要么从 ACM 导出证书并将它们安装到 Nginx 中,然后需要以不同的方式保护它们。除非有其他我们没有考虑过的方式。
我很想阅读您的反馈。
谢谢, 乙
【问题讨论】:
【参考方案1】:请注意我是否理解您要归档的内容,但据我所知:
HSTS 只是将“Strict-Transport-Security”标头添加到响应中。你可以用你当前的结构来做(ELB 发送 HTTP 到 Nginx,Nginx 添加这个头)
恐怕从 ACM 导出证书并让 Nginx 在 443 上侦听不起作用:ACM 不允许导出私钥,您需要在 Nginx 上将其导出到 443 上的服务器
【讨论】:
以上是关于使用 AWS(ELB、Kubernetes Nginx 和 ACM)配置 HSTS的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 Kubernetes 的 AWS ELB 访问 Grafana(用于 prometheus)
我可以为 Istio 预置的经典 AWS ELB 定义子域吗?
在 AWS 上使用 Kubernetes 部署 HTTP/2 Web 服务器