我想为我在 AWS Elastic Beanstalk 中运行的应用程序配置 SSL/TLS 证书。
简短描述
要为您在 Elastic Beanstalk 中运行的应用程序启用 SSL/TLS 加密,请执行以下操作之一:
- 在负载均衡器级别配置 HTTPS 终止
- 在 Amazon Elastic Compute Cloud (Amazon EC2) 实例级别配置 HTTPS 终止
- 将 HTTP 重定向到 HTTPS
解决方法
在负载均衡器级别配置 HTTPS 终止
要将您的 Elastic Beanstalk 环境更新为使用 HTTPS,必须在您的环境中为负载均衡器配置 HTTPS 侦听器。有两种类型的负载均衡器支持 HTTPS 侦听器:
有关详细信息,请参阅在负载均衡器上配置 HTTPS 终止。
在实例级别配置 HTTPS 终止
要在单 EC2 实例环境中使用 HTTPS 或配置负载均衡器以在无需解密的情况下传输流量,请使用平台钩子。通过平台钩子,配置向应用程序传输流量的代理服务器以停止 HTTPS 连接。钩子文件取决于 Elastic Beanstalk 平台的类型。有关详细信息,请参阅在实例上配置 HTTPS 终止。
要扩展 Elastic Beanstalk 默认 NGINX 配置,请将 .conf 配置文件添加到应用程序源捆绑包中名为 .platform/nginx/conf.d/ 的文件夹中。Elastic Beanstalk NGINX 配置会自动在此文件夹中包含 .conf 文件。配置示例:
~/workspace/my-app/
|-- .platform
| `-- nginx
| `-- conf.d
| `-- myconf.conf
`--
要覆盖 Elastic Beanstalk 默认 NGINX 配置,请在源捆绑包中包含配置 .platform/nginx/nginx.conf。配置示例:
~/workspace/my-app/
|-- .platform
| `-- nginx
| `-- nginx.conf
`--
如果您覆盖了 NGINX 配置,请拉入 Elastic Beanstalk 配置以访问增强型运行状况报告和监控、自动应用程序映射和静态文件。要拉入配置,请在 nginx.conf 中添加以下行:
include conf.d /elasticbeanstalk/ *.conf;
有关如何配置代理的详细信息,请参阅反向代理配置。
您可能会在代理错误日志中收到以下消息:
"nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive."
为避免此问题,请将以下 .conf 文件存储在 .platform/nginx/conf.d/ 平台钩子文件夹中,以便在实例级别终止 SSL/TLS:
listen 443 ssl;
server_name localhost;
location / {
proxy_pass http://localhost:app_port;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
注意:AWS 已停用 Amazon Linux AMI (AL1) 平台。最佳做法是使用平台钩子向代理服务器添加更改。将代理配置文件从 AL1 .ebextensions/nginx 目录移至 Amazon Linux 2 (AL2) 和 Amazon Linux 2023 (AL2023) 中的 .platform/nginx 平台钩子目录。
将 HTTP 重定向到 HTTPS
HTTP 到 HTTPS 的重定向会将客户端发起的非安全流量重定向到 HTTPS。要将应用程序的 HTTP 流量重定向到 HTTPS,请在环境的实例上配置 Web 服务器,或配置环境的应用程序负载均衡器。
**注意:**默认情况下,经典负载均衡器无法将 HTTP 流量重定向到 HTTPS。因此,您需要为经典负载均衡器后面的 Web 服务器实例配置重写规则。