参考(照抄):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连接许可