Skip to content

Latest commit

 

History

History
281 lines (221 loc) · 5.7 KB

File metadata and controls

281 lines (221 loc) · 5.7 KB

KMS 部署与测试指南

创建时间: 2025-09-27 17:50

📋 概述

本指南详细说明如何部署和测试KMS (Key Management System),支持两种TEE环境:

  • Mock-TEE版本: 快速开发测试,使用模拟TEE环境
  • QEMU-TEE版本: 真实TEE环境,使用OP-TEE QEMU模拟器

🎯 当前在线版本状态

当前在线部署版本: Mock-TEE 版本

验证当前版本类型

# 健康检查
curl https://atom-become-ireland-travels.trycloudflare.com/health

# 返回:
{
  "service": "KMS API",
  "status": "healthy",
  "timestamp": "2025-09-27T10:50:19Z",
  "version": "0.1.0"
}

🚀 一键部署脚本

部署Mock-TEE版本

# 基本部署(本地端口8080)
./deploy-kms.sh mock-deploy

# 部署并启用公网隧道
./deploy-kms.sh mock-deploy -t

# 部署到自定义端口
./deploy-kms.sh mock-deploy -p 9090

部署QEMU-TEE版本

# 需要Docker环境
./deploy-kms.sh qemu-deploy

# 部署并启用公网隧道
./deploy-kms.sh qemu-deploy -t

管理命令

# 检查部署状态
./deploy-kms.sh status

# 停止所有服务
./deploy-kms.sh stop

# 清理环境
./deploy-kms.sh clean

🧪 API测试套件

基本测试

# 测试本地部署
python3 test-kms-apis.py

# 测试在线版本
python3 test-kms-apis.py --online

# 比较本地和在线版本
python3 test-kms-apis.py --compare

测试输出示例

==================== 测试报告 ====================
✅ health_check: 0.224s
✅ create_key: 0.212s
✅ get_public_key: 0.156s
✅ sign_message: 0.189s
✅ list_keys: 0.134s
✅ error_handling: 0.167s
✅ bulk_operations: 0.891s

所有测试通过! 7/7
总耗时: 1.973s
创建密钥数: 8

📊 版本对比

特性 Mock-TEE版本 QEMU-TEE版本
部署速度 🟢 快速 (30秒) 🟡 中等 (2分钟)
资源需求 🟢 低 (RAM < 100MB) 🟡 中等 (RAM ~500MB)
安全级别 🟡 测试级别 🟢 TEE级别
开发友好 🟢 极佳 🟡 良好
生产就绪 ❌ 仅测试 🟢 是
依赖 Rust only Docker + OP-TEE

🔧 API端点详情

核心KMS操作

# 1. 创建密钥
curl -X POST 'http://localhost:8080/' \
  -H 'Content-Type: application/json' \
  -H 'X-Amz-Target: TrentService.CreateKey' \
  -d '{"KeyUsage":"SIGN_VERIFY","KeySpec":"ECC_SECG_P256K1"}'

# 2. 获取公钥
curl -X POST 'http://localhost:8080/' \
  -H 'Content-Type: application/json' \
  -H 'X-Amz-Target: TrentService.GetPublicKey' \
  -d '{"KeyId":"your-key-id"}'

# 3. 签名消息
curl -X POST 'http://localhost:8080/' \
  -H 'Content-Type: application/json' \
  -H 'X-Amz-Target: TrentService.Sign' \
  -d '{"KeyId":"your-key-id","Message":"SGVsbG8gV29ybGQ=","MessageType":"RAW"}'

辅助端点

# 健康检查
curl http://localhost:8080/health

# 列出密钥
curl http://localhost:8080/keys

🎨 使用场景示例

场景1: 快速原型验证

# 启动Mock版本进行快速测试
./deploy-kms.sh mock-deploy
python3 test-kms-apis.py

场景2: 安全功能验证

# 启动QEMU-TEE版本验证真实TEE功能
./deploy-kms.sh qemu-deploy
python3 test-kms-apis.py

场景3: 公网演示

# 部署并创建公网隧道
./deploy-kms.sh mock-deploy -t
# 获取公网URL后分享给用户测试

场景4: 性能基准测试

# 部署本地版本
./deploy-kms.sh mock-deploy -p 8081

# 运行性能测试
python3 test-kms-apis.py --url http://localhost:8081

🔒 安全考虑

Mock-TEE版本

  • ✅ 密码学算法正确性验证
  • ✅ API接口完整性测试
  • ❌ 无真实TEE保护
  • ❌ 密钥存储在普通内存

QEMU-TEE版本

  • ✅ 真实TEE环境隔离
  • ✅ 安全密钥存储
  • ✅ 硬件级密码学操作
  • ✅ 防篡改保护

🔄 版本切换

从Mock切换到QEMU

# 停止当前服务
./deploy-kms.sh stop

# 部署QEMU版本
./deploy-kms.sh qemu-deploy

# 验证切换成功
./deploy-kms.sh status
python3 test-kms-apis.py

从QEMU切换到Mock

# 停止当前服务
./deploy-kms.sh stop

# 部署Mock版本
./deploy-kms.sh mock-deploy

# 验证切换成功
./deploy-kms.sh status

📈 性能指标

Mock-TEE版本基准

  • 密钥创建: ~100ms
  • 签名操作: ~50ms
  • 公钥获取: ~10ms
  • 并发支持: 100+ req/s

QEMU-TEE版本基准

  • 密钥创建: ~200ms
  • 签名操作: ~100ms
  • 公钥获取: ~50ms
  • 并发支持: 50+ req/s

🛟 故障排除

常见问题

  1. 端口被占用

    # 检查端口使用
    lsof -i :8080
    # 使用不同端口
    ./deploy-kms.sh mock-deploy -p 8081
  2. Docker权限问题

    # 添加用户到docker组
    sudo usermod -aG docker $USER
    # 重新登录后重试
  3. Cloudflare tunnel失败

    # 安装cloudflared
    # macOS: brew install cloudflare/cloudflare/cloudflared
    # Linux: 参考官方文档
  4. API测试失败

    # 检查服务状态
    ./deploy-kms.sh status
    # 查看日志
    curl http://localhost:8080/health

🚀 下一步发展

计划中的功能

  • 密钥备份和恢复
  • 多签名支持
  • 密钥轮换
  • 审计日志
  • 高可用部署
  • Kubernetes支持

生产部署准备

  • 真实硬件TEE集成 (Raspberry Pi 5)
  • SSL/TLS终端
  • 认证和授权
  • 监控和告警
  • 灾难恢复

此指南涵盖了KMS的完整部署和测试流程,支持从快速原型到生产部署的各种场景。