acme自动申请ssl,自动续期

2023-05-18 13:53:38 10点赞 79收藏 11评论

由于用的是dynv6域名,一直使用swag申请ssl证书,最近升级swag,申请的证书变成ecc,黑群6.23不支持ecc,只支持rsa旧版(7.0以上支持ecc),所以又认真向度娘请教,结合各方面大神经验,终于实现全自动化更新ssl并续期acme自动申请ssl,自动续期


docker下载neilpang/acme.sh

docker文件夹添加acme目录,映射 /acme.sh

网络选用 Docker Host

环境变量:

DYNV6_TOKEN:dynv6 HTTP Tokens

SYNO_Port : 群晖端口

SYNO_Username : 登录群晖用户名

SYNO_Password : 登录群晖密码

SYNO_Certificate :要添加的证书的名字,空字符串 "" 为替换默认证书

环境变量设置完成后,在命令中输入”daemon“,应用docker


在本地新建文档,复制以下内容,存盘为cert-up.sh

#!/bin/bash

# 域名

DOMAIN='xxx.com'

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

DNS='dns_dynv6'

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

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

DNS_SLEEP=120

# 证书服务商,zerossl 和 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 acme $generateCrtCommand

docker exec acme $installCrtCommand

上传cert-up.sh到黑群,其中红字需要修改为自己的内容【自己的域名,dns供应商,acme的docker名字】

存盘并右键属性查看cert-up.sh的位置,记录备用。

计划任务新添任务,用户root,区间为3个月,用户定义的脚本中输入:

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

log.txt 为运行日志,方便查看

确定后右键运行,如无意外,日志中可以查看过程


但是以上内容只是在黑群7.1.1成功,而且证书是ecc


以下是尝试手动申请ssl

在环境-执行命令里填入“daemon”,以常驻运行.

通过终端命令启动.输入sh确定

acme自动申请ssl,自动续期

选择sh的终端,先执行更新

acme.sh --upgrade --auto-upgrade

输入命令申请泛域名证书

acme.sh --issue --server letsencrypt --keylength 4096 --dns dns_dynv6 -d xxx.com -d *.xxx.com

其中添加 --keylength 4096 命令,申请的证书就是rsa,适用黑群6.23

--server letsencrypt 则是强制使用Let's Encrypt证书

由于新版acme原默认服务提供商从Let's Encrypt变为ZeroSSL,所以首次执行时会失败,原因在于ZeroSSL作为服务提供商,需要在生成证书前,先关联ZeroSSL的注册邮箱

所以要先注册自己的邮箱

acme.sh --register -account -m xxx@xxx.com

然后就可以申请ZeroSSL证书

acme.sh --issue --dns dns_dynv6 -d *.xxx.com

以上内容可按实际需要更改为自己的。

#docker daemon 守护模式 下acme.sh容器会根据申请记录,每60天自动更新证书.


所以只要把cert-up.sh内容中

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

改为

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

其实就是添加 --keylength 4096 命令,使申请的ssl为rsa,适配黑群6.23

最终成功acme自动申请ssl,自动续期


acme自动申请ssl,自动续期



ddns-go 配置 ddns(dynv6)

DNS服务商 选 Callback

URL类似这样:

http://dynv6.com/api/update?hostname=#{domain}&token=(Benutzername)&ipv6=#{ip}

#{domain}为变量, ddns-go会自动输出 Domains配置的域名(不用改)

(Benutzername)改为dynv6秘钥令牌,复制HTTP Tokens即可

#{ip}为变量, ddns-go会自动输出 VPS当前的IP地址.(不用改)

然后在ipv4或ipv6域名处输入自己的域名即可




作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
11评论

  • 精彩
  • 最新
  • dynv6在7系统下用什么软件啊,我用ddns一直不管用。

    校验提示文案

    提交
    用ddns-go啊,最后有写怎么设置,使用中

    校验提示文案

    提交
    大佬,按照你的教程,我设置成功,DDNSGO也成功了,DYNV6也成功了,但是就是输入网址之后,显示“找不到 服务器 IP 地址。”

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 看了不少教程,都是docker安装了acme容器启动之后就可以获取证书,但发现日志里面啥都没有。。。虽然可以去ssh里面申请,但本着越简单越好的想法,看到你说在容器的终端手动执行,于是就试试,然后就可以了。特意过来留言感谢。 [期待]

    校验提示文案

    提交
    互联互通互助 [赞]

    校验提示文案

    提交
    收起所有回复
  • 为了这么点方便把自己nas的用户名密码全部暴露给第三方,而且还带了host,等于对外敞开大门了,连破解都不用,全明码的

    校验提示文案

    提交
    不需要提供NAS用户名密码的吧,证书跟NAS没关系也可以啊,用别人的网络和设备都能申请

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
79
扫一下,分享更方便,购买更轻松