Certbot 通配符 SSL 证书申请和续期指南

Certbot 通配符 SSL 证书申请和续期指南

1. 安装 Certbot

bash 复制代码
yum install epel-release -y
yum install certbot -y

2. 安装证书

2.1 下载 DNS API 脚本

bash 复制代码
git clone https://github.com/yangrongzhou/certbot-letencrypt-wildcardcertificates-alydns-au.git
cd certbot-letencrypt-wildcardcertificates-alydns-au
chmod 0777 au.sh

2.2 配置

2.2.1 domain.ini 配置
  • 如果 domain.ini 文件中没有你的根域名,请自行添加
2.2.2 DNS API 密钥配置

需要从域名服务商获取 API 密钥并配置在 au.sh 文件中:

服务商 密钥变量 申请文档
阿里云 ALY_KEY 和 ALY_TOKEN 官方文档
腾讯云 TXY_KEY 和 TXY_TOKEN 官方文档
华为云 HWY_KEY 和 HWY_TOKEN 官方文档
GoDaddy GODADDY_KEY 和 GODADDY_TOKEN 官方文档
2.2.3 选择运行环境

支持以下运行环境和场景:

PHP 环境(>4 以上版本均可)

  • au.sh php aly add/clean:PHP 操作阿里云 DNS
  • au.sh php txy add/clean:PHP 操作腾讯云 DNS
  • au.sh php godaddy add/clean:PHP 操作 GoDaddy DNS

Python 环境(支持 2.7 和 3.7)

  • au.sh python aly add/clean:Python 操作阿里云 DNS
  • au.sh python txy add/clean:Python 操作腾讯云 DNS
  • au.sh python hwy add/clean:Python 操作华为云 DNS
  • au.sh python godaddy add/clean:Python 操作 GoDaddy DNS

3. 申请证书

3.1 测试申请(干跑模式)

bash 复制代码
certbot certonly -d *.lantanhb.com --manual --preferred-challenges dns --dry-run \
--manual-auth-hook "/work/projects/shell/certbot-au/au.sh python txy add" \
--manual-cleanup-hook "/work/projects/shell/certbot-au/au.sh python txy clean"

参数说明:

  • certonly:验证模式,只获取证书,不配置 web 服务器
  • --manual:使用插件
  • --preferred-challenges dns:采用 DNS 验证申请者合法性
  • --dry-run:测试模式,不实际申请证书
  • -d:指定要申请证书的域名
  • --manual-auth-hook:执行命令时调用 hook 文件
  • --manual-cleanup-hook:清除 DNS 添加的记录

重要提示: --manual-auth-hook--manual-cleanup-hook 的三个参数:

  • 第一个参数:选择语言(php/python)
  • 第二个参数:DNS 服务商(aly/txy/hwy/godaddy)
  • 第三个参数:固定值(--manual-auth-hook 用 add,--manual-cleanup-hook 用 clean)

3.2 实际申请证书

bash 复制代码
certbot certonly -d *.lantanhb.com --manual --preferred-challenges dns \
--manual-auth-hook "/work/projects/shell/certbot-au/au.sh python txy add" \
--manual-cleanup-hook "/work/projects/shell/certbot-au/au.sh python txy clean"

3.3 申请多域名通配符证书(SAN 证书)

bash 复制代码
certbot certonly -d *.example.com -d *.example.org -d www.example.cn \
--manual --preferred-challenges dns \
--manual-auth-hook "/脚本目录/au.sh php aly add" \
--manual-cleanup-hook "/脚本目录/au.sh php aly clean"

4. 续期证书

4.1 续期所有证书

bash 复制代码
certbot renew --manual --preferred-challenges dns \
--manual-auth-hook "/脚本目录/au.sh php aly add" \
--manual-cleanup-hook "/脚本目录/au.sh php aly clean"

4.2 续期特定证书

查看现有证书:

bash 复制代码
certbot certificates

续期指定证书(例如 simplehttps.com):

bash 复制代码
certbot renew --cert-name simplehttps.com \
--manual-auth-hook "/脚本目录/au.sh php aly add" \
--manual-cleanup-hook "/脚本目录/au.sh php aly clean"

5. 设置定时任务

将证书续期加入 crontab:

bash 复制代码
# 证书有效期<30天才会renew,所以crontab可以配置为1天或1周
# 注意:只有成功renew证书,才会重新启动nginx
1 1 */1 * * root certbot-auto renew --manual --preferred-challenges dns \
--deploy-hook "systemctl restart nginx" \
--manual-auth-hook "/脚本目录/au.sh php aly add" \
--manual-cleanup-hook "/脚本目录/au.sh php aly clean"

6.故障排除

  • Debug 日志 :操作 DNS API 时遇到问题可查看 /var/log/certd.log
  • 权限问题:确保 API token 具有足够的 DNS 操作权限

7.参考链接

相关推荐
瓦格哈儿2 天前
删掉旧 SSL 证书会影响线上业务吗?风险点梳理
网络协议·https·ssl
姚不倒2 天前
HAProxy 系列(二):健康检查与 SSL 卸载 — 保障可用性与性能
运维·网络·网络协议·ssl·haproxy
MyFreeIT4 天前
Let‘s Encrypt SSL 製作免費證書
网络协议·https·ssl
00后程序员张4 天前
Android证书绑定抓包失败?Android SSL Pinning绕过实战指南
android·网络协议·计算机网络·网络安全·adb·https·ssl
武帝为此4 天前
【TLS SSL 介绍】
网络·网络协议·ssl
吠品7 天前
SQL Server 版本查询的几种实用方法
数据库·网络协议·ssl
瓦格哈儿8 天前
内网环境也需要证书?聊聊内网 IP 证书的适用边界
网络协议·ssl
CZIDC9 天前
华为服务器TS200-2280 V2 iBMC导入SSL证书后问题案例分析
服务器·https·ssl
m0_6174939411 天前
SSLError [ASN1: NOT_ENOUGH_DATA] 问题排查与解决指南
python·ssl
左钦杨12 天前
如何剩下一笔SSL(https)证书的钱?
网络协议·https·ssl