本文最后修改于2024 14th 8 月 at 07:22 上午

这里仅仅给个例子,我的域名是腾讯云dns托管,不同dns服务商命令不同,需要修改

前期准备

该段来自使用 GitHub Actions 自动申请与部署 SSL 证书 - 宝硕博客 (baoshuo.ren)

首先请在本地(或自己的服务器上)成功使用 acme.shDNS-01 验证方式成功申请一次证书,如果不会操作的话可以参考 烧饼博客的教程 来进行。这个过程包括:

  1. 向 CA 注册 ACME 账户(如果使用 Let’s Encrypt 则会自动进行,详细步骤请参阅 acme.sh 的 Wiki)。
  2. 通过环境变量指定 DNS 提供商的凭据,用于添加/删除 ACME DNS-01 认证所需的 TXT 记录。
  3. 确认证书申请可以成功,为后续调试排除可能的问题。

第一次申请证书后,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'
        
​
​

Angel,请你不要放开我的手