使用 acme.sh 製作 HTTPS 證書

OnlyLing發表於2018-03-15

acme.sh 實現了 acme 協議, 可以從 letsencrypt 生成免費的證書。

  • 安裝 acme.sh
  • 生成證書
  • copy 證書到 nginx/apache 或者其他服務
  • 更新證書

安裝 acme.sh

安裝很簡單, 一個命令:

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

普通使用者和 root 使用者都可以安裝使用。

會安裝在 ~/.acme.sh/ 目錄下,以後生成的證書也會在這裡面,按照域名為資料夾安置。

理論上會自動新增一個 acme.sh 別名,但有時候並不會生成,需要手動執行以下命令:

source ~/.bashrc

生成證書

acme.sh 生成的證書只有三個月有效時間,然後再自動更新證書,所以,推薦使用 HTTP 驗證的方式。

HTTP 方式需要在你的網站根目錄下放置一個檔案, 來驗證你的域名所有權,完成驗證。然後就可以生成證書了。

acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/

更推薦使用 Nginx 方式來驗證,簡單。

如果你用的 Nginx 伺服器, 或者反代, acme.sh 還可以智慧的從 Nginx 的配置中自動完成驗證, 你不需要指定網站根目。

acme.sh --issue  -d mydomain.com   --nginx

經過一系列的操作,如果成功了,會在 ~/.acme.sh/mydomain.com 生成對應的證書。

copy 證書到 nginx/apache 或者其他服務

不要直接複製證書。

acme.sh  --installcert  -d  <domain>.com   
        --key-file   /etc/nginx/ssl/<domain>.com/<domain>.key 
        --fullchain-file /etc/nginx/ssl/<domain>.com/fullchain.cer 
        --reloadcmd  "service nginx force-reload"

--reloadcmd 表示複製完成後重啟伺服器的命令,根據自己伺服器狀況填寫。

/etc/nginx/ssl/<domain>.com/ 需要自己建立好,如果資料夾不存在,會報錯。

更新證書

目前證書在 60 天以後會自動更新,你無需任何操作。今後有可能會縮短這個時間,不過都是自動的,你不用關心。

原文閱讀:使用 acme.sh 製作 HTTPS 證書

相關文章