参考(照抄):https://post.smzdm.com/p/a7p69z39/
系统信息:
- TS-1655
- QuTS hero h5.2.4.3079 Build 20250321
- Container Station v3.0.9.1038
一、Container Station中安装neilpang/acme.sh:latest
1、容器->创建->命名为acme.sh->高级->
docker.m.daocloud.io/neilpang/acme.sh:latest
2、下一步->高级设置->命令->覆盖->
daemon
3、环境变量->按照acme.sh文档填写对应的dns服务商id和key(本人尝试此处无效,不知道为什么,后面通过其他方法解决key错误问题)
4、存储:将一个本地目录(不能是卷,这个目录作为acme.sh的工作目录)映射到容器/acme.sh
二、自动化申请证书并部署
1、创建自动化脚本
使用这个脚本,按需更改参数,将这个脚本放在acme.sh的工作目录下,命名为update_cert_docker.sh
#!/bin/bash
DATE_TIME=$(date +%Y%m%d%H%M)
# 域名,改为自己的域名
DOMAIN='example.com'
# # DNS类型,dns_ali dns_dp dns_gd dns_aws dns_linode根据域名服务商而定,我使用阿里,与docker上的保持一致
DNS='dns_dp'
# DNS API 生效等待时间 值(单位:秒),一般120即可
# 某些域名服务商的API生效时间较大,需要将这个值加大(比如900)
DNS_SLEEP=120
# 证书服务商,zerossl 和 letsencrypt,我使用letsencrypt,使用zerossl还需要注册
CERT_SERVER='letsencrypt'
#自定义的acme获取到的证书的位置--与docker映射的文件夹相同,需要全路径,一般是前面加/share
CERT_FILE=/share/Container/acme.sh
echo 'get cert to docker'
#执行docker获取证书文件
docker exec acme.sh acme.sh --log --issue --server ${CERT_SERVER} --dns ${DNS} --dnssleep ${DNS_SLEEP} \
-d "${DOMAIN}" -d "*.${DOMAIN}" --log /acme.sh/acme_get.log
echo 'get cert to docker success'
echo 'install cert to docker'
#安装证书到docker内部,方便后面拷贝
docker exec acme.sh acme.sh --log --install-cert -d ${DOMAIN} \
--cert-file /acme.sh/backup.cert \
--key-file /acme.sh/backup.key \
--log /acme.sh/acme_install.log
echo 'install cert to docker success'
echo 'copy cert'
# 将证书文件拷贝到/etc/stunnel目录下,需要admin权限
cp ${CERT_FILE}/backup.cert /etc/stunnel/backup.cert
cp ${CERT_FILE}/backup.key /etc/stunnel/backup.key
echo 'copy cert success'
echo 'restart service'
# 将证书文件拼接放入 /etc/stunnel/stunnel.pem 并重启服务,需要admin权限
cat /etc/stunnel/backup.cert /etc/stunnel/backup.key >/etc/stunnel/stunnel.pem
/etc/init.d/stunnel.sh restart
/etc/init.d/Qthttpd.sh restart
echo 'restart service success'
2、执行脚本
控制台->网络和文件服务->telnet/ssh->勾选允许ssh链接
控制台->权限->用户->编辑admin账户资料->取消勾选停用此账户(无需担心,最后会停用账户)
通过ssh登录admin,在acme.sh工作目录下执行
chmod 755 update_cert_docker.sh ./update_cert_docker.sh
如果中途出现类似You don't specify dnspod api key and key id yet的输出,退出脚本,可以在acme.sh工作目录下找到account.conf文件,编辑这个文件,写入id和key配置(无需export)
再次执行
./update_cert_docker.sh
控制台->系统->安全->ssl和私钥
查看核发单位,如果部署不正确,尝试先颁发一个自签证书,再次申请。
控制台->系统->常规设置->系统管理
启用https,访问https地址检查是否正常。
最后,请务必禁用admin账户并关闭ssh连接许可