# SSL-Assistant
**Repository Path**: knight322/SSL-Assistant
## Basic Information
- **Project Name**: SSL-Assistant
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-10-30
- **Last Updated**: 2025-10-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SSL Assistant 🛡️ SSL证书部署管理助手

[](https://github.com/Youngxj/SSL-Assistant/issues)
[](https://github.com/Youngxj/SSL-Assistant/releases)
## 项目简介 🌟
> 该项目主要是为了解决大家在使用自动化证书申请平台,如 [Certd](https://github.com/certd/certd) 🚀
> 时,证书部署服务器密钥填写在平台中可能出现的安全问题,同时又有多个站点需要部署证书的场景,SSL Assistant 可以有效的帮助大家解决这个问题。
SSL Assistant 是一个基于 Go 语言开发的跨平台证书部署管理助手 🤖,用于SSL远程证书拉取,并自动完成SSL证书更新及生效流程。该工具支持
Windows 和 Linux 平台 🖥️,可以自动寻找 Nginx 服务对应站点的配置文件,获取域名和证书信息,并将证书信息保存到数据库中。
可通过计划任务定期更新证书,实现 SSL 证书的自动更新和部署 ⏰。
## 功能特点 ✨
- 跨平台支持:同时支持 Windows 和 Linux 系统 🖼️
- 自动化管理:自动寻找 Nginx 配置文件(已兼容宝塔面板),获取域名和证书信息 🧐
- 证书更新:主动拉取远程证书信息,自动更新证书部署,并自动重载生效 🔄
- 多渠道证书:支持多种证书申请管理工具,如 Certd、西部数码等 📡
- 命令行操作:提供简单易用的命令行界面 💻
- 本地存储:使用 SQLite / BadgerDB 数据库存储证书信息 🗄️
- 计划任务:支持定期更新证书,实现 SSL 证书的自动更新和部署 ⏰
## TODO 📝
- [x] 支持 Windows 和 Linux 平台 🎉
- [x] 手动指定 Nginx 配置目录 ✅
- 支持自动寻找 Nginx 配置文件
- [x] 原生Nginx环境 🐱🏍
- [x] [宝塔面板](https://bt.cn) 🏰
- [x] [1Panel](https://1panel.cn) 📦
- [ ] [小皮面板Windows](https://www.xp.cn) 🐘
- [ ] [小皮面板](https://www.xp.cn) 🐘
- [x] 支持自动获取证书信息 🔍
- 支持更多证书申请管理工具
- [x] [Certd](https://github.com/certd/certd) 流水线申请部署证书工具 🏭
- [x] [西部数码](https://www.west.cn/web/ssl/manage/) 证书管理平台 📡
- [ ] [ALLinSSL](https://allinssl.com/) 🔒
- [ ] 更多…… 📈
- [x] 本地证书与云端证书一致性校验,一致的话则不更新证书,减少重载次数 🔗
- [x] 内部配置定时更新任务,支持每天或每周定期检查并更新证书 ⏲️
- [ ] 增加通信能力,支持三方证书平台主动投送证书信息,并自动更新证书 📡
## 安装与使用 📥
1. 下载对应平台的运行文件 [Releases 下载页面](https://github.com/Youngxj/SSL-Assistant/releases) ⬇️
2. 初始化程序:`SSL-Assistant init` 根据提示完成初始化配置,填写API地址、API密钥、重载命令等信息 ⚙️
3. 添加证书:`SSL-Assistant add` 输入域名,程序会自动根据域名获取证书信息,并将证书信息保存到数据库中,以便后面的更新操作 ➕
4. 定期更新:可使用Crontab设置定时任务定期执行`SSL-Assistant update` ,自动更新部署证书 🔁
## 使用方法 📖
### 初始化 🚀
```bash
SSL-Assistant init
```
初始化程序,设置证书信息获取的凭证和证书更新后需要执行的命令。初始化完成后,程序会自动寻找 Nginx 配置文件,获取域名和证书信息。
### 添加证书 📝
```bash
SSL-Assistant add
```
手动添加证书信息,程序会自动根据域名获取证书信息,并将证书信息保存到数据库中,以便后面的更新操作。
### 更新证书 🔄
```bash
SSL-Assistant update
```
更新证书,程序会自动获取所有证书信息,并将证书信息保存到数据库中,更新证书对应域名的证书文件内容,重载并生效。
### 查看证书信息 📋
```bash
SSL-Assistant show
```
查看证书,显示证书信息的表格,包括 ID、域名、状态、创建时间、过期时间、证书路径、私钥路径等信息。
### 删除证书 🗑️
```bash
SSL-Assistant del
```
删除指定域名的证书信息,包括证书文件、证书配置等。
### 快速添加域名(Nginx目录检索)🕵️♂️
```bash
SSL-Assistant find
```
快速添加域名,程序会自动寻找 Nginx 配置文件,获取域名和证书信息,并将证书信息保存到数据库中,以便后面的更新操作。
### 证书更新任务 ⏰
```bash
SSL-Assistant cron &
```
**crontab 二选一即可**
证书更新自动化任务,每日凌晨4点自动检测证书更新,并执行证书更新操作。
运行此命令后,无需再次执行 `SSL-Assistant update` 命令,程序会自动检测证书更新并执行证书更新操作。
> 任务运行期间,程序会记录运行日志,日志文件位于程序运行目录下的`cron.log`文件中
### 帮助文档 📚
```bash
SSL-Assistant -h
```
查看帮助文档,了解所有可用命令及其用法。
## 计划任务设置 ⏰
### Windows 🪟
1. 打开任务计划程序
2. 创建基本任务
3. 设置触发器为每天或每周
4. 设置操作为启动程序,程序为 SSL-Assistant,参数为 update
### Linux 🐧
使用 crontab 设置定时任务:
```bash
crontab -e
```
添加以下内容:
```plainText
30 1 * * * /usr/local/bin/SSL-Assistant update
```
## 数据库文件 📄
证书数据库文件存储在用户主目录的 `.ssl_assistant` 文件夹中:
Windows: `C:\Users\\.ssl_assistant`
Linux: `/home//.ssl_assistant`
## 配置文件 📋
配置文件放在程序运行目录下`config/conf.ini`
可手动修改或使用命令`SSL-Assistant show`或`SSL-Assistant init`修改相关配置
## 重载命令 🔄
重载命令用于SSL证书内容更新后更新服务
- Nginx:`nginx -s reload`
- 1Panel:`docker restart $(docker ps -aqf "name=openresty")`
> 1Panel因为采用了Docker容器化部署,所以需要重启容器才能生效,可能会出现服务中断问题
## 注意事项 ⚠️
1. 确保程序有足够的权限读取 Nginx 配置文件和写入证书文件 🔑
2. 证书更新后会自动执行重载命令,请确保命令正确 ✔️
3. 定期检查证书状态,确保证书有效 🔎
## 开发流程 🛠️
### 从源码编译 👨💻
克隆仓库
```bash
git clone https://github.com/Youngxj/SSL-Assistant.git
cd SSL-Assistant
```
编译项目
```bash
go build -o ssl_assistant
```
将可执行文件添加到系统路径或直接 `./ssl_assistant init` 运行
### 多端一键编译 👨💻
```bash
goreleaser release --snapshot
```
### 切换为CGO模式
CGO主要用于Sqlite3数据库
```bash
go env -w CGO_ENABLED=1
```
如果不使用Sqlite3数据库,则会自动使用BadgerDB数据库