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

相关推荐
wydd99_lll9 小时前
docker特权模式下逃逸
运维·docker·容器
mseaspring10 小时前
一款用于监控跨多台主机 Docker 容器的实时终端
运维·docker·容器
SPC的存折14 小时前
6、Docker常用配置
运维·docker·容器
图图玩ai14 小时前
SSH 命令管理工具怎么选?从命令收藏到批量执行一次讲清
linux·nginx·docker·ai·程序员·ssh·可视化·gmssh·批量命令执行
SPC的存折15 小时前
4、Docker私有仓库
运维·docker·容器
齐潇宇16 小时前
Docker概述与安装
linux·运维·docker·容器
亚空间仓鼠17 小时前
Docker 容器技术入门与实践 (二):Dockerfile文件
运维·docker·容器
亚空间仓鼠17 小时前
Docker 容器技术入门与实践 (一):命令与镜像、容器管理
运维·docker·容器
东北甜妹18 小时前
Docker 多阶段构建
运维·docker·容器
Zhu75818 小时前
【软件部署】docker环境部署nagios
运维·docker·容器