Administrator
Published on 2024-12-13 / 96 Visits
0

certbot + 阿里云+自动DNS验证的永久免费证书(可泛型)

一、certbot安装

基于centos的安装

sudo yum update
sudo yum install epel-release
sudo yum install certbot -y

二、下载自动脚本

脚本GITHUB地址 点击这里

脚本直接下载地址 点击这里

1. 解压脚本文件

直接解压下载的文件

unzip certbot-letencrypt-wildcardcertificates-alydns-au-master.zip

如果没有unzip需要运行一下

unzip install unzip

2. 更改文件权限

进入解压后的文件夹后文件列表如下

-rw-r--r-- 1 root root 7961 Feb 13  2020 README.md
-rwxr-xr-x 1 root root 2726 Dec 11 02:52 au.sh
-rw-r--r-- 1 root root   80 Feb 13  2020 domain.ini
drwxr-xr-x 1 root root   68 Feb 13  2020 php-version
drwxr-xr-x 1 root root   80 Feb 13  2020 python-version

修改au.sh文件权限

chmod 0777 au.sh

3. 查询域名后缀

查询domain.ini文件中是否有需要申请域名的后缀

4. 修改阿里云(或者其他)appid

编辑au.sh修改对应的key和token

vi au.sh

这里有阿里云、腾讯云、GoDaddy应该是够用了

#PHP 命令行路径,如果有需要可以修改
phpcmd="/usr/bin/php"
#Python 命令行路径,如果有需要可以修改
pythoncmd="/usr/bin/python"

#填写阿里云的AccessKey ID及AccessKey Secret
#如何申请见https://help.aliyun.com/knowledge_detail/38738.html
ALY_KEY="xxxxxxxxxx"
ALY_TOKEN="xxxxxxxxxx"

#填写腾讯云的SecretId及SecretKey
#如何申请见https://console.cloud.tencent.com/cam/capi
TXY_KEY=""
TXY_TOKEN=""

#填写华为云的 Access Key Id 及 Secret Access Key
#如何申请见https://support.huaweicloud.com/devg-apisign/api-sign-provide.html
HWY_KEY=""
HWY_TOKEN=""

#GoDaddy的SecretId及SecretKey
#如何申请见https://developer.godaddy.com/getstarted
GODADDY_KEY=""
GODADDY_TOKEN=""

三、开始申请

申请脚本demo如下

certbot certonly  -d *.example.com -d example.com --manual --preferred-challenges dns --manual-auth-hook "/脚本目录/au.sh python aly add" --manual-cleanup-hook "/脚本目录/au.sh python aly clean"

脚本后的参数解释

  • 第一个代表你要选择那种语言(php/python)

  • 第二个参数代表你的DNS厂商(aly/txy)

命令厚的参数解释

  • certonly:表示采用验证模式,只会获取证书,不会为web服务器配置证书

  • --manual:表示插件

  • --preferred-challenges dns:表示采用DNS验证申请者合法性(是不是域名的管理者)

  • --dry-run:在实际申请/更新证书前进行测试,强烈推荐

  • -d:表示需要为那个域名申请证书,可以有多个。

  • --manual-auth-hook:在执行命令的时候调用一个 hook 文件

  • --manual-cleanup-hook:清除 DNS 添加的记录

四、自动续费

添加crontab

#证书有效期<30天才会renew,所以crontab可以配置为1天或1周
1 1 */1 * * root certbot renew --manual --preferred-challenges dns  --manual-auth-hook "/脚本目录/au.sh python aly add" --manual-cleanup-hook "/脚本目录/au.sh python aly clean"