#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

2025-01-16 14:19:37 5点赞 68收藏 6评论

ACME(自动证书管理环境)是一个互联网工程任务组维护的协议,它允许自动化 Web 服务器证书的部署,acme.sh是支持 ACME 协议流行的客户端之一,可以通过其实现 SSL证书的自动申请、续期等。每次都要去申请SSL证书,对于很多小伙伴来说非常麻烦,特别是现在SSL证书开始要3个月申请一次,大家都觉得很不适应。本篇将为您介绍如何使用acme.sh自动申请SSL证书图文教程。


一、前置条件

  1. 群晖环境:已安装并正常运行的 DSM 系统。

  2. Docker 环境:在 DSM 系统中已安装 Docker 套件。

  3. Cloudflare 账号:拥有一个 Cloudflare 账号,并将域名托管在 Cloudflare。

  4. 域名解析:确保域名已正确解析到黑群晖的公网 IP 地址。

  5. 管理员权限:需要 DSM 管理员账号操作。


二、Cloudflare DNS API 准备

在使用 Cloudflare 的 DNS API 之前,需要获取 API 密钥(或 API 令牌)。

1. 获取 Global API Key(全局 API 密钥)

登录 Cloudflare 控制台。

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

进入 概览 ,在右侧向下滑动鼠标滚轮,滚到界面下方会看到区域ID账户ID、和获取您的API 令牌

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程
  1. API 令牌 区域,找到 Global API Key,点击 View 查看密钥。

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

记录下这个密钥,区域ID、账户ID用于后续配置。


三、Docker 部署 acme.sh

1. 创建 acme.sh 容器

  1. 登录 DSM 管理界面,进入 Docker 套件。

  2. 点击 注册表,搜索 acme.sh,选择官方或可信的版本(如 neilpang/acme.sh)。

  3. 下载镜像,等待完成。

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

2. 配置并运行容器

  1. 进入 映像,找到刚刚下载的 acme.sh 镜像,点击 启动

  2. 在弹出的窗口中,选择 高级设置

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

高级设置配置:

  • (挂载目录):

    • 添加文件夹,挂载到 /acme.sh,用于存储证书。

      • DSM 文件夹路径:如 /docker/acme.sh

      • 容器内路径:/acme.sh

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程
  • 环境变量

    • 添加以下环境变量,用于配置 Cloudflare API:

      • CF_Account_ID:cloudflare的账户id。

      • CF_Email:填写你的 Cloudflare 账号邮箱。

      • CF_Key:如果使用 Global API Key,则填写你的 Global API Key。

      • CF_Zone_ID: cloudflare的区域ID。

      • SYNO_DEVICE_ID:如果群晖开启了二次认证,需要设置这个环境变量,这个值需要F12打开开发者工具,然后随意从一个接口中的cookies字段获取,did的值就是device_id的值。

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程
      • SYNO_DEVICE_NAME:如果群晖开启了二次认证,需要设置这个环境变量,默认为:CertRenewal

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程
  1. 完成设置后,点击 应用,启动容器。


四、上传sh脚本

1. 在群晖创建目录acme.sh

登录群晖,在任意一个目录下创建一个acme.sh的文件夹,用户上传生成和安装ssl的sh脚本。

2.本机修改下面脚本,然后上传到群晖的acme.sh的文件夹下

#!/bin/bash # 域名 DOMAIN='xxxxxxx.xyz' # # DNS类型,dns_ali dns_dp dns_gd dns_aws dns_linode根据域名服务商而定,CloudFlare就是dns_cf DNS='dns_cf' # DNS API 生效等待时间 值(单位:秒),一般120即可 # 某些域名服务商的API生效时间较大,需要将这个值加大(比如900) DNS_SLEEP=120 # 证书服务商,letsencrypt CERT_SERVER='letsencrypt' ##--keylength 2048 表示生成rsa证书 generateCrtCommand="acme.sh --force --log --issue --server ${CERT_SERVER} --dns ${DNS} --dnssleep ${DNS_SLEEP} -d "${DOMAIN}" -d "*.${DOMAIN}" --keylength 2048" installCrtCommand="acme.sh --debug 3 --output-insecure --deploy -d "${DOMAIN}" -d "*.${DOMAIN}" --deploy-hook synology_dsm" docker exec acme-sh $generateCrtCommand docker exec acme-sh $installCrtCommand


五、创建定时任务

1. 打开控制便面->任务管理

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

2、点击创建->定时任务->用户自定义脚本

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

3、输入任务名,用户最好用root。

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

4、设置运行频率,因为申请的证书3个月有效,可以设置每3个月运行一次,也可以设置每个月运行一次。

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程

5、设置自定义脚本

bash /volume4/docker/acme.sh/cert.sh >> /volume4/docker/acme.sh/log.txt 2>&1#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程


六、验证 HTTPS

  1. 打开浏览器,访问你的域名(如 https://yourdomain.com:端口)。

  2. 检查浏览器地址栏是否显示安全锁标志。

  3. 如果显示安全锁,说明 HTTPS 配置成功。

#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程
展开 收起
6评论

  • 精彩
  • 最新
  • 托管到CF的话,可以用CF的15年那个证书啊

    校验提示文案

    提交
    试过了,那个cf15年的证书部署到群晖之后还是会提示不安全的连接。

    校验提示文案

    提交
    收起所有回复
  • Your cert is in: /acme.sh/XXX.top_ecc/XXX.top.cer
    Your cert key is in: /acme.sh/XXX.top_ecc/XXX.top.key
    The intermediate CA cert is in: /acme.sh/XXX.top_ecc/ca.cer
    And the full-chain cert is in: /acme.sh/XXX.top_ecc/fullchain.cer
    [Sun Feb 2 02:39:27 UTC 2025] The domain 'XXX.top' seems to already have an ECC cert, let's use it.
    Please refer to 去看看 for error code: 7
    Logging into localhost:5000...
    [Sun Feb 2 02:39:28 UTC 2025] Please refer to 去看看 for error code: 7
    Unable to authenticate to http://localhost:5000, you may report this by providing full log with '--debug 3'.
    Error deploying for domain: XXX.top
    [Sun Feb 2 02:39:28 UTC 2025] Error encountered while deploying.

    请问报这个错误是什么意思?我看这个日志里默认端口是5000 群晖网页端口我是自定义的,是和这个有关系吗?或者是要把http://localhost:5000这个改成内网地址和实际端口?

    校验提示文案

    提交
    是的,环境变量里面设置实际的内网地址和端口号

    校验提示文案

    提交
    收起所有回复
  • 容器启动完就意外停止了,容器日志也看不出来是因为什么停止的,请问有啥办法么?

    校验提示文案

    提交
  • 这个只能自动生成证书吧?还要自己替换上去对吧 没看到哪里有替换证书的操作

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
68
扫一下,分享更方便,购买更轻松