本文最后修改于2024 14th 8 月 at 07:22 上午
这里仅仅给个例子,我的域名是腾讯云dns托管,不同dns服务商命令不同,需要修改
前期准备
该段来自使用 GitHub Actions 自动申请与部署 SSL 证书 - 宝硕博客 (baoshuo.ren)
首先请在本地(或自己的服务器上)成功使用 acme.sh 的 DNS-01 验证方式成功申请一次证书,如果不会操作的话可以参考 烧饼博客的教程 来进行。这个过程包括:
- 向 CA 注册 ACME 账户(如果使用 Let’s Encrypt 则会自动进行,详细步骤请参阅 acme.sh 的 Wiki)。
- 通过环境变量指定 DNS 提供商的凭据,用于添加/删除 ACME DNS-01 认证所需的 TXT 记录。
- 确认证书申请可以成功,为后续调试排除可能的问题。
第一次申请证书后,CA 的 ACME 账户凭据将被存储到 ~/.acme.sh/ca
中,DNS 提供商的凭据将被存储到 ~/.acme.sh/account.conf
中。将它们打包并使用 Base64 编码存储,以备在 GitHub Actions 中使用:
cd ~/.acme.sh
tar cz ca account.conf | base64 -w0
将输出内容添加到 GitHub 仓库的 Secrets 中。注意不要复制输出中的多余信息。
workflow
name: upload
on:
workflow_dispatch:
schedule:
- cron: '0 0 1 * *'
jobs:
issue-ssl-certificate:
name: Issue SSL certificate
runs-on: ubuntu-latest
env:
domains:
steps:
- name: mkdir
# 创建output
run: mkdir -p output
- name: install acme.sh
shell: bash
run: curl https://get.acme.sh | sh
- name: Extract account files for acme.sh
shell: bash
run: |
echo "$ACME_SH_ACCOUNT_TAR" | base64 -d | tar -C ~/.acme.sh -xz
env:
# Base64 编码的 acme.sh 配置信息
ACME_SH_ACCOUNT_TAR: ${{ secrets.ACME_SH_ACCOUNT_TAR }}
# 申请证书
- name: Issue SSL certificates
shell: bash
run: |
~/.acme.sh/acme.sh --issue --dns dns_tencent -d *.aprdec.top --key-file output/key.pem --fullchain-file output/cert.pem
- name: update qiniu
uses: foxundermoon/upload-qiniu-cert-action@master
with:
ak: ${{ secrets.QINIU_AK }}
sk: ${{ secrets.QINIU_SK }}
domain: aprdec.top
update-domains: |
qncdn.aprdec.top| https | http2
qiniu.aprdec.top | https | http2
debug: 'yes'
cert-path: 'output/cert.pem'
key-path: 'output/key.pem'
Comments | NOTHING