centos 7.2 python 2.7.5 WSGIServer 无法传递密钥文件参数

centos 7.2 python 2.7.5 WSGIServer can't deliver keyfile argument

专家。

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

的 c 库

我的代码如下..

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

当然,密钥文件有正确的值。但是当达到 _ssl.c 的代码时

load_cert_chain_args

在该函数的 PyString_Check 上,keyfile argumnet 出现分段错误。 (可以确认/Python-2.7.5/Module/_ssl.c + 2695行)

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

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

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

x/s 0xd231d4L : "correct string is in here"

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

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

但我不知道为什么 _ssl.c 的 load_cert_chain 进行分段 故障(PyString_Check(密钥文件))。

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

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

谢谢。

终于找到答案了

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

将纯字符串而不是 PyObject 传递给 _ssl.c python c 模块。

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

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

谢谢!