Lufer

  • 首页
  • 编程
  • 学习笔记
  • 日常折腾
Lufer
Code the World
  1. 首页
  2. 日常折腾
  3. 正文

群晖使用acme.sh申请通配符证书(CloudFLare解析)

2022年7月1日 86点热度 1人点赞 0条评论

因为域名在阿里云买的,之前一直在阿里云购买单域名的证书,但是随着需要挂锁的网站越来越多,还是的弄个通配符证书,借助Acme.sh,实现了自动申请部署通配符证书,不用单个申请,也不用担心证书过期了。

本文介绍了在群晖下如何借助acme.sh脚本来自动申请并部署通配符证书,本域名使用CloudFlare进行解析。

获取CloudFlare的API令牌

登录CloudFlare之后,可以通过这个链接访问令牌页面:https://dash.cloudflare.com/profile/api-tokens

点击创建令牌,使用编辑区域DNS模板,在区域资源中选择包括-特定区域-你的域名。

随后设定一个令牌的有效期,点击继续即可生成令牌。

将令牌保存下来以备后用,因为CloudFlare是不保存令牌的,关掉页面就看不见了。

Docker配置

在注册表搜索安装neilpang/acme.sh这个映像,随后安装。

创建一个文件夹用于存放文件,例如我创建在docker/acme,将此文件夹映射到/acme.sh。

网络选项卡选择使用与Docker Host相同的网络。

环境变量添加如下内容:

变量名变量值
CF_TOKEN第一步获取的API令牌
SYNO_Port群晖的内网端口号,默认为5000
SYNO_Username登录群晖的用户名
SYNO_Password登录密码
SYNO_Certificate要添加的证书的名字,空字符串("")为替换默认证书

这里要借助群辉的端口,用户名,密码,才能自动登录到系统中部署证书。

环境变量设置完成后,在最下方命令处输入”daemon“,随后完成Docker设置并启动Docker。

脚本配置

Docker设置好后并不会申请证书,要配合脚本使用来触发,并且可以通过将脚本放入任务计划来自动更新证书。

本地新建一个.sh脚本文件,填写如下内容:

#!/bin/bash

# 域名

DOMAIN='lufer.cc'

# # DNS类型,dns_ali dns_dp dns_gd dns_aws dns_linode根据域名服务商而定,CloudFlare就是dns_cf

DNS='dns_cf'

# DNS API 生效等待时间 值(单位:秒),一般120即可

# 某些域名服务商的API生效时间较大,需要将这个值加大(比如900)

DNS_SLEEP=120

# 证书服务商,zerossl 和 letsencrypt,我使用letsencrypt,使用zerossl还需要注册

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 neilpang-acme.sh1 $generateCrtCommand

docker exec neilpang-acme.sh1 $installCrtCommand

此处注意最后两行,我的Docker创建的容器实例名字就叫做 neilpang-acme.sh1 ,在编写脚本时注意改为实际docker实例名字。

自动运行

为了实现自动更新证书,我们把脚本上传至群晖内某个特定文件夹,并右键查看文件属性,得到文件的实际存储位置,例如我放在了/volume1/docker/cert-docker.sh。

打开控制面板-任务计划,新增一个计划的任务-用户定义的脚本。

在计划选项卡下设置为在以下日期运行-每月重复,这样就可以每月自动更新一次证书。

在任务设置选项卡下的运行命令中,输入如下脚本:

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

其中前面为脚本所在路径,后面为希望存放日志文件的路径。

保存即可。

运行

创建计划任务之后,可以手动运行一次,随后在先前设定的目录下查看日志文件,看见如下内容,即是部署成功。

[Fri Jul  1 03:02:21 UTC 2022] Logging into localhost:5000
[Fri Jul  1 03:02:22 UTC 2022] Getting certificates in Synology DSM
[Fri Jul  1 03:02:22 UTC 2022] Generate form POST request
[Fri Jul  1 03:02:22 UTC 2022] Upload certificate to the Synology DSM
[Fri Jul  1 03:02:22 UTC 2022] http services were NOT restarted
[Fri Jul  1 03:02:22 UTC 2022] Success

打开控制面板,就可以在证书中看见刚刚部署好的证书了。

标签: 暂无
最后更新:2022年7月7日

Lufer

新的一天开始啦

点赞
< 上一篇
下一篇 >

文章评论

取消回复

文章目录
  • 获取CloudFlare的API令牌
  • Docker配置
  • 脚本配置
  • 自动运行
  • 运行

COPYRIGHT © 2022 lufer.cc.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021045819号