侧边栏壁纸
  • 累计撰写 57 篇文章
  • 累计创建 37 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

抛弃httpsok,使用acme获取并自动续签SSL证书,全自动化

nankle
2025-04-10 / 0 评论 / 0 点赞 / 6 阅读 / 3977 字
温馨提示:
本文最后更新于 2025-04-10,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

本文以本人使用的角度写出该文章,某些环境和命令适用于特定的场景,不保证广泛使用,仅供参考

安装

curl https://get.acme.sh | sh -s email=lxddemm@163.com

其他安装方式:

wget -O - https://get.acme.sh | sh -s email=my@example.com

或者git安装:

git clone --depth 1 https://github.com/acmesh-official/acme.sh.gitcd acme.sh./acme.sh --install -m my@example.com

植入系统命令

alias acme.sh='/root/.acme.sh/acme.sh'

这样可以直接使用acme.sh命令运行

获取证书

acme.sh --issue --dns dns_ali -d nankle.top -d *.nankle.top

本次使用的是dns方式申请证书,还有其他方式,本文不做介绍

dns方式需要在域名的dns解析中新增一条记录来验证,--dns 后面的参数是dns_ali代表阿里云,其他也可以使用。

修改阿里云key用于自动更新dns

nano /root/.acme.sh/acme.sh.env

将阿里云的密钥放入文件内,格式为:

export LE_WORKING_DIR="/root/.acme.sh"

alias acme.sh="/root/.acme.sh/acme.sh"

export Ali_Key="*****"

export Ali_Secret="*******"

重载环境变量

source ~/.bashrc

安装并重载

前提是上一步证书申请成功,接下来将申请成功的证书转移到nginx的证书目录,并重载nginx

acme.sh --install-cert -d nankle.top --key-file /opt/helo/nginx/cert/nankle.top.key --fullchain-file /opt/helo/nginx/cert/nankle.top.pem --reloadcmd "docker exec nginx nginx -s reload"

执行该命令后,命令中的参数将自动保存在~/.acme.sh/example.com目录下的example.com.conf文件里,定时器更新证书的时候实现自动部署。

上述命令把下发的证书复制到你指定的位置,这样避免你直接从“~/.acme.sh/”读取证书,然后重新加载nginx或apache以刷新证书。

域名为必需参数,其它参数为可选。

但要注意的是,reloadcmd参数非常重要(reloadcmd后面的参数为重新加载nginx或Apache的命令,可以根据系统的不同作相应修改),即使更新了证书,但是nginx或apache没有重新加载,证书是不是会刷新到服务中去的

由于本人的nginx是安装在docker内的,因此使用下面命令进行重载(已经包含在上面的命令中)

nginx重载

docker exec nginx nginx -s reload

续签SSL证书

执行过上面的命令后,acme已经知道如何转移证书文件以及如何重载nginx,后面执行续签命令,程序可自动续期并重载nginx

手动续签方式

acme.sh --renew -d nankle.top -d *.nankle.top

如果已经快到期,离到期2个月,该命令会重新申请新的证书,时间不到只会打印日志。

强制更新

无论是否到期都会强制重新申请新的证书

acme.sh --renew -d nankle.top -d *.nankle.top --force

定时任务配置

45 10 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

将上面的代码放入crontab中实现自动检测自动续签。crontab -e 命令编辑定时任务

其他命令

升级acme.sh:

acme.sh --upgrade

自动升级,使用以下命令,有更新就自动更新,不需人工干预:

acme.sh --upgrade --auto-upgrade

关闭自动升级使用以下命令:

acme.sh --upgrade --auto-upgrade 0

查看acme.sh已签发证书的域名:

acme.sh --list

从acme.sh中移除不需要再次签发证书的域名:

acme.sh --remove -d example.com

删除acme.sh:

acme.sh --uninstall

切换CA服务商:

acme.sh --set-default-ca --server letsencrypt

acme.sh --set-default-ca --server google

acme.sh --set-default-ca --server zerossl

0

评论区