利用 GitHub Actions 以及 acme.sh,实现了多域名自动申请 SSL 证书并保存,同时可对 SSL 证书自动续期。
Warning
使用时,注意clone本仓库,并创建一个私有仓库来管理证书,防止证书的私钥泄露。
- 自动申请 SSL 证书,并保存证书到 SSL 目录下
- 定期检查 SSL 证书,小于30天自动续期
- 定期输出检查报告到 Certificate.md 文件
- 证书是泛域名证书
- 同时申请 ECDSA 和 RSA 证书
- 支持多个不同 DNS 服务商下的多个域名
- 支持邮件&TG推送新证书
略
参考官方文档dnsapi · acmesh-official/acme.sh Wiki (github.com)或其他文章
在 GitHub 仓库中,依次访问 Settings -> Security -> Secrets and variables -> Actions -> Repository secrets
,添加以下变量:
创建 DNSAPI 填写从 DNS 服务商获取的 API KEY,用到什么 DNS 解析就填什么,具体键名可参考官方文档dnsapi · acmesh-official/acme.sh Wiki (github.com)对应中 DNS 服务商的 API
export DP_Id="xxxxxxxxxxxxxxxxxxxxxx"
export DP_Key="xxxxxxxxxxxxxxxxxxxxx"
export Tencent_SecretId="xxxxxxxxxxx"
export Tencent_SecretKey="xxxxxxxxxx"
export Ali_Key="xxxxxxxxxxxxxxxxxxxx"
export Ali_Secret="xxxxxxxxxxxxxxxxx"
export CF_Zone_ID="xxxxxxxxxxxxxxxxx"
export CF_Token="xxxxxxxxxxxxxxxxxxx"
export AWS_ACCESS_KEY_ID="xxxxxxxxxx"
export AWS_SECRET_ACCESS_KEY="xxxxxx"
acme.sh 申请 SSL 需要的邮箱地址
在 GitHub 仓库中,依次访问 Settings -> Code and automation -> Actions -> General -> Workflow permissions
,勾选 Read and write permissions
权限。
修改domains.yaml
文件,在其中对应 DNS 服务商下您的域名所在 DNS 解析进行修改,用到什么留什么,没用到的可以删了,每个 DNS 服务商下可以填写多个域名,将依次申请
dnspod:
- example.com
tencent:
- example0.com
aliyun:
- example1.com
- example2.com
cloudflare:
- example3.com
- example4.com
aws:
- example5.com
- example6.com
默认已支持这5个DNS服务商,这时候你就要问了,如果您的域名所在DNS解析不在上述的说明中该怎么办?
你可以在.github/workflows/AutoSSL.yaml
中修改这个地方,增加其他DNS服务商,例如:["gadaddy"]="dns_gd"
,等号左边是你在domains.yaml
中定义的键名,右边是acme的dns插件名
# Define the mapping of DNS providers to acme.sh plugins
declare -A dns_plugins=(
["dnspod"]="dns_dp"
["aliyun"]="dns_ali"
["tencent"]="dns_tencent"
["cloudflare"]="dns_cf"
["aws"]="dns_aws"
# Add other DNS providers and their corresponding acme.sh plugins here
# 在此处添加其他DNS提供商及其相应的acme.sh插件
["gadaddy"]="dns_gd"
)
工作流已配置每周一UTC
时间17
点,即北京时间凌晨1
点自动运行
在 GitHub 仓库中,点击右上角的Star
即可手动触发任务执行
🙏感谢,在此项目基础上对代码改吧改吧