当前位置:   article > 正文

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

群晖 acme

最近发现SSL到期了,上去阿里云一看,免费证书有效期才3个月了,本来就1年一次觉得够烦了。干脆弄一下自动部署更新SSL证书吧(以阿里云为例)。

一、阿里云子账号授权

登录阿里云,在RAM访问控制-身份管理-用户-创建用户

创建完成,添加权限

然后点进新创建的用户,创建AccessKey

会得到一个AcessKey和AccessKey Secret,复制出来,一会要用

二、群晖创建acme.sh容器并配置环境

先去共享文件夹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

  1. #!/bin/bash
  2. # 域名
  3. DOMAIN='你的域名'
  4. # # DNS类型,dns_ali dns_dp dns_gd dns_aws dns_linode根据域名服务商而定,CloudFlare就是dns_cf
  5. DNS=dns_ali
  6. # DNS API 生效等待时间 值(单位:秒),一般120即可
  7. # 某些域名服务商的API生效时间较大,需要将这个值加大(比如900)
  8. DNS_SLEEP=120
  9. # 证书服务商,letsencrypt
  10. CERT_SERVER=letsencrypt
  11. generateCrtCommand="acme.sh --force --log --issue --server ${CERT_SERVER} --dns ${DNS} --dnssleep ${DNS_SLEEP} -d "${DOMAIN}" -d "*.${DOMAIN}""
  12. installCrtCommand="acme.sh --deploy -d "${DOMAIN}" -d "*.${DOMAIN}" --deploy-hook synology_dsm"
  13. docker exec acme-sh $generateCrtCommand
  14. 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

然后确定,就完工了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/927102
推荐阅读
相关标签
  

闽ICP备14008679号