一、Docker安装acme.sh容器
1.1 新建数据存放文件夹
新建一个acme文件夹,后面容器映射需要用
这里是我已经运行过了,所以有文件,初次建立文件夹是没东西的
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 相同的网络”,后点击下一步
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
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即可,记得保存到笔记本上,该令牌下次是看不到的。
=======上下两组参数选其一即可,官网更建议赋予Token,因为Global API的话权限太大========
方法2(不建议):
CF_Key:登录Cloudflare之后,进入域名管理在“概述”右下角单击“获取您的API令牌”然后点击“Global API Key 查看”即可
CF_Email:自己Cloudflare的登录邮箱
1.5 执行命令
执行命令输入"daemon"(选择常驻,如果不写的话,容器一般执行完一次之后就会停止了)
1.6 映射文件夹
映射docker/acme文件夹到/acme.sh
单击"完成"并运行容器
二、添加群晖计划任务
因免费证书有效期是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"用户账户
3.2"计划"选项卡上选择日期并设定为"每月重复"
3.3"任务设置"选项卡,看个人是否选择电子邮件通知,"运行命令"处粘贴如下代码
bash /volume1/docker/acme/AutoCert.sh >>/volume1/docker/acme/log.txt 2>&1
前面是执行的"AutoCert.sh"脚本,后面是输出的log文件路径
3.4点击该任务后,点击"运行"一次
3.5如果运行没问题,在acme的文件夹下会生成证书,log文件也会有提示
3.6 控制面板也会显示
设置完成!
参考资料:
- 使用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