我已經使用此配置腳本在 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)
當然這只是一次嘗試。否則我想我應該使用.crt
ACM 發布的文件(如果有的話),然後我應該以某種方式創建一個.key
文件並將它們放在 Linux 文件系統中的某個位置,比如在/etc/nginx/ssl
?下。我不知道。我應該如何進行?
注意:我有一些在自己的 Web 伺服器上執行 Web 應用程式的經驗,但僅使用http我沒有太多經驗https
答案1
ACM 憑證只能由 AWS 託管服務(主要是負載平衡器)使用。您無法存取私鑰,因此無法使用 EC2 執行個體上安裝的 Nginx 提供 ACM 憑證。
您最好的選擇是:
- 在 ALB 處終止 https,透過 http 將流量轉送至 Web 伺服器
- 使用 Let's Encrypt 憑證。有多種軟體可供選擇,有助於實現此自動化。