在 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 憑證。有多種軟體可供選擇,有助於實現此自動化。

相關內容