使用 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 服务器

ini 使用nginx代理AWS ELB

http 请求的 kubernetes/elb 超时是多少?

在 ELB 后面可访问的 AWS EB url