前言

毕竟acme.sh是较新的证书申请方式, 但毕竟较新, 兼容性和适配范围不如certbot, 所以本文介绍如何使用certbot申请证书并自动续期

一键脚本

1
2
# 一键脚本仅支持CloudFlare
bash <(curl -fsSL https://raw.githubusercontent.com/Slotheve/Shells/main/certbot.sh)

手动安装

  • 准备工作

安装certbot本体

1
2
3
4
# APT系  
apt install -y certbot
# YUM系
yum install -y certbot
  • 安装插件

# cloudflare (软件包自带)

1
python*-certbot-dns-cloudflare

# dnspod (需先安装pip)

1
pip install certbot-dns-dnspod

# aliyun (需先安装pip)

1
pip install certbot-dns-aliyun
  • 创建配置文件并赋予权限

# cloudflare

1
2
3
4
5
6
touch /etc/letsencrypt/cloudflare.ini
cat > /etc/letsencrypt/cloudflare.ini << EOF
dns_cloudflare_email = # 你的cf邮箱
dns_cloudflare_api_key = # 你的cf global api
EOF
chmod 600 /etc/letsencrypt/cloudflare.ini

# dnspod

1
2
3
4
5
6
touch /etc/letsencrypt/dnspod.ini
cat > /etc/letsencrypt/dnspod.ini << EOF
dns_dnspod_email = # 你的dnspod邮箱
dns_dnspod_api_token = # 你的dnspod api token
EOF
chmod 600 /etc/letsencrypt/dnspod.ini

# aliyun

1
2
3
4
5
6
touch /etc/letsencrypt/credentials.ini
cat > /etc/letsencrypt/credentials.ini << EOF
certbot_dns_aliyun:dns_aliyun_access_key = # 你的aliyun密钥
certbot_dns_aliyun:dns_aliyun_access_key_secret = # 你的密钥密码
EOF
chmod 600 /etc/letsencrypt/credentials.ini
  • 申请证书

# cloudflare

1
2
3
certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d # 你的域名,多个域名使用 ',' 分隔

# dnspod

1
2
3
certbot certonly -a dns-dnspod \
--dns-dnspod-credentials /etc/letsencrypt/dnspod.ini \
-d # 你的域名,多个域名使用 ',' 分隔

# aliyun

1
2
3
certbot certonly -a certbot-dns-aliyun:dns-aliyun \
--certbot-dns-aliyun:dns-aliyun-credentials /etc/letsencrypt/credentials.ini \
-d # 你的域名,多个域名使用 ',' 分隔

第一次申请填写几个参数(邮箱、是否同意条款、是否接收资讯邮件)就行。

  • 安装证书

证书申请后保存在 /etc/letsencrypt/live/ 域名/目录下。

  • 自动续期

使用crontab任务计划来实现自动续期

1
0 3 */8 * * certbot renew

保存后重启crond服务

1
systemctl restart crond/crontab/cron

每隔8天凌晨3点整执行证书续签指令