allinssl自动申请部署飞牛域名ssl证书

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

创建自动化流程前我们先配置好必要的信息

  1. 授权API管理
    域名API :添加-我这里选择域名DNS商为阿里云-填入阿里云的AccessKey的信息即可。
    主机API:添加-类型选择ssh-填入主机地址端口等信息
  2. 通知配置
    邮件通知 :设置-告警设置-邮件配置-配置邮件发送STMP相关信息;使用QQ邮箱的STMP服务比较方便;

    邮件服务只可配置一个,已配置的在下方
  3. 飞牛存放目录
    这个步骤需要在飞牛上操作;allinssl会通过ssh方式把申请的证书推送到飞牛系统上,但是飞牛默认证书目录需要root权限,我们需要先建立普通用户可访问的文件夹,让allinssl把证书推送到这里。
    我这里创建的目录/home/wuhen/1000/git/ssl

创建自动化流程

自动化部署-添加自动部署-快速部署模板

  1. 申请证书配置
    域名 :填对应的域名;注:域名需要在DNS处做好解析;
    DNS提供商 :选择上面配置的阿里云
    证书CA :选择let s encrypt
    邮件 :随便

  2. 部署主机

部署类型 :选择SSH
部署参数 :主机提供商选择之前配置的主机API;

证书文件地址填写飞牛创建的存放临时ssl的目录路径,证书名字也要填写好,会自动将新证书命名好保存。

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

最后保存,可手动尝试执行一下。


自动更新

新证书虽然推送到飞牛上了,我们还需要手动-飞牛设置上更新下。

可以更自动点。下面步骤在飞牛上操作

获取自己域名证书系统位置

执行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了。

相关推荐
MrSYJ7 小时前
别人再问你路由表是啥,这篇文章摔它脸上
docker·云原生·kubernetes
羑悻8 小时前
穿越Docker内核迷雾:揭秘镜像分层存储的叠加态与卷挂载的多维空间穿梭技术
后端·docker·容器
筑梦之路9 小时前
docker-compose方式部署kafka集群(Kraft方式)——筑梦之路
docker·容器·kafka
JavaPub-rodert9 小时前
Docker 镜像地址总失效?基于 DockerHub 项目用 GitHub Actions 做一个自动检测状态页
docker·容器·github
天衍四九-10 小时前
Docker 进阶实战系列(一):容器镜像安全,最小镜像与非 Root 运行
安全·docker·eureka
天衍四九-10 小时前
Docker进阶实战系列(二):容器日志深度治理|驱动配置、自动切割、磁盘爆满彻底解决
docker·容器·eureka
sbjdhjd10 小时前
云安全 | Docker 容器逃逸复盘(一):从隔离边界到运行时链路,如何确认自己身处容器
网络安全·docker·云原生·容器·kubernetes·云计算·云安全
溪语流沙10 小时前
【Web全栈进阶】PostgreSQL上手:Docker跑库 + 把早报站从SQLite迁过去
前端·docker·postgresql
梦想不只是梦与想20 小时前
docker-compose.yml
docker·docker-compose·docker run
更深兼春远1 天前
第2篇:Dify 部署保姆级教程:用 Docker跑起来
docker·容器·dify