Google云存储网址签名者返回SSL3_GET_SERVER_CERTIFICATE

时间:2015-12-29 13:05:04

标签: google-cloud-storage

我已经成功使用以下脚本signing GCS urls了一段时间。

它基本上只是python请求模块的一个包装器,它根据配置的私钥向U​​RL添加签名。

self.navigationItem.leftBarButtonItem = UIBarButtonItem(image:self.defaultMenuImage(),
                style: UIBarButtonItemStyle.Plain,
                target: self, action: "onSlideMenuButtonPressed:");

我使用的服务帐户将p12密钥转换为pem,并且能够存储和获取资源。

几天前(2015年12月),它停止工作并从python请求模块返回以下错误:

    md5_digest = base64.b64encode(hashlib.md5(data).digest())
    base_url, query_params = self._MakeUrl('PUT', path, content_type,
                                           md5_digest)
    headers = {}
    headers['Content-Type'] = content_type
    headers['Content-Length'] = str(len(data))
    headers['Content-MD5'] = md5_digest
    return self.session.put(base_url, params=query_params, headers=headers,
                            data=data)

禁用请求验证帮助我克服了这个问题,但它不是一个有效的解决方案。

requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

有什么可能导致此问题的想法?什么可能现在触发这个?

由于

1 个答案:

答案 0 :(得分:0)

事实证明,责任在一个名为certifi的软件包上,该软件包是由我项目中的另一个软件包安装的。

certifi包与请求模块集成。拥有较旧版本的openssl并不符合它,并且是许多常见URL的原因(甚至request.get('https://www.google.com'))因此错误而失败。

解决方案可能是升级操作系统,仅更新openssl,或删除certifi包(这将导致一些漏洞)。

欢迎您关注trail ...