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

相关推荐
眠りたいです2 小时前
Docker:Docker Volume存储卷-宿主机与容器的数据双向交流通道
运维·docker·中间件·容器
破烂pan2 小时前
企业级 Docker 运维命令速查表
运维·docker
Samson Bruce3 小时前
【docker swarm】
java·docker·eureka
幺零九零零3 小时前
Docker底层-Namespaces(网络隔离)
网络·docker·容器
隔壁阿布都3 小时前
Docker 离线安装 GitLab 完整步骤
docker·gitlab
2501_939909053 小时前
Docker(3)
运维·docker·容器
❀͜͡傀儡师4 小时前
Docker 部署 OpenVidu
运维·docker·容器·openvidu
一杯咖啡Miracle4 小时前
UV管理python环境,打包项目为docker流程
python·算法·docker·容器·uv
阿郎_20114 小时前
复用已知的ssh公私钥实现docker的ssh传输
docker·github·ssl