first commit
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user