收起左侧

飞牛os证书自动更新替换

17
回复
2577
查看
[ 复制链接 ]

0

主题

16

回帖

0

牛值

江湖小虾

2024-12-26 15:54:05 显示全部楼层 阅读模式

<br /> <br />

通过acme获取证书的常见问题

通过acme获取证书的方法有很多教程,都可以轻松找到。问题通常出现在证书的替换过程中,主要有三个问题需要注意:

1. 证书文件的位置

飞牛OS的证书文件位置需要先上传你自己的证书

飞牛os——系统设置——安全性——证书——上传你自己的证书

然后执行以下命令即可查看证书位置:

cat /usr/trim/etc/network_cert_all.conf

2. 证书文件的权限问题

替换证书后,需要给证书文件设置 755 权限

chmod 755 "$CERT_CRT"
chmod 755 "$CERT_KEY"

3. 数据库中的过期时间问题

证书的数据库过期时间也需要修改。具体方法就是获取新证书的过期时间,在数据库中更新该信息,最后重启服务。

psql -U postgres -d trim_connect -c "UPDATE cert SET valid_to=$NEW_EXPIRY_TIMESTAMP WHERE domain='$CERT_NAME'"

我编写了一个脚本,上传到GitHub。我个人测试是正常的没有问题:

GitHub 链接:fno证书更新脚本

收藏
送赞 4
分享

0

主题

5

回帖

0

牛值

江湖小虾

2024-12-31 21:35:08 显示全部楼层
收藏一下  支持支持支持  回头有空折腾一下
我现在用lucky 生成证书

4

主题

68

回帖

0

牛值

fnOS系统内测组

2025-1-7 13:50:16 显示全部楼层
收藏一下,下次换证书的时候就可以用了

3

主题

18

回帖

0

牛值

江湖小虾

2025-1-10 22:20:51 显示全部楼层
太赞了,谢谢大佬。

0

主题

3

回帖

0

牛值

江湖小虾

2025-1-15 00:00:53 显示全部楼层
用lucky生成的证书,用这个脚本可以跳过申请直接替换吗?
我更新了一个新的脚本,lucky生成新证书之后自动替换fnos的证书 https://club.fnnas.com/forum.php?mod=viewthread&tid=12158&page=1&extra=#pid59164  详情 回复
2025-1-20 13:47
得改一下,把前面申请的逻辑删掉,然后只保留替换和更改数据库的就行,我抽空搞一个新的脚本发出来吧  详情 回复
2025-1-19 20:52

0

主题

16

回帖

0

牛值

江湖小虾

2025-1-19 20:52:31 楼主 显示全部楼层
得改一下,把前面申请的逻辑删掉,然后只保留替换和更改数据库的就行,我抽空搞一个新的脚本发出来吧
数据库怎么更新证书的时间呢,前面证书获取我直接用1plane计划任务自动完成申请和证书推送赋权这个环节很丝滑,就缺一条 推送完成后执行数据库更新的命令  详情 回复
2025-2-14 01:31

5

主题

26

回帖

0

牛值

fnOS系统内测组

2025-1-20 09:16:19 显示全部楼层
期待出个腾讯云的
改一下腾讯云配置就行了,我加个适配,再加个lucky的直接访问教程  详情 回复
2025-1-20 09:21

0

主题

16

回帖

0

牛值

江湖小虾

2025-1-20 09:21:52 楼主 显示全部楼层
改一下腾讯云配置就行了,我加个适配,再加个lucky的直接访问教程

0

主题

16

回帖

0

牛值

江湖小虾

2025-1-20 13:47:05 楼主 显示全部楼层
我更新了一个新的脚本,lucky生成新证书之后自动替换fnos的证书

https://club.fnnas.com/forum.php ... amp;extra=#pid59164
太感谢了!  详情 回复
2025-1-23 16:00

0

主题

3

回帖

0

牛值

江湖小虾

2025-1-23 16:00:13 显示全部楼层
lfgyx 发表于 2025-1-20 13:47
我更新了一个新的脚本,lucky生成新证书之后自动替换fnos的证书

https://club.fnnas.com/forum.php?mod=vi ...

太感谢了!

6

主题

15

回帖

0

牛值

江湖小虾

