控制面与数据面之间的双向 TLS
保护控制面(CP)与数据面(DP)之间的通信通道,是保障整个 API7 网关完整性和安全性的基础。所有配置变更、策略更新和指标上报都通过该通道传输。为保护这一关键基础设施,API7 对所有 CP-DP 通信强制启用双向 TLS(mTLS),且无法禁用。这可确保所有传输中数据均经过加密,并且控制面与数据面在交换任何信息之前都能通过密码学方式验证对方身份。
API7 使用成熟的公钥基础设施(PKI)模型管理此过程,相比简单的共享密钥或证书固定方式,具有更高的安全性和可扩展性。即使在多租户环境中,该方式也能确保每个客户的基础设施安全隔离。
API7 中 mTLS 的工作原理
双向 TLS 扩展了标准 TLS 协议,要求客户端和服务器双方都出示并验证证书。在 API7 中,数据面作为客户端发起连接,控制面作为服务器。
该过程遵循标准 PKI 信任模型:
- 信任锚:控制面维护一个自动生成的唯一证书颁发机构(CA)。此 CA 是该 API7 部署唯一的信任根。
- 证书签发:控制面使用其私有 CA 为自身签发唯一的服务器证书,并为每个数据面节点签发客户端证书。
- 握手与验证:数据面节点尝试连接控制面时,会出示客户端证书。控制面验证该证书是否由其可信 CA 签发;同时,数据面使用同一 CA 验证控制面的服务器证书。
这种双向验证确保只有已授权的数据面节点可以连接控制面,数据面节点也只会连接合法的控制面,从而防止中间人攻击和未经授权的配置注入。
CA 和证书管理
API7 旨在尽可能自动且安全地完成证书管理。
自动生成 CA
API7 控制面首次启动时会检查数据库中是否已有 CA。如果未找到 CA,则自动生成新的根 CA。每个客户的部署都有唯一 CA,确保一个客户环境中的证书不会被另一个环境信任。随后,控制面立即使用该 CA 签发建立安全通信所需的服务器和客户端证书。