acme.sh+DNSPOD 搞定 Let's Encrypt泛域名SSL证书
使用acme.sh dns模式和DNSPOD api来申请Let's Encrypt泛域名SSL证书的方法。建议使用root用户完成所有操作可以避免不必要的权限问题。
{ 0. debug }
acme.sh 有很好的debug系统,遇到任何问题只需要在所运行的命令后加 --debug 2即可看到详细输入,可以很容易定位到错误的原因
acme.sh --issue -d yiilib.com -d '*.yiilib.com' --dns dns_dp
acme.sh --issue -d yiilib.com -d '*.yiilib.com' --dns dns_dp --debug 2
{ 1. 创建DNSPOD密钥 }
要使用DNSPOD api就需要创建一个密钥,打开 https://console.dnspod.cn/account/token 创建即可,这里需要记住ID和token,特别是token只有新建成功后显示一次,之后便不再显示。
{ 2. 安装acme.sh }
curl https://get.acme.sh | sh
source ~/.bashrc
{ 3. 生成证书 }
cd ~/.acme.sh
export DP_Id="DNSPOD创建后得到的ID"
export DP_Key="DNSPOD创建后得到的Token"
acme.sh --issue -d yiilib.com -d '*.yiilib.com' --dns dns_dp
{ 4. 复制证书到指定位置 }
acme.sh --installcert -d yiilib.com \
--key-file /etc/nginx/ssl/yiilib.com/yiilib.com.key \
--fullchain-file /etc/nginx/ssl/yiilib.com/fullchain.cer \
--reloadcmd "service nginx force-reload"
{ 5. nginx 设置 }
server {
listen 80;
server_name yiilib.com;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl_certificate /etc/nginx/ssl/yiilib.com/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/yiilib.com/yiilib.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
...
}
service nginx force-reload
{ 6. 证书自动更新 }
# crontab -l
47 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
acme.sh --cron -f
{ 7. acme.sh 自动更新 }
acme.sh最好能设置成自动更新,否则会出现api修改后无法更新证书的情况,也可以选择一段时间更新一次。总之遇到证书突然无法更新多半是acme.sh版本问题,尝试下更新版本,然后再尝试更新证书,一般都能解决
acme.sh --upgrade --auto-upgrade
//关闭自动更新
acme.sh --upgrade --auto-upgrade 0
acme.sh --v
{ refs. }
https://www.jianshu.com/p/06e3aba8c62e
https://www.laozuo.org/11668.html
留言