初始化1

This commit is contained in:
zg
2026-07-16 13:03:11 +08:00
parent 0bdfcbc1c8
commit e6b0f287cc
100 changed files with 12184 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
---
name: session-20260611-2
description: 2026-06-11 第2次会话 — Let's Encrypt证书管理全栈实现
metadata:
type: session
date: 2026-06-11
sessionNumber: 2
startTime: 2026-06-11T22:00+08:00
endTime: 2026-06-11T22:40+08:00
---
# 2026-06-11 第2次会话
## 会话摘要
为 zgitm.com阿里云购买域名实现 Let's Encrypt DNS-01 证书管理全栈功能:
- acme.sh + 阿里云 DNS API 自动签发/续期
- 系统内置域名保护(不可在页面创建/修改/删除)
- 证书管理独立页面(签发/续期/通知设置)
- Java 端 @Scheduled 定时任务到期前15天每日10点发邮件提醒连续15天
- 邮件通过 Mokee Gateway 对外开放 API 发送systemCode: nginxServer
## 关键操作
### 数据库变更
- `certificates` 表新增字段: cert_type, notify_email, notify_enabled, notify_days_before, last_renew_time, renew_log
- 新建 `cert_notify_log` 表: 记录通知发送日志
- 插入 zgitm.com / www.zgitm.com 为 letsencrypt 类型证书
### 服务器 (10.1.1.160)
- 安装 acme.sh v3.1.4GitHub clone绕过 get.acme.sh 被墙)
- 设置默认 CA: Let's Encrypt
- 阿里云 AccessKey 配置在 /root/.bashrc: Ali_Key / Ali_Secret
- 正式签发 zgitm.com 和 www.zgitm.com Let's Encrypt 证书
- 证书安装至 /etc/nginx/ssl/{domain}.pem + .key
- 到期时间: 2026-09-09自动续期: 2026-08-10
### Python API
- `ssl_service.py`: +约120行LE_DOMAINS 列表ensure_le_certificate()renew_le_certificate()get_le_cert_info()
- `app.py`: 新增 4 个证书管理端点 + add_rule 中系统域名拦截
### Java 后端(新建/修改共8个文件
- `Certificate.java`: 新实体
- `CertificateRepository.java`: JPA Repository
- `CertificateService.java`: CRUD + 签发 + 续期 + 通知配置
- `CertificateController.java`: /api/certificates REST API
- `CertNotifyScheduler.java`: @Scheduled(cron="0 0 10 * * ?") 每天10点检查+发邮件
- `PythonApiClient.java`: +4个证书API方法签发/续期用 certRestTemplate(210s超时)
- `ForwardingRuleService.java`: 系统域名保护(增删改拦截)
- `RestTemplateConfig.java`: 新增 certRestTemplate Bean
- `application.yml`: +gateway 配置段
### 前端(新建/修改共5个文件
- `CertManagement.vue`: 证书管理页面(列表/签发/续期/通知设置)
- `router/index.js`: +/cert-management 路由
- `MainLayout.vue`: +SSL证书管理菜单Key图标
- `nginxApi.js`: +5个证书API方法
- `NginxForwarding.vue`: 系统域名保护(操作按钮置灰+Lock图标创建时拦截
## 架构要点
- 证书签发流程: Vue → Java → Python API → acme.sh → 阿里云DNS API + Let's Encrypt
- 邮件通知: Java @Scheduled → Mokee Gateway API → 邮件发送
- 系统域名 zgitm.com/www.zgitm.com 三层保护: 前端拦截 + Java校验 + Python API拒绝
- 手动创建域名保持内部CA签发原有逻辑不变
## 配置信息
- Mokee Gateway: https://gw.server.mokee.com (gw.base-url 可配置)
- SystemCode: nginxServer
- 阿里云 AccessKey: LTAI5t98jUxLUadZM1LkaSa8 / K2HyLLXizAgvOMOa0Mzc7ebs4gbAZs
- acme.sh 路径: /root/.acme.sh/acme.sh
- 证书目录: /etc/nginx/ssl/
## 待处理
- [ ] 部署 Java 新版本到服务器并重启
- [ ] 前端构建部署
- [ ] 测试邮件通知(可临时改 cron 表达式触发)
- [ ] 确认收件人邮箱(当前默认 admin@mokee.com