首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从CherryPy处理程序获取客户端证书信息?

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

Stack Overflow用户
提问于 2020-07-18 23:14:36
回答 1查看 125关注 0票数 1

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

代码语言:javascript
复制
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环境变量。我无法从请求对象中找到任何允许我获取此类信息的方法/属性

如何从请求处理程序获取此变量?

EN

回答 1

Stack Overflow用户

发布于 2020-07-23 04:25:48

我从与CherryPy维护者在Gitter上的一次对话中了解到了答案。

WSGI对象可以包含比source接口中记录的属性更多的属性,这些属性是在创建请求对象作为CherryPy处理的一部分时动态设置的:

https://github.com/cherrypy/cherrypy/blob/master/cherrypy/_cpwsgi.py#L319

代码语言:javascript
复制
...
        request.multithread = self.environ['wsgi.multithread']
        request.multiprocess = self.environ['wsgi.multiprocess']
        request.wsgi_environ = self.environ
...

了解了这一点,要获得包含SSL*变量的WSGI环境,我们只需要通过导入request对象来访问它:

代码语言:javascript
复制
import cherrypy.request
...
print(cherrypy.request.wsgi_environ)
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62970183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档