TLS 与 mTLS
AISIX AI 网关会在四个不同位置使用 TLS。请配置部署连接所涉及的每个区域。
| 连接 | 配置区域 | 用途 |
|---|---|---|
| 调用方到 AISIX | proxy.tls,或 proxy.listeners 条目上的 tls | 在代理监听器上终止 HTTPS |
| AISIX 到上游 | upstream.tls、provider_key.tls | 决定 AISIX 调用上游时信任哪些证书 |
| AISIX 到 etcd | etcd.tls | 验证 etcd 服务器并提供 AISIX 客户端身份 |
| AISIX 网关到控制面 | managed.* 证书包字段 | 向 AISIX Cloud 控制面认证 AISIX 网关 |
这些设置彼此独立。在代理监听器上启用 HTTPS 不会配置 etcd mTLS;信任上游的私有证书颁发机构不会影响 etcd;AISIX Cloud 证书包也不会替代监听器 TLS。
配置监听器 TLS
当 AISIX 需要直接在某个代理监听器上终止 HTTPS 时,请使用监听器 TLS。
proxy.tls 用于配置 proxy.addr 所描述的那一个监听器,使该监听器提供 HTTPS 而非明文 HTTP:
proxy:
addr: "0.0.0.0:3000"
tls:
cert_file: "/etc/aisix/tls/proxy.crt"
key_file: "/etc/aisix/tls/proxy.key"
如果还需要同时保留一个明文端口,请显式声明全部监听 器,参阅同时提供 HTTPS 和 HTTP。
监听器 TLS 保护进入该监听器的入站流量,但不能证明 AISIX 可以连接 etcd、访问 AISIX Cloud 控制面或向上游模型服务提供方认证。
同时提供 HTTPS 和 HTTP
一个网关可以同时响应 HTTPS 和明文 HTTP。配置 proxy.listeners,每个端口一个条目,并把证书放在应当提供该证书的条目上:
proxy:
addr: "0.0.0.0:3000"
listeners:
- addr: "0.0.0.0:3443"
tls:
cert_file: "/etc/aisix/tls/proxy.crt"
key_file: "/etc/aisix/tls/proxy.key"
- addr: "0.0.0.0:3000"
仅通过环境变量配置网关的部署,需要把整个列表作为一个 JSON 数组传入。AISIX_PROXY__LISTENERS__0__ADDR 这类带下标的变量不起作用:
AISIX_PROXY__LISTENERS='[{"addr":"0.0.0.0:3443","tls":{"cert_file":"/etc/aisix/tls/proxy.crt","key_file":"/etc/aisix/tls/proxy.key"}},{"addr":"0.0.0.0:3000"}]'
该字段遵循三条规则:
proxy.listeners就是代理监听器的完整集合。 只有列表中的地址会被绑定。proxy.addr仍然是必填字段,但不会被绑定,网关会在启动时记录一行日志说明这一点:proxy.addr is ignored because proxy.listeners is set — proxy.listeners is the complete set of proxy listeners。proxy.tls不能与proxy.listeners同时使用。 它属于proxy.addr所描述的那个监听器,而该监听器已被proxy.listeners取代,因此一份不会被任何监听器使用的证书会让启动失败并报告proxy.tls cannot be combined with proxy.listeners,而不是被静默丢弃。请把证书移到应当提供它的那个条目上。- 两个条目不能使用同一个地址。 地址重复会让启动失败并报告
proxy.listeners[i].addr … is already bound by proxy.listeners[j],因为监听器会设置SO_REUSEPORT,否则它们会同时绑定成功,并随机以 TLS 或明文响应。
不配置 proxy.listeners 或将其留空,则保持 proxy.addr 加 proxy.tls 的单监听器行为不变。
每个监听器提供相同的路由,并共享同一份配置与状态:认证、限流、MCP、A2A,以及 /livez 和 /readyz 健康检查路由。TLS 以及通过 ALPN 协商的 HTTP/2 按监听器生效。每个监听器在绑定时都会记录一行日志,aisix listening (http) 或 aisix listening (https),并带上它的 addr,因此启动日志会明确显示哪些端口已就绪、各自使用哪种协议。
明文监听器上传输的调用方 API 密钥和提示词内容都是明文。请只把它绑定到可信的网络接口,其他流量继续使用 HTTPS 监听器。
这是网关启动配置,而不是 AISIX Cloud 控制面下发的资源,因此需要在每个网关上分别设置。admin 监听器不受影响,仍然使用自己的 admin.addr 和 admin.tls 设置。