所有部署指南 部署

AWS 上的 SSL 證書(ACM、EC2、ALB、CloudFront)

AWS 提供多種新增 HTTPS 的方式,具體取決於你的架構。正確的方法取決於你是否使用負載均衡器、CloudFront 還是獨立的 EC2 例項。

決策樹

Are you using an ALB, NLB, or CloudFront?
├── Yes → Use AWS Certificate Manager (ACM) — free, auto-renewing
└── No (standalone EC2)?
    ├── Can you install Certbot? → Certbot on EC2 (auto-renewing)
    └── No root / quick setup? → GetHTTPS → manual install on EC2

方案一:AWS Certificate Manager (ACM) — 用於負載均衡器和 CloudFront

ACM 提供免費的 SSL 證書並自動續簽。它們只能與 AWS 服務(ALB、NLB、CloudFront、API Gateway)配合使用——你無法下載私鑰。

申請證書

  1. 在控制檯中開啟 AWS Certificate Manager
  2. 點選 Request a certificateRequest a public certificate
  3. 輸入你的域名:example.com*.example.com
  4. 選擇驗證方式:DNS validation(推薦)或 Email
  5. 點選 Request

DNS 驗證

ACM 會給你一條需要新增到 DNS 的 CNAME 記錄:

  • Name: _xxxx.example.com
  • Value: _yyyy.acm-validations.aws

如果你的 DNS 託管在 Route 53,點選 “Create records in Route 53”——ACM 會自動新增。

繫結到 ALB

  1. 前往 EC2 → Load Balancers → 選擇你的 ALB
  2. Listeners 標籤 → 新增監聽器(或編輯現有的)
  3. 協議:HTTPS,埠:443
  4. 預設操作:轉發到你的目標組
  5. Default SSL/TLS certificate: 選擇你的 ACM 證書
  6. 儲存

繫結到 CloudFront

  1. 前往 CloudFront → 選擇你的分配
  2. General 標籤 → Edit
  3. Custom SSL certificate: 選擇你的 ACM 證書(必須在 us-east-1
  4. 儲存

方案二:EC2 上的 Let’s Encrypt(獨立例項)

如果你執行的是沒有負載均衡器的單個 EC2 例項,直接在伺服器上安裝證書。

使用 GetHTTPS(無需安裝軟體)

  1. GetHTTPS 獲取證書
  2. 將檔案上傳到你的 EC2 例項:
    scp fullchain.pem privkey.pem ec2-user@your-ec2-ip:/etc/ssl/
  3. 在例項上配置 NginxApache

使用 Certbot(自動續簽)

# Amazon Linux 2023
sudo dnf install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

# Ubuntu on EC2
sudo snap install --classic certbot
sudo certbot --nginx -d example.com

Certbot 會自動設定續簽。

ACM 與 Let’s Encrypt 在 AWS 上的對比

ACMLet’s Encrypt (GetHTTPS/Certbot)
費用免費免費
適用於 ALB/CloudFront❌ (無法輕鬆匯入 LE 到 ACM)
適用於 EC2 直接部署
自動續簽✅ (AWS 託管)✅ (Certbot) 或手動 (GetHTTPS)
私鑰訪問❌ (AWS 持有)✅ (你持有)
萬用字元證書
非 AWS 用途✅ (可移植)

經驗法則: ALB 或 CloudFront 後面用 ACM。獨立 EC2 例項用 Let’s Encrypt。

安全組配置

確保你的 EC2 或 ALB 安全組允許埠 80 和 443 的入站流量:

Type        Protocol  Port  Source
HTTP        TCP       80    0.0.0.0/0
HTTPS       TCP       443   0.0.0.0/0

埠 80 用於 HTTP→HTTPS 重新導向以及 Let’s Encrypt HTTP-01 驗證。

常見問題

可以直接在 EC2 上使用 ACM 證書嗎?

不可以。ACM 證書只能附加到 AWS 託管服務(ALB、NLB、CloudFront、API Gateway)。你無法匯出私鑰。獨立 EC2 請使用 GetHTTPS 或 Certbot。

可以將 Let’s Encrypt 證書匯入 ACM 嗎?

技術上可以(aws acm import-certificate),但不會透過 ACM 自動續簽。你需要每 90 天重新匯入一次。使用 ACM 原生證書配合 AWS 服務、使用 Let’s Encrypt 配合 EC2 會更簡單。

ACM 證書應該選哪個 AWS 區域?

ALB/NLB:在與負載均衡器相同的區域申請證書。CloudFront:證書必須us-east-1(弗吉尼亞北部),不論你的源站在哪裡。

ACM 真的免費嗎?

是的。ACM 的公共 SSL/TLS 證書免費。每個證書不收費,續簽也不收費。你只需為使用證書的 AWS 資源(ALB、CloudFront 等)付費。

如何為 ECS/Fargate 服務配置 SSL?

在 ECS 服務前放置一個 ALB,然後將 ACM 證書附加到 ALB 監聽器。ALB 終結 TLS 並將 HTTP 轉發到你的容器。這是 ECS 的標準模式。

如何為 S3 靜態網站配置 SSL?

S3 靜態網站託管不直接支援自定義 SSL 證書。在 S3 前面放置 CloudFront,並將 ACM 證書(來自 us-east-1)附加到 CloudFront 分配。

API Gateway 怎麼處理?

AWS API Gateway 在 *.execute-api.region.amazonaws.com 上預設包含免費 SSL。對於自定義域名(如 api.example.com),建立 ACM 證書並在 API Gateway 中配置自定義域名。

在 AWS 上應該用 ACM 還是 GetHTTPS?

場景推薦方案
ALB / NLB / CloudFrontACM — 免費、自動續簽、原生整合
獨立 EC2GetHTTPS 或 Certbot — ACM 無法匯出金鑰到 EC2
ALB 後面的 EC2ACM 用於 ALB — EC2 不需要自己的證書
ECS / FargateACM 用於 ALB — 標準模式
LightsailLightsail 內建 — 包含免費 Let’s Encrypt

如果你在純 EC2 上沒有負載均衡器,GetHTTPS 是獲取證書最快的方式——無需 AWS CLI。

相關文章

快速開始 2026-05-08
如何獲取免費 SSL 證書(分步指南)
5 分鐘從 Let's Encrypt 獲取免費 SSL 證書 — 無需安裝軟體、無需註冊賬號。涵蓋 4 種方法、兩種驗證方式、6 個平臺的安裝教程和故障排除。
部署 2026-05-08
如何在 Nginx 上安裝 SSL 證書
在 Nginx 上安裝 SSL 證書的分步指南。涵蓋檔案上傳、完整 server 塊配置、TLS 最佳實踐、HTTP/2、HSTS、重新導向設定、測試以及 6 個常見錯誤的排查方法。
部署 2026-05-08
Docker 與反向代理的 SSL 證書配置
為 Docker 容器配置 HTTPS:使用 Nginx 反向代理、Traefik 自動獲取 Let's Encrypt 證書,或手動掛載證書。
在瀏覽器中取得免費 SSL 憑證
無需安裝,無需帳號。私鑰始終留在你的裝置上。
取得憑證