安装Docker容器

在Docker注册表里搜索neilpang/acme.sh 新建容器,容器名为acme,在共享目录创建acme文件夹,在存储空间中映射docker/acme文件夹到/acme.sh

执行命令输入”daemon”(选择常驻,如果不写的话,容器一般执行完一次之后就会停止了)

添加环境变量

1
2
3
4
5
6
7
8
9
10
Ali_Key            #阿里云的key
Ali_Secret #阿里secret
SYNO_Username #群晖登录用户名
SYNO_Password #群晖后台登录密码
SYNO_Certificate #群晖证书名 填写需要替换的证书名 如果是默认群晖证书填"" 或synology,自定义用想要的名字
SYNO_Create #域名证书创建,填要创建证书的域名
SYNO_Port #群晖后台登录端口号
SYNO_HOSTNAME #群辉 NAS 的域名或 IP 地址不带端口
SYNO_PORT #群辉管理界面的端口,默认情况下是 `5000`(HTTP)或 `5001`(HTTPS)。
SYNO_SCHEME #群辉使用的协议,通常是 `http` 或 `https`。

其余内容可保持默认

创建脚本

新建可执行脚本并保存为”AutoCert.sh”,存放到创建的acme文件夹里。内容如下
无证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash

# 域名
DOMAIN='*.example.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}""

installCrtCommand="acme.sh --deploy -d "${DOMAIN}" --deploy-hook synology_dsm"

docker exec acme $generateCrtCommand

docker exec acme $installCrtCommand

已有证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash



# 域名

DOMAIN='*.example.com'



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

DNS='dns_ali'



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

DNS_SLEEP=120



# 证书服务商,letsencrypt

CERT_SERVER='letsencrypt'



# 检查现有证书是否存在且未过期

if docker exec acme acme.sh --list | grep -q "$DOMAIN"; then

echo "Certificate for $DOMAIN already exists and is valid."

else

echo "No valid certificate found. Requesting a new certificate."

generateCrtCommand="acme.sh --log --issue --server ${CERT_SERVER} --dns ${DNS} --dnssleep ${DNS_SLEEP} -d "${DOMAIN}""

docker exec acme $generateCrtCommand

fi



# 部署证书

installCrtCommand="acme.sh --deploy -d "${DOMAIN}" --deploy-hook synology_dsm"

docker exec acme $installCrtCommand

设置计划




自定义脚本为

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