OpenAI Mutual TLS 允许组织为其 OpenAI API 流量配置一层额外的安全保护。配置完成后,应将 API 请求发送到 https://mtls.api.openai.com(欧盟数据驻留客户则发送到 https://mtls-eu.api.openai.com),并且只有在提供正确的 API 密钥和客户端证书时,流量才会被接受。mTLS 不适用于 https://platform.openai.com 仪表板。此功能目前处于 beta 阶段。
如何设置 mTLS 集成?
在设置导航栏上,你会看到一个“Mutual TLS”选项卡。
上传证书
激活证书
上传证书后,下一步是激活你的证书。证书为项目激活后,发送到该项目的所有 API 请求也将开始要求提供相应的客户端证书。如果一个项目激活了多个证书,你可以传入任何相应的客户端证书。如果证书为组织激活,它将适用于所有 API 请求,并由所有项目“继承”。
CA 证书要求
你可以上传任何满足以下要求的 PEM 格式 X.509 CA 证书:
直接签署你计划用于发起请求的客户端证书
具有 Certificate Authority、Subject Key Identifier 和 Authority Key Identifier(KeyIdentifier 格式)扩展
具有 Key Usage:“Certificate Sign, CRL Sign”权限
不会在 1 天内过期
证书总大小必须小于 16kb。
客户端证书要求
客户端证书必须由你预先上传的证书直接签署。目前,我们仅支持单级证书链。除此之外,你的客户端证书必须满足以下要求:
具有 Subject Key Identifier 和 Authority Key Identifier 扩展(KeyIdentifier 格式)
具有 Key Usage:“Digital Signature, Key Encipherment”权限
具有 Extended Key Usage:“TLS Web Client Authentication”权限
具有 Subject Alternate Name 扩展
常见问题
我可以通过 API 配置 mTLS 吗?
可以——你可以在 https://platform.openai.com/docs/api-reference/ 查看 API 参考以获取更多信息。
哪些端点支持 mTLS?
在此 Beta 阶段,mTLS 正式支持以下端点:
/v1/chat/completions (with all supported extensions e.g. image, audio, streaming, etc.)/v1/completions/v1/embeddings/v1/audio/transcriptions/v1/audio/speech/v1/files/v1/batches/v1/responses/v1/images/v1/moderations/v1/realtime (via server-side web sockets)/v1/fine_tuning/v1/tunnels
如何随请求发送客户端证书?
对于 cURL 请求,你可以使用 --cert 和 --key 选项(参见此处的手册页)。在大多数其他 HTTP 客户端中,也有传递客户端证书的方法。示例:Python 中的 requests,JS 中的 fetch。通过我们的官方 SDK,我们也支持覆盖 HTTP 客户端——请参见此处的 Python 示例。
在对生产流量强制执行 mTLS 之前,请确保你使用的 HTTP 客户端能够妥善处理客户端证书请求(有些不能,例如某些浏览器中的 WebSockets)。请注意,我们的服务器不会在客户端证书请求中提供 certificate_authorities 列表。
谁可以访问和修改证书?
通过 https://platform.openai.com/settings/organization/mtls 仪表板 UI,组织所有者可以访问和修改证书。任何拥有 Admin API Key(https://platform.openai.com/settings/organization/admin-keys)的人也可以访问/修改证书,但请注意——如果你在组织级别激活 Mutual TLS,这些 API 请求也将被强制要求使用证书。所有 mTLS 更改都会显示在审核日志中。
我可以拥有多少个证书?
每个组织最多可以上传 50 个证书,这些证书可在项目之间共享,但不能与其他组织共享。你可以一次为 10 个项目原子地激活/停用一个证书。或者,你可以一次为你的组织或 1 个特定项目激活/停用 10 个证书。
我可以更新或删除证书吗?
你可以更新证书名称,但不能更新其内容。如果证书当前未在任何范围内处于活动状态,你也可以删除它们。
证书吊销如何工作?
目前,我们不支持 CRL 或 OCSP 装订。建议的替代方案是改为删除或轮换你的 API 密钥。你也可以替换 CA 证书,或使用有效期更短的客户端证书。
我可以使用更长的证书链吗?
目前,我们仅支持单级链——也就是说,你的 CA 证书应直接签署你的客户端证书。如有其他问题,请联系你的客户总监。
推荐的设置是什么?
初始设置此功能时,我们建议从不承载正式生产流量的暂存项目开始。利用这个机会确认你的证书已在机器上正确设置,并且你可以成功发送 API 流量。除此之外,我们建议咨询你组织的安全团队,以充分了解你的需求。
额外支持
你可以通过仪表板和 API 完全自助使用 mTLS 功能。不过,如果你想先以影子模式启用 mTLS,请联系你的客户总监,或通过本页右下角发起新聊天来提交支持工单。
附录:术语
CA 证书:你信任的证书之一,它已直接签署你将随请求发送的客户端证书。欢迎使用自签名 CA 证书。
上传证书:向你的账户添加 CA 证书。它尚未在任何位置用于强制执行 mTLS,但你可以开始配置它。
范围:特定项目或你的整个组织。
在某个范围激活 CA 证书:专门为该范围启用 mTLS,并且所有基于 API 密钥的请求都需要提供由该 CA 证书签署的客户端证书。
在某个范围停用 CA 证书:在该范围内禁用使用此证书来验证请求。如果该范围没有剩余证书,mTLS 实际上会被关闭。
继承证书:如果你为组织激活证书,它也会为所有项目激活。
