Python Uvicorn –获取SSL证书信息

问题描述 投票:1回答:1

我有一个gunicorn + uvicorn + fastApi堆栈。(基本上,我正在使用https://hub.docker.com/r/tiangolo/uvicorn-gunicorn-fastapi docker映像。)>

我已经通过提供适当的gunicorn配置选项实现了基于SSL的身份验证:certfile,keyfile,ca_certs,cert_reqs。而且效果很好:用户必须提供客户端SSL证书才能进行API调用。

现在,我需要获取客户端证书数据并将其进一步传递(将其添加到请求标头中)到我的应用程序中,因为它包含一些客户端凭据。例如,我通过覆盖gunicorn.workers.sync.SyncWorkerhttps://gist.github.com/jmvrbanac/089540b255d6b40ca555c8e7ee484c13找到了一种使用gunicorn worker的方法。

但是有没有一种方法可以使用UvicornWorker执行相同的操作?我试图查看UvicornWorker的源代码,但没有找到解决方法。

我深入研究了Uvicorn源代码,据我了解,为了访问客户端TLS证书数据,我需要对python asyncio库(https://docs.python.org/3/library/asyncio-eventloop.html)以及服务器([C0 ])类,并覆盖某些https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.Server的方法。我仍然不太确定是否有可能达到预期的效果。

我有一个gunicorn + uvicorn + fastApi堆栈。 (基本上,我正在使用https://hub.docker.com/r/tiangolo/uvicorn-gunicorn-fastapi docker镜像)。我已经通过...

python ssl certificate gunicorn uvicorn
1个回答
0
投票

我最终在服务器前设置了nginx(Openresty),并添加了一个脚本来获取客户端证书并将其放入标头中。

这是我的nginx配置的一部分:

© www.soinside.com 2019 - 2024. All rights reserved.