Ingen beskrivning

root 70a2ca66f3 first commit 6 dagar sedan
backend 70a2ca66f3 first commit 6 dagar sedan
frontend 70a2ca66f3 first commit 6 dagar sedan
scripts 70a2ca66f3 first commit 6 dagar sedan
DNS_GUIDE.md 70a2ca66f3 first commit 6 dagar sedan
QUICKSTART.md 70a2ca66f3 first commit 6 dagar sedan
README.md 70a2ca66f3 first commit 6 dagar sedan
SERVICE.md 70a2ca66f3 first commit 6 dagar sedan
install.sh 70a2ca66f3 first commit 6 dagar sedan

README.md

🔒 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. 安装后端

cd ssl-manager/backend

# 配置淘宝 npm 镜像(加速下载)
npm config set registry https://registry.npmmirror.com

# 安装依赖
npm install

# 复制环境配置
cp .env.example .env

# 编辑配置
vim .env

# 启动服务
npm start

3. 安装前端

cd ssl-manager/frontend

# 配置淘宝 npm 镜像(加速下载)
npm config set registry https://registry.npmmirror.com

# 安装依赖
npm install

# 开发模式
npm run dev

# 生产构建
npm run build

4. 配置自动续期

# 添加执行权限
chmod +x scripts/auto-renew.sh

# 编辑 crontab
crontab -e

# 添加定时任务(每天凌晨执行)
0 0 * * * /root/.openclaw/workspace/ssl-manager/scripts/auto-renew.sh

🔧 配置说明

环境变量 (.env)

# 服务端口
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

📁 项目结构

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

🙏 致谢


开发: 小弟 👋
日期: 2026-04-07