SSL 证书
API7 企业版(API7 网关)中的 SSL 证书用于加密客户端与网关之间的流量(TLS 终止),以及网关与上游服务之间的流量(重 新加密)。控制面提供集中式证书管理系统,支持自动 SNI 匹配,并可通过外部密钥管理器安全存储证书。
SSL 终止的工作原理
客户端与 API7 网关建立 TLS 连接时,网关使用 TLS 握手中提供的服务器名称指示(SNI)选择相应证书。
SSL 证书字段
API7 网关中的 SSL 实体包含公钥证书、私钥和关联域名(SNI)。
- 名称:证书的描述性名称。
- SNI:服务器名称指示值数组,例如
example.com、*.example.com。网关使用这些值匹配传入连接。 - 证书(Cert/Certs):PEM 编码的公钥证书。可以提供多个证书以支持 RSA/ECC 双协议栈。
- 私钥(Key/Keys):与证书对应的 PEM 编码私钥。
- 客户端 CA:用于双向 TLS(mTLS)。如果提供,网关会使用此 CA 验证客户端证书。
- 类型:目前支持
server,表示网关用来验证客户端请求的证书。
密钥引用
为了增强安全性,API7 网关支持引用存储在外部密钥管理器中的证书和密钥,无需以明文方式提供。
可以在 cert 和 key 字段中使用 $secret:// 或 $env:// 前缀:
- HashiCorp Vault:
$secret://vault/path/to/secret - AWS Secrets Manager:
$secret://aws/secret-id - 环境变量:
$env://CERT_NAME
这样可以确保敏感私钥不会以明文形式保存在控制面数据库中,仅由数据面节点在运行时获取。
证书轮换
API7 网关支持无中断证书轮换。在控制面更新 SSL 实体后,变更会同步到所有数据面节点。网关在内存中替换证书,无需断开活动连接或重新加载。
双向 TLS(mTLS)
要将访问限制为特定客户端,可以向 SSL 实体添加客户端 CA 证书来配置 mTLS。启用后,网关会在 TLS 握手期间请求客户端证书,并使用 client.ca 字段进行验证。缺少客户端证书或证书无效的请求,会在进入任何路由逻辑前被拒绝。
后续步骤
- 保护凭证:管理密钥和敏感数据。
- 控制面与数据面之间的双向 TLS:保护控制面与数据面通信。
- 服务与路由:了解服务与路由如何协同工作。