/AutoSSL

一个利用 GitHub Actions 和 acme.sh 自动化管理域名 SSL 证书的小项目

AutoSSL

🎉AutoSSL

利用 GitHub Actions 以及 acme.sh,实现了多域名自动申请 SSL 证书并保存,同时可对 SSL 证书自动续期。

🚨Warning

Warning

使用时,注意clone本仓库,并创建一个私有仓库来管理证书,防止证书的私钥泄露。

✅Features

  • 自动申请 SSL 证书,并保存证书到 SSL 目录下
  • 定期检查 SSL 证书,小于30天自动续期
  • 定期输出检查报告到 Certificate.md 文件
  • 证书是泛域名证书
  • 同时申请 ECDSA 和 RSA 证书
  • 支持多个不同 DNS 服务商下的多个域名
  • 支持邮件&TG推送新证书

🚀How to use

申请域名

申请 DNS 服务商 API Token

参考官方文档dnsapi · acmesh-official/acme.sh Wiki (github.com)或其他文章

配置 Secret

在 GitHub 仓库中,依次访问 Settings -> Security -> Secrets and variables -> Actions -> Repository secrets,添加以下变量:

- DNSAPI

创建 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"

- ACCOUNT_EMAIL

acme.sh 申请 SSL 需要的邮箱地址

设置 GitHub Actions 权限

在 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即可手动触发任务执行

🚸Thanks

🙏感谢,在此项目基础上对代码改吧改吧