Skip to content

TLS 测试与端到端 (E2E) 策略 ​

相关源文件

以下文件被用作生成此维基页面的上下文:

目的与范围 ​

本页面详细介绍了 eCapture 核心 TLS 模块(适用于 OpenSSL/BoringSSL 的 tls、适用于 Go 原生 TLS 的 gotls 以及适用于 GnuTLS 的 gnutls)的测试与端到端 (E2E) 验证策略。内容涵盖了针对性的单元测试模式、字节级 ABI 检查、竞态条件检测、生产标记门控,以及用于验证文本 (text)、密钥日志 (keylog) 和 pcapng 输出模式的严格 Linux/Android E2E 执行框架。

Sources: test/e2e/README.md:1-76, test/e2e/linux/common.sh:1-76


6.2.1 针对性单元测试与字节级 ABI 检查 ​

核心 TLS 探针依赖于精确的二进制结构检查和 ABI 兼容性。单元测试和配置验证器在 eBPF 程序挂载前验证二进制属性:

Sources: internal/probe/gotls/config.go:114-228, test/e2e/linux/tls_test.sh:13-19


6.2.2 竞态条件与生产标记门控 ​

为了保证并发用户态控制循环和 eBPF 事件环形缓冲区 (ring buffers) 的安全性,测试套件强制执行严格的构建和运行时检查:

  • 竞态检测器集成:Go 测试和组件在 Go 竞态检测器 (-race) 下执行,以捕获事件分发器和输出接收器中的并发 map 读写。
  • 输出隔离与冲突门控:测试用例验证 eCapture 是否严格区分运行日志 (--logaddr) 与捕获事件 (--eventaddr 或 stdout),拒绝冲突的参数,例如同时使用 stdout 或无效的接收器 URI 方案 test/e2e/linux/tls_test.sh:59-79。

Sources: test/e2e/linux/tls_test.sh:59-79, test/e2e/linux/gnutls_test.sh:36-56


6.2.3 Linux E2E 框架与测试矩阵 ​

维护的 Linux E2E 测试在 GitHub Actions 的 Ubuntu 22.04+ 环境中运行,需要 root 权限和内核版本 4.18+(ARM64 为 5.5+)test/e2e/linux/common.sh:30-63。

Sources: test/e2e/linux/common.sh:30-207, test/e2e/lib/testlib.sh:1-211, test/e2e/linux/tls_test.sh:81-158


6.2.4 Android E2E 框架与 Conscrypt 验证 ​

Android E2E 测试针对已 root 的设备或模拟器上的 API 33+ (Android 13 至 16),利用平台 Conscrypt/BoringSSL (test/e2e/android/common_android.sh:72-155)。

Sources: test/e2e/android/android_tls_e2e_test.sh:19-154, test/e2e/android/common_android.sh:65-155


6.2.5 输出模式验证 (Text, Keylog, 与 pcapng) ​

E2E 测试套件验证所有三种捕获模式的产物完整性:

  • 文本模式 (Text):断言匹配 E2E 测试运行的明文令牌出现在事件流中,且未泄露到运行日志中 test/e2e/linux/tls_test.sh:81-99。
  • 密钥日志模式 (Keylog):在 eCapture 写入 NSS 密钥日志文件的同时,通过 tshark 并发捕获原始数据包。验证 TLS 1.2 CLIENT_RANDOM 和 TLS 1.3 流量密钥的存在,然后使用带有 -o tls.keylog_file 参数的 tshark 成功解密捕获的数据包 test/e2e/linux/tls_test.sh:101-137, test/e2e/lib/testlib.sh:185-205。
  • pcapng 模式:使用 pcapng_check 根据结构要求验证生成的 pcapng 产物,确保存在分段标头块 (SHB)、接口描述块 (IDB)、增强型数据包块 (EPB) 以及 TLS 解密密钥块 (DSB) test/e2e/README.md:41-47, test/e2e/linux/tls_test.sh:139-158。

Sources: test/e2e/README.md:30-58, test/e2e/linux/tls_test.sh:81-158, test/e2e/lib/testlib.sh:185-211

TLS 测试与端到端 (E2E) 策略 has loaded
下载