Let’s Encrypt 泛域名证书+DNSPod API 申请
首先科普一下,域名泛域名指带通配符的证书域名,例如:*.domain.com、域名日本服务器公司有哪些名字*.chenbo.info 均为泛域名,证书包含同一级的域名全部子域名。注意二级泛域名 *.domain.com 不支撑三级域名 example.ssl.domain.com。证书
前期准备:
1、域名一台 Linux 机器(教程使用 Centos 7) 2、证书DNSPod API Token 3、域名一个域名操作过程:
第一、证书装配必要的域名软件包
直接运转脚本会有提示"It is recommended to install socat first"等谬误信息,需要提早装配必备软件包。证书这里有参考"https://www.cmsky.com/lets-encrypt-wildcard-ssl/"的域名文章介绍。
1)Debian/Ubuntu
apt-get update && apt-get install curl -y && apt-get install cron -y && apt-get install socat -y2)CentOS
yum update && yum install curl -y && yum install cron -y && yum install socat -y若此时报错没有socat包或是证书找不到socat包,解决方法装配centos的域名日本服务器公司有哪些名字epel的扩展源(未报错,请跳过)
yum -y install epel-release yum -y install socat #重新装配socat第二、装配acme.sh
curl https://get.acme.sh | sh第三、获取DNSPOD API
1、在 DNSPod 控制台申请 API Token,这里我们获取到了 ID 和 Token 以便接下来使用。
2、依次输入以下命令,其中 DP_Id 是刚刚申请的 ID,DP_Key 是刚刚申请的 Token 值,第一个 -d 后面填写一级域名,第二个 -d 后面填写泛域名。
export DP_Id="ID数字" export DP_Key="Token字符串" .acme.sh/acme.sh --issue --dns dns_dp -d chenbo.info -d *.chenbo.info在SSH中依次粘贴进去敲回车。
第四、签发证书SSL
接下来脚本会自动等待 120 秒来验证信息,签发获胜后,就会给出 CSR、KEY、CERT 留存的路径 /root/.acme.sh/chenbo.info/
[Fri Aug 10 09:53:52 EDT 2018] Your cert is in /root/.acme.sh/chenbo.info/chenbo.info.cer
[Fri Aug 10 09:53:52 EDT 2018] Your cert key is in /root/.acme.sh/chenbo.info/chenbo.info.key
[Fri Aug 10 09:53:52 EDT 2018] The intermediate CA cert is in /root/.acme.sh/chenbo.info/ca.cer
[Fri Aug 10 09:53:52 EDT 2018] And the full chain certs is there: /root/.acme.sh/chenbo.info/fullchain.cer我们可以获取到本地留存或者是在应用证书的时候直接调用这个目录的证书。且从文档中看到这个脚本"自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书",所以我们在部署SSL的时候直接调用默认位置,不要拷贝到其他目录。
第五、新增域名及重新生成证书、更新颁发脚本
新增域名:
acme.sh --issue -d www.domain.com -d *.domain.com --dns dns_dp重新生成证书:
acme.sh --renew -d mydomain.com更新acme.sh:
目前由于 acme 协议和 letsencrypt CA 都在屡次的更新, 因此 acme.sh 也常常更新以保持同步.
升级 acme.sh 到最新版 : acme.sh --upgrade如果你不想手动升级, 可以打开自动升级:
acme.sh --upgrade --auto-upgrade之后, acme.sh 就会自动保持更新了.
你也可以随时合上自动更新: acme.sh --upgrade --auto-upgrade 0更新最新版后,所有证书留存的路径: /www/server/panel/vhost/cert/
acme.sh有不少实用的参数可以方便我们来打理已经通过acme.sh申请过证书、域名等等,比如:
acme.sh --list具体的参数,大家可以使用
acme.sh --help来查看。
2019.7.3新增:
之后在SSL界面每次自动使用如下命令更新
acme.sh --renew-all --force不愿意登录SSL界面的,可以在宝塔规划任务中添加如下任务,再运转强制续签证书,续签完成后移除该任务:
(限制于宝域面板最长只能31天的实施周期)
第六、注意事项
1、通过这篇文章,我们可以快速利用DNSPOD API获取Lets Encrypt泛域名证书。在得到签发的证书之后,如若为了域名解析平安,可以在 DNSPod 移除 Token。
2、签发的证书有效期为 3 个月,之后需要重新申请。脚本自动为了创建自动续约,方便我们在90天到期之后还需要处理续约问题。
3、在申请签发的过程中脚本会调用 API 自动添加两条 TXT 记载进行验证,在申请获胜之后会自动移除这两条记载。
4、获取 acme.sh 脚本需要在 acme.sh 以及 github.com 拉取文件,所以国内的一些机器可能无法正常运转。
5、为了方便使用,可以装配BT面板,可视化打理文件。https://www.bt.cn/
内容看完了