2025-2-14 01:23:47 显示全部楼层
psql -U postgres -d trim_connect -c "UPDATE cert SET valid_to=$NEW_EXPIRY_TIMESTAMP WHERE domain='$CERT_NAME'"
这里是获取并更新飞牛替换后证书的有效期时间吗?更新后飞牛后台的证书有效期能同步吗? 刚执行了下语句报错呢
ERROR:  syntax error at or near "WHERE"
LINE 1: UPDATE cert SET valid_to= WHERE domain=''
这是在飞**ash里执行吗
CERT_PATH=/usr/trim/var/trim_connect/ssls/xxx.com/1730225231/ #这个路径也得去找你证书所在的路径 CERT_NAME=xxx.com #你自己的域名 NEW_EXPIRY_DATE=$(openssl x509 -enddate -noout -in "$CERT_PATH/$CERT_NA  详情 回复
2025-2-16 00:48
[md]你得先获取新证书的有效时间 NEW_EXPIRY_TIMESTAMP 与 CERT_NAME 这两个字段是变量 NEW_EXPIRY_TIMESTAMP:时间戳格式的证书到期时间,可以通过openssl获取 CERT_NAME:证书名称,上传飞牛证书时候的名称 ``  详情 回复
2025-2-14 10:41

6

主题

15

回帖

0

牛值

江湖小虾

2025-2-14 01:31:15 显示全部楼层
数据库怎么更新证书的时间呢,前面证书获取我直接用1plane计划任务自动完成申请和证书推送赋权这个环节很丝滑,就缺一条 推送完成后执行数据库更新的命令
你可以去github拉我的脚本看,每一步的注释写的很详细  详情 回复
2025-2-14 10:42

0

主题

16

回帖

0

牛值

江湖小虾

2025-2-14 10:41:56 楼主 显示全部楼层

你得先获取新证书的有效时间 NEW_EXPIRY_TIMESTAMP 与 CERT_NAME 这两个字段是变量 NEW_EXPIRY_TIMESTAMP:时间戳格式的证书到期时间,可以通过openssl获取 CERT_NAME:证书名称,上传飞牛证书时候的名称

# 获取新证书的到期日期并更新数据库中的证书有效期
NEW_EXPIRY_DATE=$(openssl x509 -enddate -noout -in "$CERT_PATH/$CERT_NAME.crt" | sed "s/^.*=\(.*\)$/\1/")
NEW_EXPIRY_TIMESTAMP=$(date -d "$NEW_EXPIRY_DATE" +%s%3N)  # 获取毫秒级时间戳
echo "新证书的有效期到: $NEW_EXPIRY_DATE"

# 更新数据库中的证书有效期
echo "更新数据库中的证书有效期..."
psql -U postgres -d trim_connect -c "UPDATE cert SET valid_to=$NEW_EXPIRY_TIMESTAMP WHERE domain='$CERT_NAME'"

其实你可以查一下数据库,看一下数据库结构,大概就能明白了

sudo psql -U postgres -d trim_connect -c "select * from cert"

cert表中有你上传的证书信息,valid_to就是到期时间,domain就是你的证书名称, update就是更新数据,更新证书等于你域名的那条数据,更改valid_to为你新证书的到期时间

得先安装OpenSSL 才能获取到证书时间  详情 回复
2025-2-16 00:36

0

主题

16

回帖

0

牛值

江湖小虾

2025-2-14 10:42:56 楼主 显示全部楼层
你可以去github拉我的脚本看,每一步的注释写的很详细
看懂了,非常感谢,写的非常不错,已成功更新。很不好意思做了个伸手党~哈哈  详情 回复
2025-2-16 00:34

6

主题

15

回帖

0

牛值

江湖小虾

2025-2-16 00:34:34 显示全部楼层
看懂了,非常感谢,写的非常不错,已成功更新。很不好意思做了个伸手党~哈哈

6

主题

15

回帖

0

牛值

江湖小虾

2025-2-16 00:36:18 显示全部楼层
得先安装OpenSSL 才能获取到证书时间

6

主题

15

回帖

0

牛值

江湖小虾

2025-2-16 00:48:19 显示全部楼层
CERT_PATH=/usr/trim/var/trim_connect/ssls/xxx.com/1730225231/  #这个路径也得去找你证书所在的路径
CERT_NAME=xxx.com #你自己的域名
NEW_EXPIRY_DATE=$(openssl x509 -enddate -noout -in "$CERT_PATH/$CERT_NAME.crt" | sed "s/^.*=\(.*\)$/\1/")
NEW_EXPIRY_TIMESTAMP=$(date -d "$NEW_EXPIRY_DATE" +%s%3N)  # 获取毫秒级时间戳
echo "新证书的有效期到: $NEW_EXPIRY_DATE"

# 更新数据库中的证书有效期
echo "更新数据库中的证书有效期..."
psql -U postgres -d trim_connect -c "UPDATE cert SET valid_to=$NEW_EXPIRY_TIMESTAMP WHERE domain='$CERT_NAME'"

0

主题

6

回帖

0

牛值

江湖小虾

2025-3-17 10:58:55 显示全部楼层
感谢大大
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则