初次接触SSL证书是在腾讯云(
DNSPod
)平台,那时每三个月就要手动重新申请一次。起初还能耐心操作,但自从体验了CloudFlare
的自动化服务后,这种重复劳动就显得格外繁琐。于是我开始寻找自动续费的解决方案,最终成功实现了证书的自动化管理。本文将分享我的具体实现方法
本文介绍的两种方案均支持申请泛域名证书。
自动续费
最初在网上搜索方案时,找到的大多是通过
acme.sh
脚本实现的教程。但在实践过程中,意外发现我的服务器面板工具(1Panel)已经内置了证书申请功能(Lego
插件)。经过对比测试,最终选择了这个集成度更高、操作更便捷的解决方案
acme.sh
acme.sh 实现了
acme
协议,可以从ZeroSSL
,Let's Encrypt
等 CA 生成免费的证书 开源地址
这里简单记录一下我使用docker运行,后续真正使用再补充:
services:
acme-sh:
image: neilpang/acme.sh
container_name: acme.sh
volumes:
- ./out:/acme.sh
network_mode: host
command: daemon
stdin_open: true
tty: true
restart: no
使用 docker exec
运行 acme.sh 命令:
docker exec acme.sh --help
docker exec acme.sh --issue -d example.com --standalone
1Panel
具体操作非常直观,只需按照面板的可视化指引逐步操作:
创建DNS服务商API账户(用于域名验证)
配置ACME账户(用于证书签发)
发起证书申请流程
需要注意的是,在申请过程中可能会遇到验证超时的情况。此时通常有两种解决方案:
修改
DNS服务器
为114.114.114.114
或者其他启用
跳过DNS验证
选项(部分证书类型适用)者跳过DNS校验
申请成功后直接可以在网站https选项中选择证书。
部署
由于我的域名托管在腾讯云平台,因此基于腾讯云API 3.0开发了自动化证书管理功能,主要实现了以下操作:
SSL证书自动上传至云平台
CDN服务的证书一键更换
删除过期证书
涉及到的函数如下:
SSL:
● DescribeCertificate
获取证书信息
● DescribeCertificates
获取证书列表
● UploadCertificate
上传证书
● DeleteCertificate
删除证书
CDN:
● DescribeCertDomains
用于校验SSL证书并提取证书中包含的域名
● UpdateDomainConfig
修改内容分发网络加速域名配置信息
评论