最新消息:愿得一人心,白首不分离。

Let’s Encrypt 泛域名证书+DNSPod API 申请

学习&思考 轮回的落日℡ 15浏览 0评论

首先科普一下,泛域名指带通配符的域名,例如:*.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 -y

2)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 --helpt

来查看。

第六、注意事项

1、通过这篇文章,我们可以快速利用DNSPOD API获取Let’s Encrypt泛域名证书。在得到签发的证书之后,如若为了域名解析安全,可以在 DNSPod 删除 Token。

2、签发的证书有效期为 3 个月,之后需要重新申请。脚本自动为了创建自动续约,方便我们在90天到期之后还需要处理续约问题。

3、在申请签发的过程中脚本会调用 API 自动添加两条 TXT 记录进行验证,在申请成功之后会自动删除这两条记录。

4、下载 acme.sh 脚本需要在 acme.sh 以及 github.com 拉取文件,所以国内的一些机器可能无法正常运行。

5、为了方便使用,可以安装BT面板,可视化管理文件。https://www.bt.cn/

转载请注明:轮回阁 » Let’s Encrypt 泛域名证书+DNSPod API 申请