gpt4 book ai didi

ssl - 如何从 CherryPy 处理程序获取 SSL 客户端证书信息?

转载 作者:行者123 更新时间:2023-12-04 22:43:09 25 4
gpt4 key购买 nike

我能够使用以下代码将 CherryPy HTTPServer 设置为需要 SSL 客户端证书:

ssl_certificate = os.environ.get("SSL_CERTIFICATE")
ssl_adapter = BuiltinSSLAdapter(
certificate=ssl_certificate,
private_key=os.environ["SSL_PRIVATE_KEY"],
certificate_chain=os.environ.get("SSL_CERTIFICATE_CHAIN")
)
verify_mode = ssl.CERT_REQUIRED
ssl_adapter.context.verify_mode = verify_mode
HTTPServer.ssl_adapter = ssl_adapter
现在我试图从我的请求处理程序中获取 SSL 客户端认证信息,但我不知道如何。看完 https://github.com/cherrypy/cheroot/blob/master/cheroot/ssl/builtin.py#L419似乎应该用 SSL_CLIENT* 变量填充 wsgi 环境变量。我无法从请求对象中找到任何方法/属性将允许我获取此类信息
如何从请求处理程序中获取这些变量?

最佳答案

我从与 Gitter 上的 CherryPy 维护者的对话中了解到了答案。
CherryPy 请求对象可能包含比 API source 中记录的属性更多的属性。 ,一旦请求对象被创建为 WSGI 处理的一部分,这些属性就会被动态设置:
https://github.com/cherrypy/cherrypy/blob/master/cherrypy/_cpwsgi.py#L319

...
request.multithread = self.environ['wsgi.multithread']
request.multiprocess = self.environ['wsgi.multiprocess']
request.wsgi_environ = self.environ
...
知道了这一点,要获得包含 SSL* 变量的 WSGI 环境,我们只需要通过导入请求对象来访问它:
import cherrypy.request
...
print(cherrypy.request.wsgi_environ)
...

关于ssl - 如何从 CherryPy 处理程序获取 SSL 客户端证书信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62970183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com