踩了大量坑,做下記錄。以下適用于博主本人,但是未必會(huì)適用于所有人
單域名與泛域名證書生成
sudo certbot certonly --standalone --email '郵箱' -d '域名'
# 單域名
certbot certonly --preferred-challenges dns --manual -d *.baidu.com(修改這里) --server https://acme-v02.api.letsencrypt.org/directory
# 泛域名 手動(dòng)模式
certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d *.baidu.com(修改這里)
# 泛域名 自動(dòng) 不想手動(dòng)配置DNS用這個(gè),配置看下面的續(xù)費(fèi)腳本部分
nginx配置SSL
server {
listen 80;
server_name 對(duì)應(yīng)的域名;
return 301 https://$server_name$request_uri; #強(qiáng)制ssl
location / {
#項(xiàng)目地址+端口,可以本地,也可以外地
proxy_pass http://localhost:8080;
}
}
# 443 ssl
server {
listen 443 ssl;
server_name 對(duì)應(yīng)的域名;
#更改下方的證書路徑
ssl_certificate /etc/letsencrypt/live/baidu.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/baidu.com/privkey.pem;
ssl_session_cache shared:SSL:10m; #這里可能要與其他的保持一致?
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
#項(xiàng)目地址+端口,可以本地,也可以外地
proxy_pass http://localhost:8080;
}
}
自動(dòng)續(xù)期腳本
??在生成泛域名證書時(shí),我們需要手動(dòng)在DNS解析中配置TXT,然而續(xù)費(fèi)命令renew
無(wú)法去完成我們手動(dòng)配置TXT的過程,需要我們手動(dòng)配置,所以會(huì)報(bào)錯(cuò)。
??我們需要用到一個(gè)DNS插件,這樣我們就不需要配置TXT了,可以直接生成證書或者續(xù)費(fèi),也可以嘗試把下面命令中的廠商改成你的廠商。
DNS-plugins
??在上面鏈接中找到自己的服務(wù)商,我用的是cloudflare。注意:如果是國(guó)內(nèi)的廠商,去GitHub上找腳本。
snap install certbot-dns-cloudflare # 我用這個(gè)沒有用,我用的下面的pip安裝方法
pip install certbot
pip install certbot-dns-cloudflare #注意pip與python環(huán)境的對(duì)應(yīng)
??這個(gè)地方遇到了問題,很久才解決,因?yàn)槲沂请ppython環(huán)境,但是排除很久不知道哪里沖突了,干脆直接刪了python3,在重新安裝pip,讓他變成python2的pip
certbot plugins #查看安裝的插件
API Key在“My Profile”–>“API Tokens”
# 創(chuàng)建配置文件
touch /etc/letsencrypt/cloudflare.ini
# 修改配置文件
vim /etc/letsencrypt/cloudflare.ini
# 添加如下內(nèi)容,別忘記修改
# Cloudflare API credentials used by Certbot
dns_cloudflare_email = cloudflare@example.com
dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234567
# 修改文件權(quán)限
chmod 600 /etc/letsencrypt/cloudflare.ini
接下來(lái)可以執(zhí)行生成證書或者續(xù)費(fèi)證書的操作了
修改續(xù)費(fèi)配置文件(手動(dòng)生成的證書才需要修改)
??如果我們使用的是手動(dòng)配置的泛解析,那么我們無(wú)法直接執(zhí)行renew,即使已經(jīng)配置了DNS插件。
進(jìn)入 /etc/letsencrypt/renewal 目錄,找到續(xù)費(fèi)配置文件,找到如下配置:
??可以看到,配置文件是手動(dòng)方式,我們需要手動(dòng)改成DNS方式(如果前面用的是DNS自動(dòng)方式生成的證書,就沒有這方面煩惱了)
??按照如下的配置進(jìn)行修改:
# Options used in the renewal process
[renewalparams]
authenticator = dns-cloudflare
account = 71e9f9688487336cb4851b7174d327c6
dns_cloudflare_credentials = /etc/letsencrypt/cloudflare.ini
server = https://acme-v02.api.letsencrypt.org/directory
??如果不想修改配置,也可以重新執(zhí)行上面的安裝證書第三條配置命令。
certbot renew #證書續(xù)期
certbot renew --force-renewal #強(qiáng)制更新 無(wú)視30天
--pre-hook:更新證書之前調(diào)用
--post-hook:更新證書之后調(diào)用
--deploy-hook:成功更新證書之后調(diào)用
# 創(chuàng)建一個(gè)shell腳本,內(nèi)容如下:
certbot renew --deploy-hook "nginx -s reload"
chmod +x certrenew.sh # 賦予執(zhí)行權(quán)限
# 編寫cron定時(shí)任務(wù)
crontab -e
# 輸入如下內(nèi)容
0 0 1 * * /shell/certrenew.sh >> /shell/certrenew.log 2>&1
# 重啟服務(wù)器
service crond restart
# 查看任務(wù)
crontab -l
無(wú)需續(xù)期文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-414611.html
續(xù)費(fèi)成功
申請(qǐng)成功文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-414611.html
其他報(bào)錯(cuò)
[Errno 17] 錯(cuò)誤
嘗試運(yùn)行 certbot update_symlinks
cloudflare已經(jīng)取消了對(duì)例如:ml,ga,tk等一些免費(fèi)域名的續(xù)期。
不過,申請(qǐng)不受影響,強(qiáng)制續(xù)期也不受影響。
到了這里,關(guān)于certbot生成證書,配置nginx,利用腳本自動(dòng)續(xù)期的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!