收起左侧

fnOS配置SSL证书及简单实现自动续签

35
回复
6837
查看
  [ 复制链接 ]

2

主题

5

回帖

0

牛值

fnOS系统内测组

2025-2-22 16:03:15 显示全部楼层 阅读模式

fnOS配置SSL证书及简单实现自动续签

前言

本文将实现fnOS配置SSL证书实现https访问并且使用1Panel实现证书自动续签功能

fnOS新建文件夹用以证书存储

点击【文件管理】在你喜欢的磁盘中创建一个文件夹用以存储证书,比如我创建【certs】文件夹在【存储空间2】中

到这一步就先ok了,后面会用到这个文件夹,为了你可以直接看到你的证书

安装1Panel

安装1Panel实现证书申请以及自动续签

安装

应用中心中选择【1Panel】,点击安装

等待下载完成,根据需求配置

这里注意要记住你设置的安全入口名以及用户名/密码,比如我入口设置的是【safe】

点击确定即可

1Panel配置

登录

安装完成后,点击打开Panel

因为开启了安全入口,所以无法访问

在浏览器地址后面添加上安全入口路径即可,比如我的是 http://192.168.2.3:18090/safe

输入用户名密码登录

检查权限

在1Panel中,选择【主机】-【终端】

第一次连接需要手动配置,主机地址就默认就好,输入你fnOS的用户名以及密码,记得是fnOS的,不是1Panel的

点击右下角【连接测试】,然后通过后点击【保存并连接】

可以看到登录成功

回到fnOS中,右键第一步创建的certs文件夹,选择【详细信息】

点击【复制原始路径】

回到1Panel的终端,输入cd+空格+你复制的路径,如下所示

cd /vol2/1000/certs

尝试创建一个文件检查是否可以创建成功

touch 12

没问题,ok了~

SSL证书申请

选择【网站】-【证书】

添加Acme账户

点击【Acme账户】

创建

邮箱填一个,确认即可

添加DNS账户

点击【DNS账户】

创建,选择你的域名服务商,并且填入你的id和key,我这边以阿里云的为例,至于怎么获取这个id和key麻烦大家百度下

申请证书

点击【申请证书】

输入你要申请的证书域名

勾选【推送证书到本地目录】,并且选择刚刚创建的certs文件夹

勾选【申请证书之后执行脚本】,输入下面的脚本,注意这里要把 xxx.com.crtxxx.com.key中的【xxx.com】换成你自己的域名

#!/bin/bash
mv fullchain.pem xxx.com.crt
mv privkey.pem xxx.com.key

目的就是把生成的证书重命名下

点击确定,等待申请

关闭窗口,刷新下,如果显示正常,就是成功了

回到fnOS中,可以看到证书已经生成了

SSL证书配置

下载刚刚生成的两个证书

在【系统设置】-【安全性】-【证书】中选择【新增证书】

输入描述并且上传刚刚下载的证书文件

可以看到添加成功并且证书有效

访问测试,可以看到ssl生效。

ps: 因为我关闭了80、443强制跳转以及强制https所以需要完整的地址访问,也就是要包含 https://头和 端口号

自动续签SSL并更新证书

回到1Panel,之前在配置证书申请的时候已经勾选了自动续签,所以不用特殊操作续签动作

修改SSL证书申请脚本

依然是在1Panel的终端,输入

cat /usr/trim/etc/network_cert_all.conf

可以看到证书路径

我们复制到crt文件的前一级目录,比如

/usr/trim/var/trim_connect/ssls/xxx.com/1740193347

点击【网站】-【证书】选择你的证书选择【编辑】

将【申请证书之后执行脚本】修改为如下配置,并且将其中的配置项配置完整

注意要配置【CERT_NAME】【PANEL_CERT_PATH】【FNOS_CERT_PATH】字段

完整文件如下

#!/bin/bash

#配置
CERT_NAME="xxx.com"
PANEL_CERT_PATH="/vol2/1000/certs"
FNOS_CERT_PATH="/usr/trim/var/trim_connect/ssls/xxx.com/1740193347"

# 重命名
mv "$PANEL_CERT_PATH/fullchain.pem" "$PANEL_CERT_PATH/$CERT_NAME.crt"
mv "$PANEL_CERT_PATH/privkey.pem" "$PANEL_CERT_PATH/$CERT_NAME.key"

# 将新证书文件复制到旧证书文件的路径
cp "$PANEL_CERT_PATH/$CERT_NAME.*" "$FNOS_CERT_PATH/" -av

