# 🔒 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