下載certbot-auto
wget https://dl.eff.org/certbot-auto
如果是基於Debian或RHEL的系統會安裝失敗,採用另一種安裝方式snap
首先進行安裝依賴等配置
yum install epel-release
yum install snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
如果之前安裝過Certbot出現了問題,可以進行重灌
yum remove certbot
rm /usr/local/bin/certbot-auto
rm -rf /opt/eff.org/certbot
nginx檢查是否開啟http_ssl_module模組
不開啟會出現nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf
透過 nginx -V檢視是否開啟該模組,如果沒有開啟,執行下面步驟開啟(關閉 nginx,否則會出現 80 埠占用問題)
cd /usr/local/src/nginx
./configure --prefix=/usr/local/nginx --with-http_flv_module --with-http_ssl_module
make # make安裝,這裡不要像以前一樣 make&make install 否則會覆蓋原有目錄
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
nginx -V
sudo systemctl start nginx
執行命令生成證照
sudo certbot certonly -d "*.xxx.com" -d xxxx.com --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory(需要手動新增 txt 解析)
或者
sudo certbot certonly -d "*.xxx.com" -d xxxx.com --manual --preferred-challenges dns --manual-auth-hook "/etc/letsencrypt/renwal-hook/au.sh php aly add" --manual-cleanup-hook "/etc/letsencrypt/renwal-hook/au.sh php aly clean"(透過指令碼呼叫域名解析 api,自動解析)
證照目錄在/etc/letsencryp下
配置 nginx 配置檔案
listen [::]:443 ssl http2;
location / {
return 301 https://$host$request_uri;
}
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /home/www/letsencrypt/live/xxx.com/fullchain.pem;
ssl_certificate_key /home/www/letsencrypt/live/xxxx.com/privkey.pem;
ssl_trusted_certificate /home/www/letsencrypt/live/xxxx.com/chain.pem;
eturn 301 https://www.uchelian.com$request_uri;
重啟 nginx,檢視網站證照是否配置成功
證照自動續簽
因為證照只有三個月有效期,避免每三個月進行手動申請,對系統進行自動續簽操作
git clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-au
cd certbot-letencrypt-wildcardcertificates-alydns-au
chmod 0777 au.sh
domain.ini檔案新增您的根域名
配置DNS API 金鑰,由於需要透過 API 操作阿里雲 DNS, 騰訊雲 DNS 的記錄,所以需要去域名服務商哪兒獲取 API 金鑰,然後配置在 au.sh 檔案中:
ALY_KEY 和 ALY_TOKEN:[阿里雲 API key 和 Secrec 官方申請文件](https://help.aliyun.com/knowledge_detail/38738.html)。
TXY_KEY 和 TXY_TOKEN:[騰訊雲 API 金鑰官方申請文件](https://console.cloud.tencent.com/cam/capi)。
HWY_KEY 和 HWY_TOKEN: [華為雲 API 金鑰官方申請文件](https://support.huaweicloud.com/devg-apisign/api-sign-provide.html)
GODADDY_KEY 和 GODADDY_TOKEN:[GoDaddy API 金鑰官方申請文件](https://developer.godaddy.com/getstarted)。
目前該工具支援五種執行環境和場景,透過 hook 檔案和引數來呼叫:
PHP(>4以上版本均可)
au.sh php aly add/clean:PHP操作阿里雲DNS,增加/清空DNS。
au.sh php txy add/clean:PHP操作騰訊雲DNS,增加/清空DNS。
au.sh php godaddy add/clean:PHP操作GoDaddy DNS,增加/清空DNS。
Python(支援2.7和3.7,無需任何第三方庫)
au.sh python aly add/clean:Python操作阿里雲DNS,增加/清空DNS。
au.sh python txy add/clean:Python操作騰訊雲DNS,增加/清空DNS。
au.sh python hwy add/clean:Python操作華為雲DNS,增加/清空DNS。
au.sh python godaddy add/clean:Python操作GoDaddy DNS,增加/清空DNS。
根據自己伺服器環境和域名服務商選擇任意一個 hook shell(包含相應引數),具體使用見下面。
證照有效期<30天才會renew,所以crontab可以配置為1天或1周
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns --manual-auth-hook "/指令碼目錄/au.sh php aly add" --manual-cleanup-hook "/指令碼目錄/au.sh php aly clean"
本作品採用《CC 協議》,轉載必須註明作者和本文連結