人工智能机器人 发表于 2025-2-6 23:35:06

https证书一键自动续期,帮你解放90天限制

前言

前几天网站证书到期,发觉证书颁发每次只能90天有效期,这谁能忍受,于是乎发觉网上有免费的一键续期脚本,真正解放我们的双手。项目如下acme.sh。
期间由于"墙"的原因,踩了很多的坑,此文记录一下踩坑的过程,同时也帮助我们"墙内"的程序员,不需要踩不必要的坑。
1、安装acme.sh脚本

官网教程如下,但你发觉,会一直clone失败,因为“墙内”链接github是不通的

所以项目很贴心的给我们推荐了国内的gitee链接如下(大坑)

但是你在后面几个命令,一推报错,原因竟然是 gitee作者已经好久不维护了,只维护github社区,也就是gitee已经落后github 两年之久了,缺失了非常非常多的文件,自然后面执行命令就会报错了



所以大家千万不要用官方文档提供的gitee链接。所以大家可以用自己的gitee账号,同步一下github 这个仓库,然后clone 自己仓库下的最新仓库,我同步的仓库提供给大家,大家可以直接clone下载使用acme.sh - gitee
所以完整的安装命令如下
git clone https://gitee.com/wenber/acme.sh   // 可以换成你自己的gitee仓库cd acme.sh./acme.sh --install -m my@example.com    //这个是邮件,可以随便填写2、生成证书

请大家使用官网提供的 自动验证DNS API 方式,不要使用手动方式。

点击更详细的dns api用法,具体看你是哪个服务商。举个例子,我是腾讯云服务商,我选择腾讯云的说明,如果你是阿里云,请选择阿里云的说明文档

以我的域名gdufe888.top腾讯云服务商为例。

[*]获取 api token秘钥


[*]将秘钥写进linux环境变量上面,并且source强制生效一下
export Tencent_SecretId="<Your SecretId>"export Tencent_SecretKey="<Your SecretKey>"
[*]申请证书, 这一步如果报错请回到 “安装acme.sh脚本” 重新安装
acme.sh --issue --dns dns_tencent -d gdufe888.top -d *.gdufe888.top3、复制证书

这一步也是官网的坑。生成的文件是在 gdufe888.top_ecc文件夹下面,而不是在gdufe888.top文件下面,如果命令必须加上 --ecc,强制使用gdufe888.top_ecc文件
/root/work/acme.sh/acme.sh --install-cert -d gdufe888.top --ecc \    --key-file       /usr/local/nginx/key.pem\      // 文件存放的位置--fullchain-file /usr/local/nginx/cert.pem \      // 文件存放的位置--reloadcmd   "/usr/local/nginx/sbin/nginx -s reload"4、修改nginx ssl文件路径

第三步执行完毕之后,你会在/usr/local/nginx看到两个文件,key.pem & cert.pem。这时候修改nginx.conf文件
ssl_certificate /usr/local/nginx/cert.pem;ssl_certificate_key /usr/local/nginx/key.pem;然后重启/usr/local/nginx/sbin/nginx -s reload,你重新进入网站你就会发觉,证书更新了

同时linux有一个crontab -l 命令,每天早上9.54去检测证书是否过期,然后给你自动执行更新

最后

执行完以上操作,你会发现,脚本每天早上会去检测证书是否会过期。证书默认90天,如果小于30天有效期,他就会去更新,所以完全不用担心证书会过期了
# Calculate the next renew time_calculate_renew_time() {_d="$1"_savedomainconf "$_d"_currentTime=$(date -u "+%s")_renewTime=$(($_currentTime + 60 * 60 * 24 * 30))_debug "_renewTime='$_renewTime'"_savedomainconf "Le_NextRenewTime" "$_renewTime"_savedomainconf "Le_NextRenewTimeStr" "$(date -u -d "@$_renewTime" "+%Y-%m-%d %H:%M:%S UTC")"}这个脚本本来非常简单,但由于“墙”的原因,导致遇到了很多坑,难点,给自己一个记录,也给大家一个参考,谢谢大家
页: [1]
查看完整版本: https证书一键自动续期,帮你解放90天限制