#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程
#群晖 部署 acme.sh自动申请和续签 SSL 证书详细教程
ACME(自动证书管理环境)是一个互联网工程任务组维护的协议,它允许自动化 Web 服务器证书的部署,acme.sh是支持 ACME 协议流行的客户端之一,可以通过其实现SSL证书的自动申请、续期等。每次都要去申请SSL证书,对于很多小伙伴来说非常麻烦,特别是现在SSL证书开始要3个月申请一次,大家都觉得很不适应。本篇将为您介绍如何使用acme.sh自动申请SSL证书图文教程。
一、前置条件
- 黑群晖环境:已安装并正常运行的 DSM 系统。
- Docker 环境:在 DSM 系统中已安装 Docker 套件。
- Cloudflare 账号:拥有一个 Cloudflare 账号,并将域名托管在 Cloudflare。
- 域名解析:确保域名已正确解析到黑群晖的公网 IP 地址。
- 管理员权限:需要 DSM 管理员账号操作。
二、Cloudflare DNS API 准备
在使用 Cloudflare 的 DNS API 之前,需要获取 API 密钥(或 API 令牌)。
1. 获取 Global API Key(全局 API 密钥)
登录 Cloudflare 控制台。进入概览,在右侧向下滑动鼠标滚轮,滚到界面下方会看到区域ID、账户ID、和获取您的API 令牌。
- 在API 令牌区域,找到Global API Key,点击View查看密钥。
- 记录下这个密钥,区域ID、账户ID用于后续配置。
三、Docker 部署 acme.sh
1. 创建 acme.sh 容器
- 登录 DSM 管理界面,进入Docker套件。
- 点击注册表,搜索 acme.sh,选择官方或可信的版本(如 neilpang/acme.sh)。
- 下载镜像,等待完成。
2. 配置并运行容器
- 进入映像,找到刚刚下载的 acme.sh 镜像,点击启动。
- 在弹出的窗口中,选择高级设置。
高级设置配置:
卷(挂载目录):
添加文件夹,挂载到 /acme.sh,用于存储证书。
DSM 文件夹路径:如 /docker/acme.sh。
容器内路径:/acme.sh。
环境变量:
添加以下环境变量,用于配置 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的值。
SYNO_DEVICE_NAME:如果群晖开启了二次认证,需要设置这个环境变量,默认为:CertRenewal
- 完成设置后,点击应用,启动容器。
四、上传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. 打开控制便面->任务管理
2、点击创建->定时任务->用户自定义脚本
3、输入任务名,用户最好用root。
4、设置运行频率,因为申请的证书3个月有效,可以设置每3个月运行一次,也可以设置每个月运行一次。
5、设置自定义脚本
bash /volume4/docker/acme.sh/cert.sh >> /volume4/docker/acme.sh/log.txt 2>&1
六、验证 HTTPS
- 打开浏览器,访问你的域名(如 https://yourdomain.com:端口)。
- 检查浏览器地址栏是否显示安全锁标志。
- 如果显示安全锁,说明 HTTPS 配置成功。