Let's Encrypt不自動續期?更新通配符證書續期腳本

上次解決了申請安裝Let's Encrypt獲取失敗Error Message: AutoSSL Issue Failed的DNS問題之後,這個免費SSL證書又有些問題需要解決了。

CWP控制面板本來似乎已設置好了Let's Encrypt證書到期前自動更新續期的,不料昨天Let's Encrypt不自動續期更新了,所以造成SEO流量大幅下滑,幸好解決好後就能恢復了。

什麼是Let's Encrypt?

Let's Encrypt不自動續期?更新通配符證書續期腳本

Let's Encrypt是一個由非營利性組織互聯網安全研究小組(ISRG)提供的免費、自動化和開放的證書頒發機構(CA)。

簡單的說,借助Let's Encrypt頒發的證書可以為我們的網站免費啟用HTTPS(SSL/TLS) 。

Let's Encrypt免費證書的簽發/續簽都是腳本自動化的,Let's Encrypt官方推薦使用Certbot客戶端來簽發證書。

以下是如何申請Let's Encrypt免費SSL證書的教程▼

什麼是Let's Encrypt 通配符證書?

在沒有出現通配符證書之前,Let's Encrypt 僅支持2種證書:

  1. 單域名證書:證書僅僅包含一個主機。
  2. SAN 證書:也稱為域名證書,一張證書可以包括多個主機(Let's Encrypt 限制是20)。

對於個人用戶來說,由於主機並不是太多,所以使用SAN 證書完全沒有問題,但是對於大公司來說有一些問題:

  1. 子域名非常多,而且過一段時間可能就要使用一個新的主機。
  2. 註冊域也非常多。

對於大企業來說,SAN 證書可能並不能滿足需求,而所有的主機全部包含在一張證書中,使用Let's Encrypt 證書(限制20)是無法滿足的。

通配符證書就是證書中可以包含一個通配符:

  • 比如*.example.com, *.example.cn,用* 號來自動匹配所有子域名;
  • 大型企業也可以使用通配符證書了,一張SSL證書可以放置更多的主機了。

通配符證書和SAN證書的區別

  1. 通配符(Wildcard)證書——通配符證書廣泛用於保護一個獨特的完全限定性域名下的多個子域名。這種證書的好處是,它不僅使管理證書變得簡單,而且還能幫助你降低管理費用。它能夠隨時保護你當前和將來的子域名。
  2. SAN證書——SAN證書(也稱為多域名證書)用於利用一個單個的證書保護多個域名。它們與通配符證書不同的地方在於,支持一個域名下所有無限個子域名。 SAN僅支持在證書中輸入的完全限定性域名。 SAN證書是令人印象深刻的,因為使用它們,你便能夠利用一個單個的證書保護超過100個不同的完全限定性域名;然而,保護的數量取決於發行的證書機構。

如何申請讓我們加密通配符證書?

為了實現通配符證書,Let's Encrypt 對ACME 協議的實現進行了升級,只有v2 協議才能支持通配符證書。

也就是說任何客戶端只要支持ACME v2 版本,就可以申請通配符證書了。

下載Certbot-Auto

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --version

Let's Encrypt通配符證書腳本

git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
cd certbot-letencrypt-wildcardcertificates-alydns-au
chmod 0777 au.sh

Let's Encrypt通配符證書到期定時續約腳本

這裡的腳本是nginx 編譯安裝或者通過Docker 安裝的服務器,通過宿主機代理或者負載均衡主機代理https,自動備份SSL證書,重啟Nginx代理服務器。

  • 注:腳本實際使用的依然是 ./certbot-auto renew
#!/usr/bin/env bash

cmd="$HOME/certbot-auto" 
restartNginxCmd="docker restart ghost_nginx_1"
action="renew"
auth="$HOME/certbot/au.sh php aly add"
cleanup="$HOME/certbot/au.sh php aly clean"
deploy="cp -r /etc/letsencrypt/ /home/pi/dnmp/services/nginx/ssl/ && $restartNginxCmd"

$cmd $action \
--manual \
--preferred-challenges dns \
--deploy-hook \
"$deploy"\
--manual-auth-hook \
"$auth" \
--manual-cleanup-hook \
"$cleanup"

加盟 crontab中,編輯文件▼

/etc/crontab

#证书有效期<30天才会renew,所以crontab可以配置为1天或1周
0 0 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /home/pi/crontab.sh

CWP服務器配置重建

以下是CWP重建nginx / apache服務器的步驟:

第1 步:在CWP控制面板左側點擊WebServer Settings → Select WebServers ▼

CWP重裝解決Cannot define multiple Listeners on the same IP:port

第2步:選擇 Nginx & Varnish & Apache ▼

第2 步:CWP控制面板選擇Nginx & Apache 第4張

第3步:點擊底部“Save & Rebuild Configuration”按鈕,進行保存和重建配置。

  • 刷新網站,將看到SSL證書的到期日期已更新。

擴展閱讀:

希望陳溈亮博客( https://www.chenweiliang.com/ ) 分享的《Let's Encrypt不自動續期?更新通配符證書續期腳本》,對您有幫助。

歡迎分享本文鏈接:https://www.chenweiliang.com/cwl-1199.html

歡迎加入陳溈亮博客的Telegram 頻道,獲取最新更新!

🔔 率先在頻道置頂目錄獲取寶貴的《ChatGPT 內容行銷AI 工具使用指南》! 🌟
📚 這份指南蘊含價值巨大,🌟難逢的機遇,切勿錯失良機! ⏰⌛💨
喜歡就分享和按贊!
您的分享和按贊,是我們持續的動力!

 

發表評論

您的電子郵箱地址不會被公開。 必填項已用 * 標註

滾動到頂部