群晖7用docker安装acme.sh,实现自动更新部署SSL证书

      由于NAS公网用得多,免费证书有效期才3个月,要用到证书的地方太多了,手动更新太麻烦了,群晖可以实现自动更新所以还用CA证书,路由器管理WEB和ESXI管理WEB都是自己用已经换成了永久的自签证书


记录下安装过程


我的环境:群晖7.1 ,域名使用的阿里云管理,需要创建好管理API(之前路由器上就绑定了动态域名已经创建过了,就简单的文字说明下)


一、登录阿里云,在RAM访问控制-身份管理-用户-创建用户 ,创建完成,添加权限,DNS云解析管理权限,然后点进新创建的用户,创建AccessKey,会得到一个AcessKey和AccessKey Secret,复制出来,一会要用


二、群晖创建acme.sh容器并配置环境
先去群晖的共享文件夹docker里建一个acme的文件夹,用于存放SSL等文件

打开群晖的docker,在注册表里搜索acme.sh,由于墙可能无法直接搜索下载,可能要自己想些办法下载了

下载完成后,在映像里找到neilpang/acme.sh,运行
小风博客


网络选择


小风博客


容器名称不要写错了,下面的脚本里需要用到,acme-sh


小风博客


高级设置里添加环境变量


小风博客

Ali_Key : 填入第一步获取的 AccessKey

Ali_Secret : 填入第一步获取的 AccessKey Secret

SYNO_Username : 登录群晖的用户名

SYNO_Password : 登录群晖的密码

SYNO_Certificate :空字符串("")证书描述

SYNO_Create:填域名

SYNO_Port : 填入群晖内网的端口号(我用的默认端口5000未修改)


添加命令daemon
小风博客

添加存储目录
小风博客
小风博客

小风博客

点击下一步,运行容器。


此时只是容器搭建好了,但是证书还没有获取,也没有部署,必须要一个脚本文件来启动它。


三、创建脚本文件

在群晖的docker/acme目录里,创建一个新文本,粘贴如下代码,修改 '你的域名' 。如果你也是阿里云,那么dns_ali就不用改,这里我们用的是letsencrypt

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

然后保存,修改文件名为cert.sh

在群晖的共享文件夹docker/acme目录里,点击cert.sh文件后右键属性,复制好路径位置,一会要用

小风博客

完成以上步骤之后,就可以来获取证书了。


四、获取证书

首先确认群晖的ssh端口是打开的,然后运行终端,连接群晖。并提升账号权限为root

小风博客

然后执行脚本运行命令,路径就用刚才复制的脚本文件路径

root@nas:/# bash /volume1/docker/acme/cert.sh

小风博客


看到最后的Success,就是成功了。


然后我们可以在 /volume1/docker/acme/ 文件夹下看到有个以我们域名命名的文件夹,里面就是新保存的证书。

小风博客


然后去检查下证书是否更新,可以看到证书已经更新了,有效期也是3个月

小风博客


这步成功之后,我们就可以去部署自动更新的脚本了


五、自动获取更新证书脚本

打开群晖控制面板-任务计划-新增-用户自定义脚本,账号选root

小风博客

我选了每月执行一次
小风博客


然后任务设置-运行命令,粘贴如下代码,视情况做修改:前面获取&部署SSL的脚本,后面是生成日志的存放位置

bash  /volume1/docker/acme/cert.sh >> /volume1/docker/acme/log.txt 2>&1

小风博客

保存完工了

打 赏

小风博客
请点评论按钮,登录后发表评论
  • 最新评论
  • 总共0条评论