apisix/ssl_manager/FULL_TEST_FLOW.md

134 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 完整测试流程说明
## 是的,测试脚本执行的是完整的创建路由并自动申请 SSL 证书的流程
### 测试流程步骤
当使用 `python3 test_ssl_auto.py --domain test.jingrowtools.cn` 时,脚本会依次执行:
#### 1. 检查系统依赖 ✅
- 检查 Certbot 是否安装
- 检查 Python 模块是否可用
- 检查 OpenSSL 是否安装
#### 2. 检查 APISIX 服务 ✅
- 验证 APISIX Admin API 是否可访问
- 检查连接和认证
#### 3. 检查 Webroot 目录 ✅
- 检查 `/var/www/certbot` 目录是否存在
- 创建 `.well-known/acme-challenge` 子目录
#### 4. 检查/创建 Webroot 路由 ✅ **自动创建验证路由**
- 检查是否存在该域名的 webroot 路由
- **如果不存在,自动创建**
- 路由 ID: `certbot-webroot-{domain}`
- Host: 指定的域名
- URI: `/.well-known/acme-challenge/*`
- Priority: 10000最高优先级
- 功能: 自动读取验证文件并返回
#### 5. 测试验证路径 ⚠️ **测试验证路由是否工作**
- 创建测试文件
- 通过 APISIX 访问验证路径
- 验证路由是否正确返回文件内容
#### 6. 创建测试路由 ✅ **创建用户指定的域名路由**
- **自动创建域名路由**
- 路由 ID: 域名本身
- Host: 指定的域名
- URI: `/*`
- Upstream: 配置的后端服务
- 这是实际业务路由
#### 7. 申请 SSL 证书 ✅ **自动申请证书**
- 使用 Certbot 申请 Let's Encrypt 证书
- 自动处理验证流程
- 证书保存到 `/etc/letsencrypt/live/{domain}/`
#### 8. 同步证书到 APISIX ✅ **自动上传证书**
- 读取证书文件
- 通过 APISIX Admin API 创建/更新 SSL 配置
- 关联到域名
#### 9. 验证证书信息 ✅
- 使用 OpenSSL 验证证书
- 显示证书详细信息
## 完整流程示例
```bash
# 执行测试
python3 test_ssl_auto.py --domain test.jingrowtools.cn --no-cleanup
# 流程输出:
[步骤 1/9] 检查系统依赖 ✅
[步骤 2/9] 检查 APISIX 服务 ✅
[步骤 3/9] 检查 Webroot 目录 ✅
[步骤 4/9] 检查/创建 Webroot 路由 ✅
→ 自动创建: certbot-webroot-test-jingrowtools-cn
[步骤 5/9] 测试验证路径 ✅
[步骤 6/9] 创建测试路由 ✅
→ 自动创建: test.jingrowtools.cn (业务路由)
[步骤 7/9] 申请 SSL 证书 ✅
→ Certbot 自动申请证书
[步骤 8/9] 同步证书到 APISIX ✅
→ 证书自动上传到 APISIX
[步骤 9/9] 验证证书信息 ✅
```
## 自动化的部分
### ✅ 自动创建验证路由
- 无需手动配置 webroot 路由
- 脚本自动检测并创建
- 确保验证路径可访问
### ✅ 自动创建业务路由
- 根据指定域名自动创建路由
- 配置默认的 upstream
- 路由立即可用
### ✅ 自动申请证书
- 调用 Certbot 自动申请
- 处理所有验证流程
- 无需手动干预
### ✅ 自动同步证书
- 读取证书文件
- 自动上传到 APISIX
- 自动关联域名
## 权限问题处理
如果遇到权限问题(如测试输出中的错误),脚本已优化:
1. **自动尝试使用 sudo**:如果直接写入失败,会尝试使用 sudo
2. **容错处理**即使验证路径测试失败也会继续执行证书申请Certbot 会自动处理文件创建)
3. **提示信息**:提供清晰的权限修复建议
### 修复权限(推荐)
```bash
# 一次性修复权限
sudo mkdir -p /var/www/certbot/.well-known/acme-challenge
sudo chown -R $USER:$USER /var/www/certbot
sudo chmod -R 755 /var/www/certbot
```
## 总结
**是的,测试脚本执行的是完整的自动化流程:**
1.**自动创建验证路由**webroot 路由)
2.**自动创建业务路由**(用户指定的域名)
3.**自动申请 SSL 证书**Let's Encrypt
4.**自动同步证书到 APISIX**(上传并配置)
整个过程完全自动化,只需要:
- 提供域名
- 确保 DNS 已解析
- 运行测试脚本
测试完成后,域名路由和 SSL 证书都已配置完成,可以直接使用 HTTPS 访问。