2020-06-03 22:01:24 0 评论 Linux Boy.Lee

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