如何在 Starlette/FastAPI 中进行客户端证书验证 (mTLS)

How to do client certificate verification (mTLS) in Starlette/FastAPI

我正在考虑使用 FastAPI 框架来实现相当简单的 API,但它需要支持 mTLS。 AFAIK FastAPI 基于 Starlette。是否可以在 Starlette 中检查客户端证书?

否,根据 Starlette documentation, you may use a HTTPSRedirectMiddleware to force use of https, but no certificate verification is natively implemented in Starlette

您可以自己重新实现证书验证,但这会很脏...在我看来,最好的办法是直接在网络服务器或中间件上处理证书验证。

您可以使用 uwsgi to treat client certificate authentification or (re-)implement your api using Flask + Gunicorn which will allow you to do client certificate verification. (e.g here)