apisix/ssl_manager/FULL_TEST_FLOW.md

3.9 KiB
Raw Blame History

完整测试流程说明

是的,测试脚本执行的是完整的创建路由并自动申请 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 验证证书
  • 显示证书详细信息

完整流程示例

# 执行测试
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. 提示信息:提供清晰的权限修复建议

修复权限(推荐)

# 一次性修复权限
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 访问。