Featured image of post 使用 go-acme/lego + Cloudflare 申請 Google 的免費 SSL 證書

使用 go-acme/lego + Cloudflare 申請 Google 的免費 SSL 證書

自動化證書的申請和管理過程,節省時間和工作量,Google 的 SSL 證書是免費的。 SSL 證書可以保護網站的數據傳輸過程,提高網站的安全性。 而 Cloudflare 的 CDN 和 DNS 服務可以提高網站的訪問速度和可用性。

最後更新
約 727 字

前言

目前,最受歡迎的免費 SSL 證書是由 Let’s Encrypt 發行的。Let’s Encrypt是一個非營利的證書頒發機構,由 Internet Security Research Group(ISRG) 運營,旨在讓整個網絡都能使用安全的 HTTPS 連接。

Google 的免費 SSL 證書由Google Trust Services發行,兩者的 SSL 證書都是免費的,並且都提供了自動化的證書管理工具,但是它們之間還是有一些差異。

目前 Google 僅支援DNS驗證和檔案驗證,不支援郵件驗證。而 Let’s Encrypt 支援 DNS 驗證、檔案驗證和郵件驗證。

Google SSL 證書的有效期可以設定,最長90天,最短1天。而 Let’s Encrypt 證書的有效期固定為 90 天。

申請準備

  1. 需要準備一個 Google Cloud Platform 的帳號
  2. 啟用 Public Certificate Authority API3. 然後點選右上角的“啟動 Cloud Shell”,打開 Google Cloud Shell
  3. 在 Shell 輸入以下指令來取得 EAB 密鑰
1
gcloud beta publicca external-account-keys create

(可能會彈出授權,授權選允許)獲取相關憑據,會返回如下一組金鑰

Created an external account key
[b64MacKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
keyId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]

EAB 金鑰使用一次後自動失效;如果沒有使用,7 天後也會自動失效。使用 EAB 金鑰註冊的 ACME 帳戶沒有過期時間(對證書續期沒有影響)。

要使用 Google 的 CA,就必需要設置 EAB 密鑰。也可以在 Google Trust Services 中的 SSL/TLS 證書下的部分中,選擇獲取EAB 密鑰。請務必記下出現對話框中的 EAB 密鑰 ID 和 EAB HMAC 密鑰。

有關設置 EAB 密鑰的更多詳細資訊,請參閱文檔

開始申請

獲得EAB密鑰後,下載最新版本 go-acme/go

執行指令

1
2
3
4
5
6
7
8
CLOUDFLARE_DNS_API_TOKEN=<YOUR_CLOUDFLARE_API_TOKEN> lego --eab \
--server "https://dv.acme-v02.api.pki.goog/directory" \
--kid "<YOUR_EAB_KEY_ID>" --hmac "<YOUR_EAB_HMAC_KEY>" \
--email "[email protected]" \
--domains="example.com" \
--accept-tos \
--dns="cloudflare" \
run

修改 YOUR_CLOUDFLARE_API_TOKENYOUR_EAB_KEY_IDYOUR_EAB_HMAC_KEY 電郵及域名,執行指令後,會生成 ~/.lego/ 資料夾,當中包含帳號資訊及證書。

如果出現 unrecognized DNS provider 的錯誤,請更新 go-acme/go 到最新版本。

tree .lego

.lego  
├── accounts  
│   └── dv.acme-v02.api.pki.goog  
│       └── [email protected]  
│       ├── account.json  
│       └── keys  
│           └── [email protected]  
└── certificates  
├── example.com.crt  
├── example.com.issuer.crt  
├── example.com.json  
└── example.com.key

5 directories, 6 files

更新證書

執行以下指令即可更新所有早前已經申請的域名證書,證書有效期為 90 日,需要定期更新,建議設定成每 60 日更新一次。

1
    lego renew

使用 Hugo 建立
主題 StackJimmy 設計