首頁 > 軟體

使用acme.sh註冊免費的ssl證書

2023-04-02 06:03:32

先決條件:首先我們需要有一個域名和一臺有公網IP的伺服器

安裝acme.sh

curl  https://get.acme.sh | sh

啟用別名

source ~/.bashrc 

說明:

acme.sh 會安裝到 ~/.acme.sh 目錄下。安裝成功後執行 source ~/.bashrc 以確保指令碼所設定的命令別名生效。

說明:普通使用者和 root 使用者都可以安裝使用. 安裝過程進行了以下幾步:

1.把 acme.sh 安裝到你的 home 目錄下: ~/.acme.sh/ ,並建立 一個 shell 的 alias, 例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

2.自動為你建立 cronjob, 每天 0:00 點自動檢測所有的證書, 如果快過期了, 需要更新, 則會自動更新證書。

檢視幫助資訊

acme.sh -h

解除安裝acme.sh

acme.sh --uninstall

切換CA機構

acme.sh --set-default-ca --server letsencrypt

說明:

acme.sh 支援四個正式環境 CA,分別是 Let’s Encrypt、Buypass、ZeroSSL 和 SSL.com,預設使用 ZeroSSL。

生成證書

acme.sh --issue -d example.com --standalone --keylength ec-256 --force

說明:

1. --standalone 模式下預設使用80埠,如果80埠被佔用,新增 --httpport 引數使用80以外的埠

2.  --keylength表示金鑰長度,後面的值可以是 ec-256 、ec-3842048307240968192,帶有 ec 表示生成的是 ECC 證書,沒有則是 RSA 證書。在安全性上 256 位的 ECC 證書等同於 3072 位的 RSA 證書。

3.  生成的證書將放置在~/.acme.sh/example.com/ 目錄下:

example.com.cer證書檔案
example.com.key私鑰
ca.cer中間證書
fullchain.cer證書鏈

4. 當前證書剩餘有效期在30天以上時重新生成證書,需要使用--force引數

5.  建議在生成證書的時候新增 --staging  使用測試環境測試,不明白可參見後面的速率限制

更新證書

acme.sh --renew -d example.com

如果是ecc證書:

acme.sh --renew -d example.com --ecc

說明:

預設情況下acme.sh會自動更新即將過期的證書.可以不用手動更新

如果要更新有效期大於30天的,使用--force引數

部署證書

acme.sh --install-cert -d example.com

--key-file           /path/to/keyfile/in/nginx/key.pem 

--fullchain-file        /path/to/fullchain/nginx/cert.pem

--reloadcmd     "service nginx force-reload"

說明:

        其實就是拷貝證書到指定位置,生成的證書的目錄供acme.sh內部使用

檢視已經生成的證書:

acme.sh --list

檢視debug:

acme.sh  --issue  .....  --debug

檢視error:

acme.sh  --issue  .....  --debug  2

生成紀錄檔:

acme.sh  --issue  .....  --log

使用測試環境

--staging

說明:

紀錄檔檔案路徑為:~/.acme.sh/acme.sh.log

速率限制

重複證書限制

 概述: 

所有簽發請求均受每週 5 個重複證書的限制。 當您超出重複證書限制時,您應該會從 ACME 使用者端收到如下錯誤訊息:

too many certificates (5) already issued for this exact set of domains in the
last 168 hours: example.com login.example.com: see https://letsencrypt.org/docs/duplicate-certificate-limit        

此錯誤所指的“確切集”是為此證書請求的主機名集:在此範例中,example.com 和 login.example.com。 如果您的證書僅針對 1 個名稱(例如 example.com)頒發,那麼您的證書的主機名“確切集”將是 [example.com]。 當訂閱者在一週內為相同的“確切集”主機名請求證書超過 5 次時,就會超出此速率限制。

解決方法:

復原先前釋出的證書將不會重置重複證書限制。 然而,仍然存在著這種情況。 如果您發現您已經超過了上限並且您仍然需要另一個證書來獲取相同的主機名,您總是可以要求一個不同的主機名“確切集”的證書。 例如,如果您超出了 [example.com] 的重複證書限制,那麼為 [example.com, login.example.com] 請求證書將會成功。 同樣,如果您超出了 [example.com, login.example.com]的重複證書限制,那麼為 [example.com] 申請一個單獨的證書,為 [login.example.com] 申請另一個證書將會成功。

失敗驗證限制

概述:

所有頒發請求都受到每個帳戶、每個主機名、每小時 5 次失敗的驗證失敗限制 並且無法豁免。當您超過失敗驗證限制時,您會從您的ACME使用者端收到以下錯誤訊息:

too many failed authorizations recently: see https://letsencrypt.org/docs/failed-validation-limit/

此錯誤所指的“授權”是您的 ACME 使用者端傳送的授權請求的結果,用於在我們頒發或更新證書之前驗證對域名的控制。 此錯誤表示多個驗證請求已成功傳送,但所有驗證嘗試均失敗。

測試環境速率限制

測試環境使用與生產環境類似的速率限制,但具體資料有所變化:

  • 每個註冊域名允許頒發的證書數量限制為每週 30000 張。
  • 重複證書限制為每週 30000 張。
  • 每小時允許 60 次驗證失敗
  • 每個 IP 地址註冊賬戶數量限制為每個 IP 每 3 小時允許註冊 50 個賬戶。
  • 對於 ACME v2,新訂單限制為每個帳戶每 3 小時 1500 個。

Let's Encrypt官網:

Let's Encrypt - 免費的SSL/TLS證書 (letsencrypt.org)

acme.sh專案地址:

acmesh-official/acme.sh: A pure Unix shell script implementing ACME client protocol (github.com)

到此這篇關於acme.sh註冊免費的ssl證書的文章就介紹到這了,更多相關acme.sh免費ssl證書內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com