首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boto在ssl.c中不断崩溃

问Boto在ssl.c中不断崩溃
EN

Stack Overflow用户
提问于 2013-02-28 05:08:12
回答 2查看 604关注 0票数 2

当我们尝试打开一个连接时,每3个连接(大致)就有一次boto崩溃。

在它离开python之前,我打印了所有的参数,每个连接上的参数都是相同的。

下面是堆栈跟踪:

代码语言:javascript
复制
boto/sqs/connection.pyc in get_queue(self, queue_name)
    292         :returns: The requested queue, or ``None`` if no match was found.
    293         """
--> 294         rs = self.get_all_queues(queue_name)
    295         for q in rs:
    296             if q.url.endswith(queue_name):

boto/sqs/connection.pyc in get_all_queues(self, prefix)
    281         if prefix:
    282             params['QueueNamePrefix'] = prefix
--> 283         return self.get_list('ListQueues', params, [('QueueUrl', Queue)])
    284 
    285     def get_queue(self, queue_name):

boto/connection.pyc in get_list(self, action, params, markers, path, parent, verb)
    880         if not parent:
    881             parent = self
--> 882         response = self.make_request(action, params, path, verb)
    883         body = response.read()
    884         boto.log.debug(body)

boto/connection.pyc in make_request(self, action, params, path, verb)
    866         if self.APIVersion:
    867             http_request.params['Version'] = self.APIVersion
--> 868         return self._mexe(http_request)
    869 
    870     def build_list_params(self, params, items, label):

boto/connection.pyc in _mexe(self, request, sender, override_num_retries, retry_handler)
    792             raise BotoServerError(response.status, response.reason, body)
    793         elif e:
--> 794             raise e
    795         else:
    796             msg = 'Please report this exception as a Boto Issue!'

SSLError: _ssl.c:316: Invalid SSL protocol variant specified.

下面是相关的C代码:

代码语言:javascript
复制
PySSL_BEGIN_ALLOW_THREADS
if (proto_version == PY_SSL_VERSION_TLS1)
    self->ctx = SSL_CTX_new(TLSv1_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL3)
    self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL2)
    self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
else if (proto_version == PY_SSL_VERSION_SSL23)
    self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
PySSL_END_ALLOW_THREADS

if (self->ctx == NULL) {
    errstr = ERRSTR("Invalid SSL protocol variant specified.");
    goto fail;
}

我们已经打印了proto_version,它总是PY_SSL_VERSION_SSL23,我认为SSL_CTX_new失败是因为某些原因。

你知道会出什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-28 06:27:41

原来这是因为我们加载的一个证书在某种程度上可能是错误的,奇怪的是为什么它每次都不会崩溃。

不管怎样,删除证书就解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2017-07-29 20:41:52

证书最新版本存在一些问题,因此将证书降级可以解决这些问题

代码语言:javascript
复制
pip uninstall -y certifi && pip install certifi==2015.04.28

                            or 

pip install requests[security]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15122452

复制
相关文章

相似问题

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