我已经成功使用以下脚本signing GCS urls了一段时间。
它基本上只是python请求模块的一个包装器,它根据配置的私钥向URL添加签名。
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
有什么可能导致此问题的想法?什么可能现在触发这个?
由于
答案 0 :(得分:0)
事实证明,责任在一个名为certifi的软件包上,该软件包是由我项目中的另一个软件包安装的。
certifi包与请求模块集成。拥有较旧版本的openssl并不符合它,并且是许多常见URL的原因(甚至request.get('https://www.google.com'))因此错误而失败。
解决方案可能是升级操作系统,仅更新openssl,或删除certifi包(这将导致一些漏洞)。
欢迎您关注trail ...