# cert **Repository Path**: shadowhwli/cert ## Basic Information - **Project Name**: cert - **Description**: 免费证书生成和需求可视化 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-06-04 - **Last Updated**: 2026-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SSL 证书管理系统 基于 **acme.sh + Let's Encrypt** 的可视化 SSL 证书管理工具。 提供一个简洁的 Web 界面,方便地申请、查看和下载免费 SSL 证书。 ## 技术栈 | 层 | 技术 | |---|---| | 前端 | Vue 3 + Element Plus + Vite | | 后端 | Spring Boot 3 + SQLite(嵌入式,无需单独部署数据库) | | 证书 | acme.sh + Let's Encrypt | | 部署 | Docker + Docker Compose + Nginx | ## 功能 - ✅ 申请 Let's Encrypt 免费证书(standalone 模式,支持通配符域名) - ✅ 实时显示申请进度(异步处理,自动轮询) - ✅ 查看证书状态、到期时间、剩余天数 - ✅ 下载证书文件(fullchain.pem、private.key、ca.pem) - ✅ 手动续期证书 - ✅ 删除证书(同时清理本地文件) ## 快速部署 ### 前提条件 1. 服务器已安装 Docker + Docker Compose 2. 目标域名 **DNS 已解析到本机 IP** 3. 服务器 **80 端口** 已开放(acme.sh standalone 模式需要) ### 步骤 ```bash # 1. 克隆项目 git clone cd cert # 2. 配置邮箱(Let's Encrypt 注册用) cp env.example .env # 编辑 .env,设置 ACME_EMAIL=your-email@example.com # 3. 构建并启动 docker-compose up -d --build # 4. 访问 open http://your-server-ip ``` ### 查看日志 ```bash # 后端日志(含 acme.sh 输出) docker logs -f cert-manager-backend # 前端日志 docker logs -f cert-manager-frontend ``` ## 使用说明 ### 申请证书 1. 点击「申请证书」按钮 2. 输入域名(如 `example.com`) 3. 点击「开始申请」,系统将在后台调用 acme.sh 进行申请 4. 页面自动轮询进度,约 1~2 分钟后状态变为「有效」 > ⚠️ standalone 模式申请时会临时占用 80 端口约 10 秒 ### 下载证书 证书申请成功后,点击「下载」按钮,选择需要的文件: | 文件 | 用途 | |------|------| | `fullchain.pem` | Nginx `ssl_certificate` 配置(推荐) | | `private.key` | Nginx `ssl_certificate_key` 配置 | | `ca.pem` | CA 证书链(部分场景需要) | #### Nginx 配置示例 ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/private.key; # ... } ``` ### 续期证书 证书有效期通常为 **90 天**,建议在到期前 30 天手动续期。 点击对应证书的「续期」按钮即可(同样异步执行)。 ## 进阶:DNS 模式(通配符证书 / 无法开放 80 端口) 如果无法使用 standalone 模式,需修改后端 `CertificateService.java` 中的 acme.sh 命令, 改为 DNS API 模式(以阿里云为例): ```bash --dns dns_ali ``` 并在容器环境变量中配置 DNS API 密钥: ```yaml # docker-compose.yml environment: Ali_Key: "your-ali-key" Ali_Secret: "your-ali-secret" ``` 更多 DNS 提供商支持,参考 [acme.sh DNS API 文档](https://github.com/acmesh-official/acme.sh/wiki/dnsapi)。 ## 数据持久化 | 数据 | 存储位置 | |------|---------| | 证书记录(SQLite) | Docker volume `cert-data` → `/data/cert-manager.db` | | 证书文件 | Docker volume `cert-data` → `/data/certificates/` | | acme.sh 账户密钥 | Docker volume `acme-home` → `/root/.acme.sh/` |