Featured image of post acme.sh更換證書簽發機構zerossl更換letsencrypt

acme.sh更換證書簽發機構zerossl更換letsencrypt

acme.sh 是一個輕量級的 ACME 協議客戶端,用於從像 Let's Encrypt 和 ZeroSSL 這樣的證書頒發機構(CA)獲取 SSL/TLS 證書。

acme.sh 是一個小巧又強大的工具,用來管理 SSL/TLS 證書。它支援多家 CA(證書頒發機構),但當你想更換 CA 時,找不到指令就容易讓人抓狂——不過別擔心,這份 tutorial 將帶你一步步完成切換,並附上一些調侃,幫你紓解壓力!


第一步:查看支援的 CA

你可以參考官方的 Wiki 頁面,裡面列出了所有支援的 CA。

目前支援的簽發機構如下:

Short Name ACME Server URL 用途
letsencrypt https://acme-v02.api.letsencrypt.org/directory 主流的 Let’s Encrypt
letsencrypt_test https://acme-staging-v02.api.letsencrypt.org/directory 測試環境
buypass https://api.buypass.com/acme/directory BuyPass.com CA
buypass_test https://api.test4.buypass.no/acme/directory BuyPass.com 測試
zerossl https://acme.zerossl.com/v2/DV90 ZeroSSL.com CA
sslcom https://acme.ssl.com/sslcom-dv-rsasslcom-dv-ecc SSL.com CA
google https://dv.acme-v02.api.pki.goog/directory Google Public CA
googletest https://dv.acme-v02.test-api.pki.goog/directory Google 測試 CA

支援的機構還挺多的,但選擇一多,反而讓人困惑——到底選哪一個才適合呢?別糾結,常見的用 letsencryptzerossl 就夠了。


第二步:切換 CA

選好了目標 CA 後,用以下指令切換:

1
acme.sh --set-default-ca --server <Short_Name>

舉個例子:

  • 如果想用 Let’s Encrypt(經典之選):
    1
    
    acme.sh --set-default-ca --server letsencrypt
    
  • 想試試 ZeroSSL(折騰派選擇):
    1
    
    acme.sh --set-default-ca --server zerossl
    

吐槽時間:

  1. 為什麼不提供一個互動式介面,例如“請選擇你的 CA”,這樣能更直觀一些。
  2. ZeroSSL 非得註冊 API 密鑰,這種強制登入的體驗,總讓我懷疑免費是不是套路。

第三步:確認是否切換成功

命令執行完畢後,最好驗證一下當前使用的預設 CA,確保沒填錯:

1
acme.sh --show-config

如果看到類似這樣的輸出:

1
DEFAULT_CA = letsencrypt

或者:

1
DEFAULT_CA = zerossl

那就表示切換成功啦!

這條命令只會告訴你“預設 CA 是什麼”,也不能附加點提示信息,比如“切換成功,歡迎使用新 CA!”。


第四步:重新簽發證書

為了確保新 CA 能正常工作,你需要重新簽發一次證書:

1
acme.sh --renew -d yourdomain.com --force

吐槽時間:

  1. 每次重新簽發都得加 --force,要是忘了,系統就會“假裝沒聽見”,真讓人浪費時間。
  2. 配額限制和 API 失敗問題經常讓人抓狂,比如 Let’s Encrypt 的每週簽發限制 50 次,總讓人覺得在提醒你“別隨便浪費免費資源”。

特殊場景:不同域名用不同 CA

如果需要對某些域名使用特定的 CA,可以直接在簽發時指定:

1
acme.sh --issue -d yourdomain.com --server letsencrypt

對於有大量域名的用戶,手動配置不同 CA 簡直就是“勤勞人的修行”,期待未來能有批量管理功能。


注意事項(必看,防踩坑)

  1. ZeroSSL 的 API 密鑰
    如果你選擇 ZeroSSL,需要提前註冊帳號並獲取 API 密鑰:

    1
    
    acme.sh --register-account --server zerossl --accountemail [email protected]
    

    免費證書搞得像個 SaaS 服務,這種“改良”方式真的更好了嗎?

  2. 相容性問題
    如果你的伺服器很老舊(比如某些根證書都不更新的系統),可能無法支援新 CA 的根證書,例如 ZeroSSL。如果發現 SSL 報錯,十有八九是這個問題。

  3. 重啟服務
    別忘了重新載入 Web 服務配置,套用新證書:

    1
    2
    3
    4
    5
    
    # 重啟 Nginx
    systemctl reload nginx
    
    # 重啟 Apache
    systemctl reload apache2
    

總結

雖然更換 CA 的流程看似簡單,但總是有一些小坑會讓人抓狂。不過,掌握了上述步驟,你就能快速完成切換,不再被各種錯誤信息左右。
最後再提醒一句:別忘了對新證書做相容性測試,別等上線時才發現出問題,那才叫“驚喜”。

使用 Hugo 建立
主題 StackJimmy 設計