由于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
保存完工了
本文为 小风原创文章,转载无需和我联系,但请注明来自 小风博客www.hotxf.com