一、Docker安装acme.sh容器
1.1 新建数据存放文件夹
新建一个acme文件夹,后面容器映射需要用
这里是我已经运行过了,所以有文件,初次建立文件夹是没东西的
![image-20240124201421814](https://i0.wp.com/imgs.run/i/2024/01/24/65b10db8bc1aa.png?w=640&ssl=1)
1.2 下载Docker镜像
DSM7.2以上的系统可直接在Docker注册表里搜索neilpang/acme.sh
点击就下载开始创建了
DSM7.1及以下的系统因Docker仓库路径没有更新,所以可能无法访问Docker的注册表,需要通过ssh连接群晖后使用下面命令下载镜像
(我是DSM7.1,使用第二个方法)
docker pull neilpang/acme.sh
1.3 新建容器
下载好后点击neilpang/acme.sh镜像新建容器,选择“使用与 Docker Host 相同的网络”,后点击下一步
![image-20240124202423208](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dbb99350.png?w=640&ssl=1)
1.4环境变量
打开“高级设置”,在“环境变量”中新增以下环境变量
1)需要部署群晖的参数
SYNO_Username:群晖管理员账号
SYNO_Password:群晖管理员登录密码
SYNO_Certificate:"" (证书名,给空字符即可)
SYNO_Scheme:访问方式(http/https)(可选,默认http)
SYNO_Hostname:群晖ip地址(可选,默认localhost)
SYNO_Port:群晖访问端口(可选,默认5000)
更多参数可参考Github上的说明
Synology NAS Guide · acmesh-official/acme.sh Wiki · GitHub
![image-20240124204137586](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dbd3cc0a.png?w=640&ssl=1)
2) 需要申请证书的Cloudflare域名参数
Cloudflare有两种参数设置方式
- CF_Zone_ID与CF_Token组合方式
- CF_Key与CF_Email组合方式
强烈建议使用第一种CF_Zone_ID与CF_Token方式
方式1(最安全的方式):
CF_Zone_ID: 登录Cloudflare之后,进入域名管理在“概述”右下角上
CF_Token:“概述”右下角单击“获取您的API令牌”,没有令牌的的单击“创建令牌”,编辑区域 DNS点击使用模板,在“区域资源”里选择自己的域名然后生成API Token即可,记得保存到笔记本上,该令牌下次是看不到的。
![image-20240124204008707](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dbfb6d56.png?w=640&ssl=1)
![image-20240124204519065](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dc306557.png?w=640&ssl=1)
![image-20240124204721109](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dc57b38f.png?w=640&ssl=1)
![image-20240124204815504](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dc7d6b8d.png?w=640&ssl=1)
=======上下两组参数选其一即可,官网更建议赋予Token,因为Global API的话权限太大========
方法2(不建议):
CF_Key:登录Cloudflare之后,进入域名管理在“概述”右下角单击“获取您的API令牌”然后点击“Global API Key 查看”即可
CF_Email:自己Cloudflare的登录邮箱
1.5 执行命令
执行命令输入"daemon"(选择常驻,如果不写的话,容器一般执行完一次之后就会停止了)
![image-20240124205608946](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dc993633.png?w=640&ssl=1)
1.6 映射文件夹
映射docker/acme文件夹到/acme.sh
单击"完成"并运行容器
![image-20240124205256698](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dcb55d3b.png?w=640&ssl=1)
二、添加群晖计划任务
因免费证书有效期是90天,所以要每1~3个月申请一次证书才行。
因群晖DSM的计划任务有安全限制,建议先写成脚本后,使用计划任务去调用
1.设置脚本
新建可执行脚本并保存为"AutoCert.sh",内容如下
#!/bin/bash
docker exec neilpang-acme.sh1 acme.sh --force --log --issue --server letsencrypt --dns dns_cf --dnssleep 120 -d example.com -d *.example.com -k 4096
docker exec neilpang-acme.sh1 acme.sh --deploy -d example.com -d *.example.com --deploy-hook synology_dsm
==参数说明==
1)申请证书参数
neilpang-acme.sh1:容器的名字,根据自己的容器名填写
--server letsencrypt:选的是Let's Encrypt的免费证书
--dns dns_cf:这里选的是Cloudflare的DNS
--dnssleep 120:Sleep 120秒
-d example.com -d *.example.com:把example.com换成自己的域名即可
-k 4096 :RSA证书(需要ECC证书格式可改为-k ec-256,或省略)
2)部署证书到群晖参数
neilpang-acme.sh1:容器的名字,根据自己的容器名填写
--deploy -d example.com -d *.example.com:把example.com换成自己的域名即可
--deploy-hook synology_dsm:部署到群晖上
2.上传脚本
把保存好的"AutoCert.sh"文件,上传到群晖任意文件夹下,我这里是上传到Docker/acme文件夹下了
3.设置计划任务
打开"控制面板"选择"任务计划",“新增”->“计划任务”->“用户定义的脚本”
3.1.在"常规"选项输入任务名称,并选择"root"用户账户
![image-20240124210553511](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dcddc77f.png?w=640&ssl=1)
3.2"计划"选项卡上选择日期并设定为"每月重复"
![image-20240124210630449](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dd0498fe.png?w=640&ssl=1)
3.3"任务设置"选项卡,看个人是否选择电子邮件通知,"运行命令"处粘贴如下代码
bash /volume1/docker/acme/AutoCert.sh >>/volume1/docker/acme/log.txt 2>&1
前面是执行的"AutoCert.sh"脚本,后面是输出的log文件路径
![image-20240124210701710](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dd1e905c.png?w=640&ssl=1)
3.4点击该任务后,点击"运行"一次
![image-20240124210806438](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dd44cf39.png?w=640&ssl=1)
3.5如果运行没问题,在acme的文件夹下会生成证书,log文件也会有提示
![image-20240124210851184](https://i0.wp.com/imgs.run/i/2024/01/24/65b10dd95c0be.png?w=640&ssl=1)
3.6 控制面板也会显示
![image-20240124211617413](https://i0.wp.com/imgs.run/i/2024/01/24/65b10ddd86afb.png?w=640&ssl=1)
设置完成!
参考资料:
- 使用Docker方式运行acme.sh签发SSL证书并达到自动续签的简单介绍
- 群晖个人域名(Cloudflare)通过Docker安装acme.sh添加证书
- HTTPS certificates for your Synology NAS using acme.sh
- 如何使用acme.sh自动获取、更新Let’s Encrypt的SSL证书?
- 使用 acme.sh 配置自动续签 SSL 证书
有兴趣研究群晖的SSL证书设置的,可以查看我之前转的 群晖 NAS SSL证书存放的路径
Comments NOTHING