Skip to content

SSL Assistant 是一个基于 Go 语言开发的跨平台证书部署管理助手,主要功能是通过主动获取、更新证书信息,并通过命令行执行。该工具支持 Windows 和 Linux 平台,可以自动寻找 Nginx 服务对应站点的配置文件,获取域名和证书信息,并将证书信息保存到数据库中。

License

Notifications You must be signed in to change notification settings

Youngxj/SSL-Assistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SSL Assistant 🛡️ SSL证书部署管理助手

GitHub Stars GitHub Issues GitHub Release

项目简介 🌟

该项目主要是为了解决大家在使用自动化证书申请平台,如 Certd 🚀 时,证书部署服务器密钥填写在平台中可能出现的安全问题,同时又有多个站点需要部署证书的场景,SSL Assistant 可以有效的帮助大家解决这个问题。

SSL Assistant 是一个基于 Go 语言开发的跨平台证书部署管理助手 🤖,用于SSL远程证书拉取,并自动完成SSL证书更新及生效流程。该工具支持 Windows 和 Linux 平台 🖥️,可以自动寻找 Nginx 服务对应站点的配置文件,获取域名和证书信息,并将证书信息保存到数据库中。 可通过计划任务定期更新证书,实现 SSL 证书的自动更新和部署 ⏰。

预览

功能特点 ✨

  • 跨平台支持:同时支持 Windows 和 Linux 系统 🖼️
  • 自动化管理:自动寻找 Nginx 配置文件(已兼容宝塔面板),获取域名和证书信息 🧐
  • 证书更新:主动拉取远程证书信息,自动更新证书部署,并自动重载生效 🔄
  • 多渠道证书:支持多种证书申请管理工具,如 Certd、西部数码等 📡
  • 命令行操作:提供简单易用的命令行界面 💻
  • 本地存储:使用 SQLite / BadgerDB 数据库存储证书信息 🗄️
  • 计划任务:支持定期更新证书,实现 SSL 证书的自动更新和部署 ⏰

TODO 📝

  • 支持 Windows 和 Linux 平台 🎉
  • 手动指定 Nginx 配置目录 ✅
  • 支持自动寻找 Nginx 配置文件
  • 支持自动获取证书信息 🔍
  • 支持更多证书申请管理工具
  • 本地证书与云端证书一致性校验,一致的话则不更新证书,减少重载次数 🔗
  • 内部配置定时更新任务,支持每天或每周定期检查并更新证书 ⏲️
  • 增加通信能力,支持三方证书平台主动投送证书信息,并自动更新证书 📡

安装与使用 📥

  1. 下载对应平台的运行文件 Releases 下载页面 ⬇️
  2. 初始化程序:SSL-Assistant init 根据提示完成初始化配置,填写API地址、API密钥、重载命令等信息 ⚙️
  3. 添加证书:SSL-Assistant add 输入域名,程序会自动根据域名获取证书信息,并将证书信息保存到数据库中,以便后面的更新操作 ➕
  4. 定期更新:可使用Crontab设置定时任务定期执行SSL-Assistant update ,自动更新部署证书 🔁

使用方法 📖

初始化 🚀

SSL-Assistant init

初始化程序,设置证书信息获取的凭证和证书更新后需要执行的命令。初始化完成后,程序会自动寻找 Nginx 配置文件,获取域名和证书信息。

添加证书 📝

SSL-Assistant add

手动添加证书信息,程序会自动根据域名获取证书信息,并将证书信息保存到数据库中,以便后面的更新操作。

更新证书 🔄

SSL-Assistant update

更新证书,程序会自动获取所有证书信息,并将证书信息保存到数据库中,更新证书对应域名的证书文件内容,重载并生效。

查看证书信息 📋

SSL-Assistant show

查看证书,显示证书信息的表格,包括 ID、域名、状态、创建时间、过期时间、证书路径、私钥路径等信息。

删除证书 🗑️

SSL-Assistant del

删除指定域名的证书信息,包括证书文件、证书配置等。

快速添加域名(Nginx目录检索)🕵️‍♂️

SSL-Assistant find

快速添加域名,程序会自动寻找 Nginx 配置文件,获取域名和证书信息,并将证书信息保存到数据库中,以便后面的更新操作。

证书更新任务 ⏰

SSL-Assistant cron &

crontab 二选一即可

证书更新自动化任务,每日凌晨4点自动检测证书更新,并执行证书更新操作。

运行此命令后,无需再次执行 SSL-Assistant update 命令,程序会自动检测证书更新并执行证书更新操作。

帮助文档 📚

SSL-Assistant -h

查看帮助文档,了解所有可用命令及其用法。

计划任务设置 ⏰

Windows 🪟

  1. 打开任务计划程序
  2. 创建基本任务
  3. 设置触发器为每天或每周
  4. 设置操作为启动程序,程序为 SSL-Assistant,参数为 update

Linux 🐧

使用 crontab 设置定时任务:

crontab -e

添加以下内容:

30 1 * * * /usr/local/bin/SSL-Assistant update

配置文件 📄

配置文件存储在用户主目录的 .ssl_assistant 文件夹中:

Windows: C:\Users\<username>\.ssl_assistant

Linux: /home/<username>/.ssl_assistant

重载命令

重载命令用于SSL证书内容更新后更新服务

  • Nginx:nginx -s reload
  • 1Panel:docker restart $(docker ps -aqf "name=openresty")

    1Panel因为采用了Docker容器化部署,所以需要重启容器才能生效,可能会出现服务中断问题

注意事项 ⚠️

  1. 确保程序有足够的权限读取 Nginx 配置文件和写入证书文件 🔑
  2. 证书更新后会自动执行重载命令,请确保命令正确 ✔️
  3. 定期检查证书状态,确保证书有效 🔎

开发流程 🛠️

从源码编译 👨‍💻

克隆仓库

git clone https://github.com/Youngxj/SSL-Assistant.git
cd SSL-Assistant

编译项目

go build -o ssl_assistant

将可执行文件添加到系统路径或直接 ./ssl_assistant init 运行

多端一键编译 👨‍💻

goreleaser release --snapshot

切换为CGO模式

CGO主要用于Sqlite3数据库

go env -w CGO_ENABLED=1

如果不使用Sqlite3数据库,则会自动使用BadgerDB数据库

About

SSL Assistant 是一个基于 Go 语言开发的跨平台证书部署管理助手,主要功能是通过主动获取、更新证书信息,并通过命令行执行。该工具支持 Windows 和 Linux 平台,可以自动寻找 Nginx 服务对应站点的配置文件,获取域名和证书信息,并将证书信息保存到数据库中。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages