跳到主要内容
版本:3.10.x

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 网关支持引用存储在外部密钥管理器中的证书和密钥,无需以明文方式提供。

可以在 certkey 字段中使用 $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 字段进行验证。缺少客户端证书或证书无效的请求,会在进入任何路由逻辑前被拒绝。

后续步骤