专家。
我正在使用ssl制作一个python服务器。所以,我使用的是gevent.pywsgi.WSGIServer。但当我试图传递密钥文件..。这不是传递给_ssl.c的,它是用于python的c库。
我的代码在下面。
rack.append(WSGIServer(('', conf.ssl_port), application, backlog=2500,
keyfile=conf.keyfile, certfile=conf.certfile)) 当然,keyfile有正确的值。但当在_ssl.c的代码中达到此目的时
load_cert_chain_args
在该函数的密钥文件的PyString_Check上,argumnet会造成分割错误。(您可以确认/Python-2.7.5/Module/_ssl.c + 2695行)。
当我确认load_cert_chain_args的密钥文件arg时,我可以看到这个日志。
远程0xd231d4) keyfile=keyfile@entry=(unknown )
但当我确认这个记忆的价值时。
x/s0xd231d4L:“这里有正确的字符串”
我不知道这为什么..。虽然内存中有关于keyfile的适当值。
如果这是可分页问题..。也许我无法看到使用gdb的密钥文件值。
但是我不知道为什么_ssl.c的load_cert_chain使分段错误(PyString_Check(keyfile)).
我也不知道,尽管我可以在内存中看到gdb为什么在远程日志中仍然不知道的原因。
我在Centos 7上使用Python2.7.5,在Centos 7上使用python-gaction1.0-2.el7)。
谢谢。
发布于 2016-04-28 06:07:28
我终于找到了答案。
当我使用安装在CentOS 7.2中的Python2.7.5-34时,
将纯字符串(而不是PyObject )交付给_ssl.c python模块。
对于解决我的问题,下面的链接是非常有用的。
https://github.com/gevent/gevent/issues/702
谢谢!
https://stackoverflow.com/questions/36861051
复制相似问题