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.参考链接

相关推荐
JoySSLLian18 小时前
IP SSL证书:一键解锁IP通信安全,高效抵御网络威胁!
网络·人工智能·网络协议·tcp/ip·ssl
小白电脑技术1 天前
飞牛绑定免费二级域名ccwu.cc后部署SSL证书教程
网络协议·https·ssl
2401_865854881 天前
腾讯云应用防火墙和阿里云的有什么区别
安全·ssl
七夜zippoe2 天前
网络安全实战:从TLS/SSL到JWT与OAuth2.0的完整防御体系构建
网络·安全·web安全·ssl·tls
hjhcos3 天前
【宝塔】局域网IP申请SSL证书,解决浏览器本地环境可以访问摄像头,发布环境不能访问摄像头的问题
网络协议·tcp/ip·ssl
卓码软件测评3 天前
【第三方软件测试测评机构:使用LoadRunner测试HTTPS/SSL协议应用的配置和证书处理 】
网络协议·测试工具·https·测试用例·ssl
危笑ioi3 天前
docker部署jenkins/gitlab/nexus3/nginx配置端口转发与ssl
nginx·docker·gitlab·jenkins·ssl
零零发聊技术4 天前
Python使用requests请求时ssl验证失败
python·ssl
delphi 三层源码框架4 天前
delphi发送SSL 465端口邮件
ssl·delphi·发送邮件·indy 465端口
2401_865854885 天前
ssl免费证书与收费证书有什么区别
网络·网络协议·ssl