# 设置新证书文件权限为 755
chmod 0755 "$FNOS_CERT_PATH/*"

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

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

# 重启服务
systemctl restart webdav.service
systemctl restart smbftpd.service
systemctl restart trim_nginx.service

至此就ok了~

结语

理论可行,作者也是刚配置完,具体还是要看下自动更新能否生效。权限什么的都检查不会有问题才对。如果有谬误还请大佬指出,不胜感激!

收藏
送赞 9
分享
1

查看全部评分

1

主题

1

回帖

0

牛值

江湖小虾

2025-3-4 11:03:20 显示全部楼层
禁用cname并跳过DNs校验

1

主题

414

回帖

0

牛值

fnOS系统内测组

社区共建团荣誉勋章飞牛百度网盘玩家

2025-2-26 21:25:28 显示全部楼层
我将你重命名复制到指定目录的步骤简化成软连接了。
1

查看全部评分

冬眠~Connection refused.

0

主题

5

回帖

0

牛值

江湖小虾

2025-2-22 23:48:30 显示全部楼层
申请不了证书,状态老是失败
禁用cname并跳过DNs校验  详情 回复
2025-3-4 11:03
可以了,貌似是夜里不能申请证书,妥妥的,感谢老哥  详情 回复
2025-2-23 19:13

2

主题

64

回帖

0

牛值

初出茅庐

2025-2-23 13:59:57 显示全部楼层
好,说的非常详细

0

主题

5

回帖

0

牛值

江湖小虾

2025-2-23 19:13:35 显示全部楼层
可以了,貌似是夜里不能申请证书,妥妥的,感谢老哥
哈哈哈~好的好的~  详情 回复
2025-2-24 16:44

3

主题

99

回帖

0

牛值

初出茅庐

2025-2-23 21:15:17 显示全部楼层
也可以用lucky来实现,只要设置一下反向代理就很好用。
我是用lucky测试了下,感觉有点麻烦~才想着说用1panel的哈哈~  详情 回复
2025-2-24 16:45

3

主题

38

回帖

0

牛值

江湖小虾

2025-2-24 09:25:10 显示全部楼层
收藏收藏,好贴!

2

主题

5

回帖

0

牛值

fnOS系统内测组

2025-2-24 16:44:39 楼主 显示全部楼层
谢佳润 发表于 2025-2-23 19:13
可以了,貌似是夜里不能申请证书,妥妥的,感谢老哥

哈哈哈~好的好的~

2

主题

5

回帖

0

牛值

fnOS系统内测组

