Target Version
3.0-dev。该版本线当前定义 Gateway、Push 和 Media 的公开传输边界;证据复核于提交 a75fc8721b99e5c0b4421d0c58b5618bbe71ff31。
Evidence
gateway/source/gateway_server.h:84-88,207 使用明文 httplib::Server 监听 0.0.0.0:9000,仓库没有 TLS termination profile。
push/source/connection.hpp:3,13 使用 websocketpp::config::asio_no_tls,Compose 直接暴露 9001。
common/infra/s3_client.hpp:61-65 可选择 HTTPS scheme,但无条件设置 verifySSL=false。
docker-compose.yml 直接向宿主机暴露 Gateway、Push,以及 etcd、MySQL、Redis、RabbitMQ、Elasticsearch 和全部内部 RPC 端口。
- 仓库没有证书注入、CA trust、WSS/HTTPS 验证、证书轮换或过期告警契约。
- 因此 token、WebSocket auth、消息和 presigned object requests 在仓库提供的部署路径中没有可验证的传输机密性与服务端身份校验。
Problem or Goal
为所有公开客户端入口和对象存储链路建立可执行的 TLS 信任边界,使正式部署只接受 HTTPS/WSS,S3 HTTPS 必须校验证书,并把内部依赖/RPC 端口限制在非公开网络。
Scope
- 为 Gateway HTTP 与 Push WebSocket 提供统一、可部署的 TLS termination 或原生 TLS profile。
- 禁止正式 profile 直接暴露明文 HTTP/WS;定义可信代理头、客户端地址和升级连接边界。
- S3 HTTPS 默认并强制验证 CA、hostname 和证书有效期,测试环境使用显式测试 CA。
- 只公开必要的客户端端口;MySQL、Redis、RabbitMQ、etcd、ES 和 brpc 端口留在内部网络。
- 定义证书/CA 的 Secret 注入、轮换、回滚、过期告警和启动失败行为。
- 增加 TLS/WSS、无效证书、错误 hostname、明文降级和代理伪造测试。
Non-goals
Acceptance Criteria
Test-first Plan
预留 FN-SEC-07。先在隔离测试栈运行 HTTPS/WSS 与 S3 证书校验用例,当前预期 RED 是客户端入口仅支持明文、S3 接受未验证证书或内部端口可从宿主公开访问。最小 GREEN 先建立 TLS termination、WSS 和 S3 fail-closed,再运行完整 FN-SEC、BVT、WebSocket、Media 与部署 contract。
Risk and Security
错误的 TLS rollout 会造成全量连接失败、WebSocket 无法升级或 presigned URL 不可用。必须支持新旧证书短期重叠、分阶段验证和快速回滚,但不得在正式环境保留明文 fallback。代理头只信任明确 allowlist 的 termination hop;私钥、token、URL 和证书派生指纹不得进入日志。
Architecture Impact
Yes。新增公开 TLS termination/信任边界、证书 Secret 边界和内部网络隔离,改变部署拓扑但不改变业务服务所有权。
Core-flow Impact
Yes。HTTP、WebSocket 和对象直传的传输层与失败行为改变;认证身份、消息顺序、存储真相源和业务 payload 不变。
Required Skill Updates
.agents/skills/chatnow-orienting/references/technology-stack.md
.agents/skills/chatnow-orienting/references/repository-map.md
.agents/skills/chatnow-orienting/references/core-flows.md
.agents/skills/chatnow-testing/references/case-catalog.md
- canonical security/deployment/operations runbook
Target Version
3.0-dev。该版本线当前定义 Gateway、Push 和 Media 的公开传输边界;证据复核于提交
a75fc8721b99e5c0b4421d0c58b5618bbe71ff31。Evidence
gateway/source/gateway_server.h:84-88,207使用明文httplib::Server监听0.0.0.0:9000,仓库没有 TLS termination profile。push/source/connection.hpp:3,13使用websocketpp::config::asio_no_tls,Compose 直接暴露9001。common/infra/s3_client.hpp:61-65可选择 HTTPS scheme,但无条件设置verifySSL=false。docker-compose.yml直接向宿主机暴露 Gateway、Push,以及 etcd、MySQL、Redis、RabbitMQ、Elasticsearch 和全部内部 RPC 端口。Problem or Goal
为所有公开客户端入口和对象存储链路建立可执行的 TLS 信任边界,使正式部署只接受 HTTPS/WSS,S3 HTTPS 必须校验证书,并把内部依赖/RPC 端口限制在非公开网络。
Scope
Non-goals
Acceptance Criteria
verifySSL=false。asio_no_tls、正式verifySSL=false和公开内部端口回归,或仅允许有审计的本地开发豁免。Test-first Plan
预留 FN-SEC-07。先在隔离测试栈运行 HTTPS/WSS 与 S3 证书校验用例,当前预期 RED 是客户端入口仅支持明文、S3 接受未验证证书或内部端口可从宿主公开访问。最小 GREEN 先建立 TLS termination、WSS 和 S3 fail-closed,再运行完整 FN-SEC、BVT、WebSocket、Media 与部署 contract。
Risk and Security
错误的 TLS rollout 会造成全量连接失败、WebSocket 无法升级或 presigned URL 不可用。必须支持新旧证书短期重叠、分阶段验证和快速回滚,但不得在正式环境保留明文 fallback。代理头只信任明确 allowlist 的 termination hop;私钥、token、URL 和证书派生指纹不得进入日志。
Architecture Impact
Yes。新增公开 TLS termination/信任边界、证书 Secret 边界和内部网络隔离,改变部署拓扑但不改变业务服务所有权。
Core-flow Impact
Yes。HTTP、WebSocket 和对象直传的传输层与失败行为改变;认证身份、消息顺序、存储真相源和业务 payload 不变。
Required Skill Updates
.agents/skills/chatnow-orienting/references/technology-stack.md.agents/skills/chatnow-orienting/references/repository-map.md.agents/skills/chatnow-orienting/references/core-flows.md.agents/skills/chatnow-testing/references/case-catalog.md