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