allinssl自动申请部署飞牛域名ssl证书
安装all-in-sll
docker 安装
docker run -itd \
--name allinssl \
-p 7979:8888 \
-v /www/allinssl/data:/www/allinssl/data \
-e ALLINSSL_USER=allinssl \
-e ALLINSSL_PWD=allinssldocker \
-e ALLINSSL_URL=allinssl \
allinssl/allinssl:latest
ALLINSSL_URL: 路径,如http://ip:7979/allinssl访问
ALLINSSL_USER\PWD:账户与密码
配置all in ssl
创建自动化流程前我们先配置好必要的信息
- 授权API管理
域名API :添加-我这里选择域名DNS商为阿里云-填入阿里云的AccessKey的信息即可。
主机API:添加-类型选择ssh-填入主机地址端口等信息 - 通知配置
邮件通知 :设置-告警设置-邮件配置-配置邮件发送STMP相关信息;使用QQ邮箱的STMP服务比较方便;

邮件服务只可配置一个,已配置的在下方
- 飞牛存放目录
这个步骤需要在飞牛上操作;allinssl会通过ssh方式把申请的证书推送到飞牛系统上,但是飞牛默认证书目录需要root权限,我们需要先建立普通用户可访问的文件夹,让allinssl把证书推送到这里。
我这里创建的目录/home/wuhen/1000/git/ssl
创建自动化流程
自动化部署-添加自动部署-快速部署模板
-
申请证书配置
域名 :填对应的域名;注:域名需要在DNS处做好解析;
DNS提供商 :选择上面配置的阿里云
证书CA :选择let s encrypt
邮件 :随便

-
部署主机
部署类型 :选择SSH
部署参数 :主机提供商选择之前配置的主机API;
证书文件地址填写飞牛创建的存放临时ssl的目录路径,证书名字也要填写好,会自动将新证书命名好保存。

- 通知任务
点击配置-填写通知相关信息-消息通知选择之前配置的邮件通知服务

最后保存,可手动尝试执行一下。
自动更新
新证书虽然推送到飞牛上了,我们还需要手动-飞牛设置上更新下。
可以更自动点。下面步骤在飞牛上操作
获取自己域名证书系统位置
执行cat /usr/trim/etc/network_cert_all.conf可看到自己域名的证书系统路径
记录下路径
创建自动脚本
我们创建一个autosll.sh脚本
配置参数四项 需要根据你实际更改
然后把脚本存放到飞牛某个目录
这个脚本会自动把allinsll新申请的证书替换掉系统路径的老证书并重启服务使其生效
#!/bin/bash
set -e # 命令失败立即终止
# 配置参数
NAME="xxx6.xyz" #域名
FNOS_PATH="/usr/trim/var/trim_connect/ssls/xxx6.xyz/1757673486" #fnos证书地址
NEW_SSL_PATH="/home/wuhen/1000/git/ssl" #申请ssl后推送的文件夹
SUDO_PASSWORD='passwd' #飞牛密码
# 检查目标目录中证书文件是否存在
if [[ ! -f "$NEW_SSL_PATH/fullchain.pem" || ! -f "$NEW_SSL_PATH/privkey.pem" ]]; then
echo "错误:目标目录未找到推送的证书文件!"
exit 1
fi
# 在目标目录内重命名证书(添加sudo权限)
echo "$SUDO_PASSWORD" | sudo -S mv "$NEW_SSL_PATH/fullchain.pem" "$FNOS_PATH/$NAME.crt"
echo "$SUDO_PASSWORD" | sudo -S mv "$NEW_SSL_PATH/privkey.pem" "$FNOS_PATH/$NAME.key"
# 设置目录及子文件权限(递归,添加sudo权限)
echo "$SUDO_PASSWORD" | sudo -S chmod -R 0755 "$FNOS_PATH/."
# 获取新证书到期时间(兼容毫秒级时间戳)
NEW_EXPIRY_DATE=$(openssl x509 -enddate -noout -in "$FNOS_PATH/$NAME.crt" | sed "s/^.*=\(.*\)$/\1/")
# 兼容不支持%3N的系统:取纳秒前3位模拟毫秒
NEW_EXPIRY_TIMESTAMP=$(date -d "$NEW_EXPIRY_DATE" +%s%N | cut -c1-13)
# 更新数据库中的证书有效期(添加密码自动输入)
echo "$SUDO_PASSWORD" | sudo -S -u postgres psql -d trim_connect -c "UPDATE cert SET valid_to=$NEW_EXPIRY_TIMESTAMP WHERE domain='$NAME'"
# 重启服务(增加容错检查,添加sudo权限)
services=(webdav.service smbftpd.service trim_nginx.service)
for service in "${services[@]}"; do
if echo "$SUDO_PASSWORD" | sudo -S systemctl is-active --quiet "$service"; then
echo "$SUDO_PASSWORD" | sudo -S systemctl restart "$service"
echo "已重启服务:$service"
else
echo "警告:服务 $service 未运行,跳过重启"
fi
done
echo "证书更新完成,目录及子文件权限已设置!"
配置自动执行脚本
这里回到allinssl操作,编辑创建好的自动化流程-编辑部署主机步骤-添加后置操作
添加执行脚本,我这里输出了log方便查看脚本是否正常执行完成
bash /home/wuhen/1000/git/ssl/fnssl-auto.sh >> log.txt

完工
这样就完全不用管了,allinsll服务不挂,再也不用操心ssl过期了。
结合这个教程,其实你应该也知道如何使用allinsll去自动化管理其它云主机的ssl了。