用途:在 Windows 沙箱中复现并验证 OpenWork 的企业 TLS 行为,确认桌面应用使用操作系统信任路径、派生运行时通过 NODE_EXTRA_CA_CERTS 获得系统信任包。适用于用户要求“test on Windows”“Windows sandbox”“daytona windows”,或验证企业 CA、公司证书、GPO 证书、自托管证书路径,或报告 TLS fetch failed、fetch failed 及证书相关失败时。
主要能力:创建 Windows 沙箱(windows-small/medium/large,验证路径用 windows-medium),安装伪造企业根与中间证书到 Cert:\LocalMachine\Root,映射 poc.openwork.test 到 localhost,并启动健康链(8443)与断链(9443)两个 HTTPS 控制平面;通过 ca-probe.js 探测 Electron 对系统证书库的视图,通过 VNC 驱动已安装应用验证成功与失败路径,并检查生成的 system-ca-bundle.pem。
必要用法:Daytona CLI 需不低于 API 版本(验证版本 v0.194),gh 需已认证 different-ai/openwork 并可创建/删除临时公开预发布。创建沙箱:daytona create --snapshot windows-medium;设置命令用 daytona exec <ID> -- <cmd>(daytona ssh 仅交互式,脚本中会因 host-key 提示失败)。exec 以 nt authority\system 在 session 0 运行,看不到交互用户 UI,$env:APPDATA 指向 SYSTEM 配置;GUI 需经 Daytona Dashboard 的 VNC 连接。大构建可打包为 zip 上传到临时 prerelease,在 VM 内用 curl.exe 与 tar 下载解压。监听器需用计划任务以 SYSTEM 持久运行,否则 exec 会话关闭即退出。含管道或嵌套引号时用 powershell -EncodedCommand(base64 UTF-16LE)。
限制与注意:system-ca-bundle.pem 首次启动写入后记忆化,首次启动后新增 CA 需重启应用;真实机群 GPO CA 在启动时已存在,通常不受影响。zsh 会吞掉未加引号 Windows 路径中的反斜杠,需整体引用 cmd /c 载荷;cmd 单行中 %ERRORLEVEL% 在解析时展开,建议用 PowerShell 与 $LASTEXITCODE;cmd /c 加 timeout 在 daytona exec 下报“input redirection is not supported”,可用 ping -n 代替。清理需停止计划任务、用 setup-openwork-tls-repro.ps1 -Cleanup 移除证书/主机/绑定、删除沙箱与临时 prerelease。若作为 PR 证据,应转为 .e2e.test.ts 测试,VNC 截图仅作补充。