2025-2-24 16:45:22 楼主 显示全部楼层
我是用lucky测试了下,感觉有点麻烦~才想着说用1panel的哈哈~
除去lucky的初始化操作(也就账号密码和安全入口),设置一下证书(选择运营商、填写账号密码、域名后,等申请完成,以后就自动续签),最后设置反代(添加web服务规则,选上IPv4,设置端口[路由也需要做相同的端口  详情 回复
2025-2-25 23:11

3

主题

99

回帖

0

牛值

初出茅庐

2025-2-25 23:11:28 显示全部楼层
summer 发表于 2025-2-24 16:45
我是用lucky测试了下,感觉有点麻烦~才想着说用1panel的哈哈~

除去lucky的初始化操作(也就账号密码和安全入口),设置一下证书(选择运营商、填写账号密码、域名后,等申请完成,以后就自动续签),最后设置反代(添加web服务规则,选上IPv4,设置端口[路由也需要做相同的端口映射],启用TLS,添加子规则,设置前端域名,设置后端地址,有多个就继续添加子规则)。

8

主题

20

回帖

0

牛值

江湖小虾

2025-2-26 15:20:03 显示全部楼层
大哥**,解决该死的腾讯云只有90天有效期到问题了

2

主题

13

回帖

0

牛值

江湖小虾

2025-3-3 17:21:51 显示全部楼层
写的很详细,谢谢楼主了,解决了一个大问题,不然过一段时间就得来一次。

7

主题

36

回帖

0

牛值

初出茅庐

2025-3-4 10:18:12 显示全部楼层
大佬,这失败是什么问题呢?用的是腾讯云
[INFO] Deactivating auth: https://acme-v02.api.letsencrypt.org/acme/authz/XXXXXXXXXXXXXXXX
申请  [XXXXXX] 证书失败, error: one or more domains had a problem:
[XXXXX] propagation: time limit exceeded: last error: [zone=XXXXX] could not determine authoritative nameservers
谢谢,搞定了,要自定义dns  详情 回复
2025-3-4 10:44

7

主题

36

回帖

0

牛值

初出茅庐

2025-3-4 10:44:21 显示全部楼层
谢谢,搞定了,要自定义dns

3

主题

9

回帖

0

牛值

fnOS系统内测组

2025-3-5 20:58:13 显示全部楼层
025/03/05 20:52:35 证书推送到目录 [/vol1/1000/cert] 成功
2025/03/05 20:52:35 开始执行脚本
cp: cannot stat '/vol1/1000/cert/visin.top.*': No such file or directory
chmod: cannot access '/usr/trim/var/trim_connect/ssls/visin.top/1741073644/*': No such file or directory
UPDATE 1
2025/03/05 20:52:38 脚本执行成功

完整脚本好像是不行 重命名没问题,复制到飞牛证书目录好像是不行了
正常,没有权限,解决办法就是使用软链接,就是相当脚本要手动执行一次创建软链接,之后就自动更新了  详情 回复
2025-3-6 17:23

0

主题

2

回帖

0

牛值

江湖小虾

2025-3-6 17:23:12 显示全部楼层
正常,没有权限,解决办法就是使用软链接,就是相当脚本要手动执行一次创建软链接,之后就自动更新了
确实无法复制到飞牛证书目录,现在我修改为直接推送到飞牛证书目录,删除原来的证书,再重命名证书  详情 回复
2025-3-7 13:37

5

主题

7

回帖

0

牛值

fnOS系统内测组

2025-3-7 13:37:34 显示全部楼层
本帖最后由 luchun0112 于 2025-3-7 13:43 编辑

确实无法复制到飞牛证书目录,现在我修改为直接推送到飞牛证书目录,再重命名证书
不行吧,应该还是会报无权限把  详情 回复
2025-3-7 17:03

0

主题

2

回帖

0

牛值

江湖小虾

2025-3-7 17:03:17 显示全部楼层
不行吧,应该还是会报无权限把

2

主题

4

回帖

0

牛值

江湖小虾

社区上线纪念勋章

2025-3-8 12:36:42 显示全部楼层
我重写了一下,不会报权限问题了

#!/bin/bash
set -e  # 任何命令失败立即终止脚本

# 配置参数
CERT_NAME="你的域名"
PANEL_CERT_PATH="你的证书地址"
FNOS_CERT_PATH="/usr/trim/var/trim_connect/ssls/你的域名/你的编码"

# 1. 重命名证书文件(增加文件存在性检查)
if [[ -f "$PANEL_CERT_PATH/fullchain.pem" && -f "$PANEL_CERT_PATH/privkey.pem" ]]; then
  mv "$PANEL_CERT_PATH/fullchain.pem" "$PANEL_CERT_PATH/$CERT_NAME.crt"
  mv "$PANEL_CERT_PATH/privkey.pem" "$PANEL_CERT_PATH/$CERT_NAME.key"
else
  echo "错误:证书文件 fullchain.pem 或 privkey.pem 不存在!"
  exit 1
fi

# 2. 确保目标目录存在
mkdir -p "$FNOS_CERT_PATH"

# 3. 安全复制证书文件(处理通配符和中文路径)
cp "$PANEL_CERT_PATH/$CERT_NAME."{crt,key} "$FNOS_CERT_PATH/" -av

# 4. 设置安全权限(私钥设为600,证书644)
chmod 644 "$FNOS_CERT_PATH/$CERT_NAME.crt"
chmod 600 "$FNOS_CERT_PATH/$CERT_NAME.key"

# 5. 获取新证书的到期时间戳
NEW_EXPIRY_DATE=$(openssl x509 -enddate -noout -in "$FNOS_CERT_PATH/$CERT_NAME.crt" | cut -d= -f2)
NEW_EXPIRY_TIMESTAMP=$(date -d "$NEW_EXPIRY_DATE" +%s%3N)  # 兼容 GNU date

# 6. 更新数据库中的有效期(使用参数化查询防注入)
export PGPASSWORD='your_password'  # 更安全的方式应使用 ~/.pgpass
psql -U postgres -d trim_connect <<EOF
UPDATE cert SET valid_to=$NEW_EXPIRY_TIMESTAMP WHERE domain='$CERT_NAME';
EOF

# 7. 重启相关服务
services=(webdav.service smbftpd.service trim_nginx.service)
for service in "${services[@]}"; do
  if systemctl is-active --quiet "$service"; then
    systemctl restart "$service"
    echo "已重启服务: $service"
  else
    echo "警告:服务 $service 未运行,跳过重启"
  fi
done

echo "证书部署完成!"
请问PGPASSWORD='your_password'是什么密码  详情 回复
2025-4-5 09:13
按此设置,证书权限不够,打不开网页了。我参考fnOS自带的证书权限,公钥私钥都给了755的权限,就能打开网页了。  详情 回复
2025-3-19 22:22
大佬**,大佬威武  详情 回复
2025-3-13 00:11
lfq
好帖,先收藏点赞,抽空搞一下,这样一次搞定以后就省事了!!  详情 回复
2025-3-8 18:17
1

查看全部评分

1

主题

3

回帖

0

牛值

江湖小虾

社区上线纪念勋章

2025-3-8 18:17:28 显示全部楼层
好帖,先收藏点赞,抽空搞一下,这样一次搞定以后就省事了!!

1

主题

10

回帖

0

牛值

江湖小虾

2025-3-10 21:23:44 显示全部楼层
主机终端 登录 报错链接无效
解决了 忽略 飞牛os ssh没开启  详情 回复
2025-3-10 21:51

1

主题

10

回帖

0

牛值

江湖小虾

2025-3-10 21:51:16 显示全部楼层
解决了 忽略  飞牛os ssh没开启

1

主题

6

回帖

0

牛值

江湖小虾

2025-3-11 08:56:40 显示全部楼层
1panel的申请证书对于国内环境真的不敢恭维,同样的环境,用acme.sh的脚本申请,基本上就十几秒的事,用1panel大概率都会申请失败

0

主题

3

回帖

0

牛值

江湖小虾

2025-3-11 13:57:46 显示全部楼层
我是爱快的做的DDNS,几个问题
1.申请时候填的域名是一级域名是吧,然后访问这个自动生成的证书是二级域名的证书吗,是fnos.xxx.com的一个二级域名吗,这边是否还需要做DDNS的添加一步fnos二级域名的一个相关解析,同时添加相关端口转发
搞定了,需要添加相关二级域名的DDNS以及端口转发  详情 回复
2025-3-11 14:36

0

主题

3

回帖

0

牛值

江湖小虾

2025-3-11 14:36:57 显示全部楼层
搞定了,需要添加相关二级域名的DDNS以及端口转发

0

主题

1

回帖

0

牛值

江湖小虾

2025-3-12 12:55:23 显示全部楼层
这个证书和飞牛ddns可以配合使用吗

2

主题

2

回帖

0

牛值

江湖小虾

2025-3-13 00:11:07 显示全部楼层
大佬**,大佬威武

1

主题

7

回帖

0

牛值

江湖小虾

2025-3-18 16:03:08 显示全部楼层
感谢分享,学习中...........

0

主题

2

回帖

0

牛值

江湖小虾

2025-3-18 17:44:42 显示全部楼层
很好的教程

0

主题

2

回帖

0

牛值

江湖小虾

2025-3-19 11:14:44 显示全部楼层
请教一下,到期自动续期后,还需要重新选择一次证书吗?

0

主题

2

回帖

0

牛值

江湖小虾

2025-3-19 22:22:50 显示全部楼层
1314 发表于 2025-3-8 12:36
我重写了一下,不会报权限问题了

#!/bin/bash

按此设置,证书权限不够,打不开网页了。我参考fnOS自带的证书权限,公钥私钥都给了755的权限,就能打开网页了。
小白求正确脚本  详情 回复
2025-4-5 09:08

7

主题

44

回帖

0

牛值

初出茅庐

社区上线纪念勋章

2025-3-25 13:32:24 显示全部楼层
1Panel续签的证书飞牛显示发证机构1Panel,证书有效也是新证书,但是域名访问ssl不安全然后就断开链接,手动上传1Panel申请的证书也一样,用回老证书正常可访问

1

主题

8

回帖

0

牛值

江湖小虾

2025-4-5 09:08:42 显示全部楼层
fehead 发表于 2025-3-19 22:22
按此设置,证书权限不够,打不开网页了。我参考fnOS自带的证书权限,公钥私钥都给了755的权限,就能打开 ...

小白求正确脚本

1

主题

8

回帖

0

牛值

江湖小虾

2025-4-5 09:13:31 显示全部楼层
1314 发表于 2025-3-8 12:36
我重写了一下,不会报权限问题了

#!/bin/bash

请问PGPASSWORD='your_password'是什么密码

0

主题

2

回帖

0

牛值

江湖小虾

2025-4-5 09:42:16 显示全部楼层
没有华为云,而我正好是华为云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则