centos 7.2 python 2.7.5 WSGIServer无法提供密钥文件参数

时间:2016-04-26 09:40:14

标签: python ssl centos gevent

专家。

我正在使用ssl创建一个python服务器。 所以,我使用gevent.pywsgi.WSGIServer。 但是当我尝试提供密钥文件时...那不是传递给_ssl.c,这是cthon for python。

我的代码在下面..

rack.append(WSGIServer(('', conf.ssl_port), application, backlog=2500,  
                    keyfile=conf.keyfile, certfile=conf.certfile))  

当然,keyfile具有正确的值。但是当在_ssl.c的代码

达到这个时
  

load_cert_chain_args

关于该函数的密钥文件argumnet的PyString_Check会导致分段错误。 (您可以确认/Python-2.7.5/Module/_ssl.c + 2695行)。

当我确认load_cert_chain_args' keyfile arg,我可以看到这个日志。

keyfile = keyfile @ entry =(远程0xd231d4未知)

但是当我确认这个记忆的价值时。

x / s 0xd231d4L:"正确的字符串在这里"

我不知道为什么会这样做..虽然在内存中有关于密钥文件的正确价值。

如果这是pagetable问题..也许我无法使用gdb查看密钥文件值。

但我不知道为什么_ssl.c load_cert_chain 会造成Segmemtation 错误( PyString_Check(密钥文件) )。

我不知道虽然我可以看到内存中的值为什么gdb在远程日志中仍然是未知的。

我在Centos 7上使用Python 2.7.5并使用python-gevent 1.0-2.el7)。

THX。

1 个答案:

答案 0 :(得分:0)

最后我找到了答案。

当我使用安装在CentOS 7.2中的Python 2.7.5-34时,

将纯字符串作为PyObject传递给_ssl.c python c模块。

为了解决我的问题,下面的链接真有帮助。

https://github.com/gevent/gevent/issues/702

谢谢!