first commit

This commit is contained in:
root
2026-04-08 17:52:38 +08:00
commit 70a2ca66f3
12436 changed files with 1921163 additions and 0 deletions
+203
View File
@@ -0,0 +1,203 @@
# 🔒 SSL 证书管理器
基于 acme.sh 的 Web 界面 SSL 证书自动化管理工具,支持 Let's Encrypt 免费证书的申请、管理和自动续期。
## ✨ 功能特性
- 🌐 **Web 界面** - 直观易用的管理界面,无需命令行
- 🔐 **双验证方式** - 支持 HTTP-01 和 DNS-01 验证
- 🌍 **多 DNS 服务商** - 支持 Cloudflare、阿里云、腾讯云等 10+ 服务商
- 📋 **DNS 配置指南** - 自动展示 DNS 解析配置,不管域名在哪里注册
- 🔄 **自动续期** - 内置 cron 脚本,证书到期前自动续期
- 📊 **证书监控** - 实时查看证书状态和过期时间
- 🔑 **安全存储** - DNS API 凭证加密存储
## 🏗️ 技术栈
**后端:**
- Node.js + Express
- SQLite 数据库
- acme.sh 封装
**前端:**
- Vue 3 + Vite
- Element Plus UI
- Pinia 状态管理
## 📦 安装部署
### 1. 前置要求
- Node.js 18+
- acme.sh(会自动从 Gitee 镜像安装)
- Git(用于克隆 acme.sh
- Linux 服务器(推荐 Ubuntu/CentOS
### 2. 安装后端
```bash
cd ssl-manager/backend
# 配置淘宝 npm 镜像(加速下载)
npm config set registry https://registry.npmmirror.com
# 安装依赖
npm install
# 复制环境配置
cp .env.example .env
# 编辑配置
vim .env
# 启动服务
npm start
```
### 3. 安装前端
```bash
cd ssl-manager/frontend
# 配置淘宝 npm 镜像(加速下载)
npm config set registry https://registry.npmmirror.com
# 安装依赖
npm install
# 开发模式
npm run dev
# 生产构建
npm run build
```
### 4. 配置自动续期
```bash
# 添加执行权限
chmod +x scripts/auto-renew.sh
# 编辑 crontab
crontab -e
# 添加定时任务(每天凌晨执行)
0 0 * * * /root/.openclaw/workspace/ssl-manager/scripts/auto-renew.sh
```
## 🔧 配置说明
### 环境变量 (.env)
```bash
# 服务端口
PORT=3000
# ACME 配置
ACME_PATH=/root/.acme.sh
CERT_DIR=/etc/ssl/certs
ACME_EMAIL=your-email@example.com
# 加密密钥(32 字符)
ENCRYPTION_KEY=your-secret-key-here
```
### 支持的 DNS 服务商
| 服务商 | 环境变量 |
|--------|----------|
| Cloudflare | CF_Key, CF_Email |
| 阿里云 | Ali_Key, Ali_Secret |
| 腾讯云 | Tencent_SecretId, Tencent_SecretKey |
| GoDaddy | GD_Key, GD_Secret |
| NameSilo | Namesilo_Key |
| Namecheap | Namecheap_ApiKey |
| DNSPod | DP_Id, DP_Key |
| AWS Route53 | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY |
| Google Cloud | GCP_PROJECT |
| Azure DNS | AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET |
## 🚀 快速开始
1. 启动服务:`./scripts/start-ssl-manager.sh start`
2. 访问 http://localhost:3000
3. 在"申请新证书"页面填写域名
4. 选择验证方式,查看自动生成的 DNS 配置指南
5. 提交申请,等待证书签发
## 📋 DNS 配置指南
不管你的域名在哪里注册(阿里云、腾讯云、Cloudflare、GoDaddy 等),在申请证书时会自动展示:
- **需要的 DNS 记录**(主机记录、类型、记录值、TTL)
- **配置步骤**(一步步指导)
- **服务商控制台位置**(快速跳转)
- **API 凭证说明**(如何获取)
详见:[DNS_GUIDE.md](DNS_GUIDE.md)
## 📁 项目结构
```
ssl-manager/
├── backend/
│ ├── src/
│ │ ├── routes/ # API 路由
│ │ ├── services/ # 业务逻辑
│ │ ├── utils/ # 工具函数
│ │ └── index.js # 入口文件
│ ├── data/ # SQLite 数据库
│ └── .env # 环境配置
├── frontend/
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ ├── components/ # 通用组件
│ │ ├── api/ # API 客户端
│ │ ├── stores/ # 状态管理
│ │ └── router/ # 路由配置
│ └── dist/ # 构建输出
├── scripts/
│ └── auto-renew.sh # 自动续期脚本
└── README.md
```
## 🔒 安全建议
1. **HTTPS 访问** - 生产环境务必使用 HTTPS
2. **防火墙** - 仅开放必要端口
3. **权限控制** - 限制 acme.sh 的执行权限
4. **凭证加密** - DNS API 密钥加密存储
5. **定期备份** - 备份证书和数据库
## 🐛 常见问题
### Q: 证书申请失败?
A: 检查域名 DNS 解析是否正确,确保服务器可访问 80 端口(HTTP-01)或 DNS API 凭证正确(DNS-01)。
### Q: 不知道域名在哪里注册?
A: 使用 `whois 你的域名` 命令查询,或在 SSL Manager 的 DNS 配置指南中查看各服务商的控制台链接。
### Q: DNS 记录添加后多久生效?
A: 通常 1-10 分钟,取决于 TTL 设置和 DNS 服务商。
### Q: 自动续期不工作?
A: 检查 cron 服务是否运行,查看日志 `/var/log/ssl-manager/renew.log`
### Q: 如何添加更多 DNS 服务商?
A: 编辑 `backend/src/services/acme-service.js` 中的 `DNS_PROVIDERS` 对象。
## 📝 License
MIT
## 🙏 致谢
- [acme.sh](https://github.com/acmesh-official/acme.sh) - ACME 客户端
- [Let's Encrypt](https://letsencrypt.org/) - 免费 SSL 证书
- [Vue.js](https://vuejs.org/) - 前端框架
- [Element Plus](https://element-plus.org/) - UI 组件库
---
**开发**: 小弟 👋
**日期**: 2026-04-07