群晖折腾:使用 Docker 部署 acme.sh 申请并配置域名 SSL 证书

准备工作

  • 你的域名,并在你的 DNS 解析服务商中生成 API 密钥,保存备用。
  • 群晖开启 SSH,并安装 Docker 套件。
  • 群晖新建一个用户 acme,密码保存备用,加入 administrators 用户组,套件和共享文件夹权限可以全部禁掉。

配置 Docker

  1. 用 File Station 在共享文件夹 docker 里新建文件夹 acme.sh。

  2. 在本机上创建 docker-compose.yml,内容如下,根据自己情况修改。

    保存后将上传到刚才新建的 docker/acme.sh 文件夹里。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    services:
    acme.sh:
    image: neilpang/acme.sh:latest
    container_name: acme.sh
    environment:
    - DP_Id=******
    - DP_Key=************************ #准备工作中生成的DNS解析商的API密钥,此处以使用DNSPod为例
    - SYNO_Scheme=http
    - SYNO_Hostname=localhost
    - SYNO_Port=5000
    - SYNO_Username=acme
    - SYNO_Password=**************** #填写群晖里新建的用户acme的密码
    - SYNO_Certificate=example.com #你的域名
    - SYNO_Create=1
    volumes:
    - ./data:/acme.sh
    network_mode: host
    command: daemon
    restart: unless-stopped

    本配置以使用 DNSPod.cn 为例,关于其他域名的配置名,请参考 dnsapi

    请注意:变量值无需加引号或双引号

  3. 打开 Docker 套件,在注册表中搜索 "acme.sh",双击 neilpang/acme.sh,标签选 latest,点确定下载映像。

  4. SSH 连接群晖,挂载到刚刚新建的 docker/acme.sh 文件夹里,启动 docker 容器。

    1
    2
    cd /volume1/docker/acme.sh
    sudo docker-compose up -d

    如果无误,应该能在群晖 docker 套件中看到刚启动的容器 acme.sh

申请并配置证书

  1. (可选)设置默认申请 Let’s Encrypt 证书。

    1
    sudo docker exec acme.sh --set-default-ca  --server  letsencrypt

    如不修改,acme.sh 将默认申请 ZeroSSL.com 的证书。详见 ZeroSSL.com CA

  2. 申请证书。以使用解析商 DNSPod.cn 为例。

    请根据实际需要修改参数为自己的 DNS 解析商和域名。

    1
    sudo docker exec acme.sh --issue --dns dns_dp -d example.com
  3. 申请完成后,使用 deployhooks 将证书导入群晖。

    请根据实际需要修改参数为自己的域名。

    1
    sudo docker exec acme.sh --deploy -d example.com --deploy-hook synology_dsm
  4. 群晖 DSM 中打开控制面板 - 安全性,根据自己需要设置新的证书。

参考