在 AWS 上使用 SSL 运行 nginx

在 AWS 上使用 SSL 运行 nginx

我已经使用此配置脚本在 AWS 上安装了 nginx

--prefix=/usr/local/nginx-1.16.1 --with-http_ssl_module --with-openssl=~/Downloads/openssl-1.1.1i --without-http_rewrite_module

我已经使用 AWS 证书管理器 (ACM) 为我的 URL(假设为 mydom.com)颁发了证书,其状态显示为发布然后我编辑了nginx.conf

server {
listen 443 ssl;
server_name localhost mydom.com;
ssl_certificate  /etc/ssl/certs/ca-bundle.crt;
ssl_certificate_key  /etc/trusted-key.key;
<truncated>
}

我选择了这些文件: /etc/ssl/certs/ca-bundle.crt只是 /etc/trusted-key.key因为它们在 Linux 文件系统上,只是为了尝试看看 nginx 是否可以与它们一起运行,但它没有运行。它给出了:

[emerg] cannot load certificate key "/etc/trusted-key.key": PEM_read_bio_PrivateKey() failes (SSL: error:0909006C:PEM routines:get_name: no start line:Expecting: ANY PRIVATE KEY)

当然,这只是一次尝试。否则,我想我应该使用.crtACM 发布的文件(如果有的话),然后我应该以某种方式创建一个.key文件并将它们放在 Linux 文件系统中的某个地方,比如在/etc/nginx/ssl? 我不确定。我应该怎么做?

注意:我有一些在自己的 Web 服务器上运行 Web 应用程序的经验,但只使用http我没有太多经验https

答案1

ACM 证书只能由 AWS 托管服务(主要是负载均衡器)使用。您无法访问私钥,因此无法使用安装在 EC2 实例上的 Nginx 提供 ACM 证书。

您最好的选择是:

  • 在 ALB 上终止 https,通过 http 转发流量到 Web 服务器
  • 使用 Let's Encrypt 证书。有多种软件可供选择,可帮助实现自动化。

相关内容