Google cloud storage Google云存储URL签名者返回SSL3\u获取\u服务器\u证书

Google cloud storage Google云存储URL签名者返回SSL3\u获取\u服务器\u证书,google-cloud-storage,Google Cloud Storage,我已经成功地使用以下脚本一段时间了 它基本上只是python请求模块的包装器,它根据提供的私钥向url添加签名 md5_digest = base64.b64encode(hashlib.md5(data).digest()) base_url, query_params = self._MakeUrl('PUT', path, content_type, md5_digest) hea

我已经成功地使用以下脚本一段时间了

它基本上只是python请求模块的包装器,它根据提供的私钥向url添加签名

    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)
我使用了一个服务帐户,将p12密钥转换为pem,并能够存储和获取资源

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

requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
禁用请求验证帮助我克服了这个问题,但这不是一个有效的解决方案

self.session.verify = False
有没有关于是什么导致了这个问题的想法?现在是什么触发了这一切


谢谢

事实证明,责任在于名为的包,它是我项目中的另一个包根据需要安装的

certifi软件包与请求模块集成。使用较旧版本的openssl并不符合这一要求,这是导致许多常见URL(甚至是requests.get(“”))因此错误而失败的原因

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


欢迎您关注…

事实证明,责任在于一个名为的包,它是由我项目中的另一个包按要求安装的

certifi软件包与请求模块集成。使用较旧版本的openssl并不符合这一要求,这是导致许多常见URL(甚至是requests.get(“”))因此错误而失败的原因

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


欢迎您遵循…

使用gsutil signurl时是否会出现相同的错误?如果您在StackOverflow上查找此错误的类似实例,通常会在您的计算机上的证书颁发机构发生更改时发生。请参阅使用CURL获取由gsutils生成的url效果良好。此外,我的脚本与curl一起使用时生成的url似乎也能正常工作。为什么与requests模块(2.9.1)一起使用的签名url会在curl工作的同一台机器上产生此错误?显然,我的项目中与requests模块一起安装的某个其他包会触发此错误。当在干净的环境中运行时,它工作得很好。事实证明,这是由于一个名为certifi的包被安装为另一个包的要求。此软件包与“请求”模块集成。使用较旧版本的openssl不符合这一要求,并且会导致许多常见URL(甚至)出错。更新openssl可能很棘手。欢迎您继续追踪。。。既然问题已经解决,你应该发布一个关于这个问题的自我回答。祝你好运!使用gsutil signurl时是否会出现相同的错误?如果您在StackOverflow上查找此错误的类似实例,通常会在您的计算机上的证书颁发机构发生更改时发生。请参阅使用CURL获取由gsutils生成的url效果良好。此外,我的脚本与curl一起使用时生成的url似乎也能正常工作。为什么与requests模块(2.9.1)一起使用的签名url会在curl工作的同一台机器上产生此错误?显然,我的项目中与requests模块一起安装的某个其他包会触发此错误。当在干净的环境中运行时,它工作得很好。事实证明,这是由于一个名为certifi的包被安装为另一个包的要求。此软件包与“请求”模块集成。使用较旧版本的openssl不符合这一要求,并且会导致许多常见URL(甚至)出错。更新openssl可能很棘手。欢迎您继续追踪。。。既然问题已经解决,你应该发布一个关于这个问题的自我回答。祝你好运!