自動(dòng)續(xù)簽免費(fèi)的ssl證書

ssl 免費(fèi)證書獲取

ssl證書獲取方式有很多,大致分為兩類。一類是通過服務(wù)商去申請(qǐng),有花錢的,也有不花錢的。一類就是免費(fèi)的,百度一搜也能搜一大把,但免費(fèi)的一般可用時(shí)間都在3個(gè)月左右,需要自己去手動(dòng)續(xù)簽。
下面介紹免費(fèi)自動(dòng)續(xù)簽的方法。

gitee https推薦的證書申請(qǐng)網(wǎng)站
acme.sh自動(dòng)申請(qǐng)續(xù)簽

1. 安裝acme.sh

安裝很簡(jiǎn)單, 一個(gè)命令:

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

普通用戶和 root 用戶都可以安裝使用. 安裝過程進(jìn)行了以下幾步:

  1. acme.sh 安裝到你的 home 目錄下:
~/.acme.sh/
安裝完成

并創(chuàng)建 一個(gè) bashalias, 方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

  1. 自動(dòng)為你創(chuàng)建 cronjob, 每天 0:00 點(diǎn)自動(dòng)檢測(cè)所有的證書, 如果快過期了, 需要更新, 則會(huì)自動(dòng)更新證書.
    更高級(jí)的安裝選項(xiàng)請(qǐng)參考: How-to-install

安裝過程不會(huì)污染已有的系統(tǒng)任何功能和文件, 所有的修改都限制在安裝目錄中: ~/.acme.sh/

2. 生成證書

acme.sh 實(shí)現(xiàn)了 acme 協(xié)議支持的所有驗(yàn)證協(xié)議. 一般有兩種方式驗(yàn)證: httpdns 驗(yàn)證.

  1. http 方式需要在你的網(wǎng)站根目錄下放置一個(gè)文件, 來驗(yàn)證你的域名所有權(quán),完成驗(yàn)證. 然后就可以生成證書了.
acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/

只需要指定域名, 并指定域名所在的網(wǎng)站根目錄. acme.sh 會(huì)全自動(dòng)的生成驗(yàn)證文件, 并放到網(wǎng)站的根目錄, 然后自動(dòng)完成驗(yàn)證. 最后會(huì)聰明的刪除驗(yàn)證文件. 整個(gè)過程沒有任何副作用.

如果你用的 apache服務(wù)器, acme.sh 還可以智能的從 apache的配置中自動(dòng)完成驗(yàn)證, 你不需要指定網(wǎng)站根目錄:

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

如果你用的 nginx服務(wù)器, 或者反代, acme.sh 還可以智能的從 nginx的配置中自動(dòng)完成驗(yàn)證, 你不需要指定網(wǎng)站根目錄:

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

注意, 無論是 apache 還是 nginx 模式, acme.sh在完成驗(yàn)證之后, 會(huì)恢復(fù)到之前的狀態(tài), 都不會(huì)私自更改你本身的配置. 好處是你不用擔(dān)心配置被搞壞, 也有一個(gè)缺點(diǎn), 你需要自己配置 ssl 的配置, 否則只能成功生成證書, 你的網(wǎng)站還是無法訪問https. 但是為了安全, 你還是自己手動(dòng)改配置吧.

如果你還沒有運(yùn)行任何 web 服務(wù), 80 端口是空閑的, 那么 acme.sh 還能假裝自己是一個(gè)webserver, 臨時(shí)聽在80 端口, 完成驗(yàn)證:

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

更高級(jí)的用法請(qǐng)參考: How-to-issue-a-cert

  1. 手動(dòng) dns 方式, 手動(dòng)在域名上添加一條 txt 解析記錄, 驗(yàn)證域名所有權(quán).

這種方式的好處是, 你不需要任何服務(wù)器, 不需要任何公網(wǎng) ip, 只需要 dns 的解析記錄即可完成驗(yàn)證. 壞處是,如果不同時(shí)配置 Automatic DNS API,使用這種方式 acme.sh 將無法自動(dòng)更新證書,每次都需要手動(dòng)再次重新解析驗(yàn)證域名所有權(quán)。

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

