134 lines
3.9 KiB
Markdown
134 lines
3.9 KiB
Markdown
# 完整测试流程说明
|
||
|
||
## 是的,测试脚本执行的是完整的创建路由并自动申请 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 访问。
|