赞
踩
最近发现SSL到期了,上去阿里云一看,免费证书有效期才3个月了,本来就1年一次觉得够烦了。干脆弄一下自动部署更新SSL证书吧(以阿里云为例)。
登录阿里云,在RAM访问控制-身份管理-用户-创建用户
创建完成,添加权限
然后点进新创建的用户,创建AccessKey
会得到一个AcessKey和AccessKey Secret,复制出来,一会要用
先去共享文件夹docker里建一个acme.sh的文件夹。
群晖现在docker改名为Container Manager了。打开Container Manager,在注册表里搜索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未修改)
更改网络为host,添加命令daemon
点击下一步,运行容器。
此时只是容器搭建好了,但是证书还没有获取,也没有部署,必须要一个脚本文件来启动它。
在群晖用文本编辑器,创建一个新文本,粘贴如下代码,修改 '你的域名' 。如果你也是阿里云,那么dns_ali就不用改,这里我们用的是letsencrypt
- #!/bin/bash
-
- # 域名
-
- DOMAIN='你的域名'
-
- # # 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.
将此脚本文件放到 /volume1/docker/acme.sh 文件夹下,然后右键属性,复制好路径位置,一会要用。
完成以上步骤之后,就可以来获取证书了。
首先确认群晖的ssh端口是打开的,然后运行终端,连接群晖。并提升账号权限为root
然后执行脚本运行命令,路径就用刚才复制的脚本文件路径
root@JoeCloud:~# bash /volume1/docker/acme.sh/cert.sh
看到最后的Success,就是成功了。
然后我们可以在 /volume1/docker/acme.sh/ 文件夹下看到有个以我们域名命名的文件夹,里面就是新保存的证书。
然后去检查下证书是否更新,可以看到证书已经更新了,有效期也是3个月
这步成功之后,我们就可以去部署自动更新的脚本了
打开群晖控制面板-任务计划-新增,账号选root
我选了每月执行一次
然后任务设置-运行命令,粘贴如下代码,视情况做修改:
bash /volume1/docker/acme.sh/cert.sh >> /volume1/docker/acme.sh/log.txt 2>&1
然后确定,就完工了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。