然后, acme.sh 會(huì)生成相應(yīng)的解析記錄顯示出來, 你只需要在你的域名管理面板中添加這條 txt 記錄即可.

等待解析完成之后, 重新生成證書:

acme.sh  --renew   -d mydomain.com

注意第二次這里用的是 --renew

dns 方式的真正強(qiáng)大之處在于可以使用域名解析商提供的 api 自動(dòng)添加 txt 記錄完成驗(yàn)證.

acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等數(shù)十種解析商的自動(dòng)集成.

dnspod 為例, 你需要先登錄到 dnspod 賬號(hào), 生成你的 api id 和 api key, 都是免費(fèi)的. 然后:

export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
acme.sh   --issue   --dns dns_dp   -d aa.com  -d www.aa.com

設(shè)置進(jìn)文件,避免丟失


2.png

證書就會(huì)自動(dòng)生成了. 這里給出的 api id 和 api key 會(huì)被自動(dòng)記錄下來, 將來你在使用 dnspod api 的時(shí)候, 就不需要再次指定了. 直接生成就好了:

acme.sh  --issue   -d  mydomain2.com   --dns  dns_dp

更詳細(xì)的 api 用法: https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

3. copy/安裝 證書

前面證書生成以后, 接下來需要把證書 copy 到真正需要用它的地方.

注意, 默認(rèn)生成的證書都放在安裝目錄下: ~/.acme.sh/, 請(qǐng)不要直接使用此目錄下的文件, 例如: 不要直接讓 nginx/apache 的配置文件使用這下面的文件. 這里面的文件都是內(nèi)部使用, 而且目錄結(jié)構(gòu)可能會(huì)變化.

正確的使用方法是使用 --install-cert 命令,并指定目標(biāo)位置, 然后證書文件會(huì)被copy到相應(yīng)的位置, 例如:

Apache example:

acme.sh --install-cert -d example.com \
--cert-file      /path/to/certfile/in/apache/cert.pem  \
--key-file       /path/to/keyfile/in/apache/key.pem  \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
--reloadcmd     "service apache2 force-reload"

Nginx example:

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"

(一個(gè)小提醒, 這里用的是 service nginx force-reload, 不是 service nginx reload, 據(jù)測(cè)試, reload 并不會(huì)重新加載證書, 所以用的 force-reload)

Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/<domain>.cer ,否則 SSL Labs 的測(cè)試會(huì)報(bào) Chain issues Incomplete 錯(cuò)誤。

--install-cert命令可以攜帶很多參數(shù), 來指定目標(biāo)文件. 并且可以指定 reloadcmd, 當(dāng)證書更新以后, reloadcmd會(huì)被自動(dòng)調(diào)用,讓服務(wù)器生效.

詳細(xì)參數(shù)請(qǐng)參考: https://github.com/Neilpang/acme.sh#3-install-the-issued-cert-to-apachenginx-etc

值得注意的是, 這里指定的所有參數(shù)都會(huì)被自動(dòng)記錄下來, 并在將來證書自動(dòng)更新以后, 被再次自動(dòng)調(diào)用.

4. 更新證書

目前證書在 60 天以后會(huì)自動(dòng)更新, 你無需任何操作. 今后有可能會(huì)縮短這個(gè)時(shí)間, 不過都是自動(dòng)的, 你不用關(guān)心.

5. 更新 acme.sh

  1. 更新 acme.sh
    目前由于 acme 協(xié)議和 letsencrypt CA 都在頻繁的更新, 因此 acme.sh 也經(jīng)常更新以保持同步.

升級(jí) acme.sh 到最新版 :

acme.sh --upgrade

如果你不想手動(dòng)升級(jí), 可以開啟自動(dòng)升級(jí):

acme.sh  --upgrade  --auto-upgrade

之后, acme.sh 就會(huì)自動(dòng)保持更新了.

你也可以隨時(shí)關(guān)閉自動(dòng)更新:

acme.sh --upgrade  --auto-upgrade  0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容