跳至内容

如何为在 Elastic Beanstalk 环境中运行的应用程序配置 SSL/TLS 证书?

2 分钟阅读
0

我想为我在 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 服务器实例配置重写规则

AWS 官方已更新 1 年前