SSL:使用 Bigquery 的 CERTIFICATE_VERIFY_FAILED
Posted
技术标签:
【中文标题】SSL:使用 Bigquery 的 CERTIFICATE_VERIFY_FAILED【英文标题】:SSL: CERTIFICATE_VERIFY_FAILED with Bigquery 【发布时间】:2017-06-19 13:58:03 【问题描述】:我正在尝试在 Python 环境中从 Bigquery 查询数据。
我使用服务帐户通过 Bigquery 网站上的 this step 创建了我的凭据,并使用了以下代码。
from google.cloud import bigquery
client = bigquery.Client()
SQLCommand = '''
Some sql command '''
query_results = client.run_sync_query(SQLCommand)
query_results.run()
但是,我遇到了以下错误,我不确定在哪里可以解决此问题。任何建议将不胜感激!
Traceback (most recent call last):
File "<ipython-input-11-88c61e8cf342>", line 1, in <module>
query_results.run()
File "c:\users\xxxx\appdata\local\continuum\anaconda\lib\site- packages\google_cloud_bigquery-0.24.0-py2.7.egg\google\cloud\bigquery\query.py", line 364, in run
method='POST', path=path, data=self._build_resource())
File "c:\users\xxxx\appdata\local\continuum\anaconda\lib\site-packages\google_cloud_core-0.24.1-py2.7.egg\google\cloud\_http.py", line 299, in api_request
headers=headers, target_object=_target_object)
File "c:\users\xxxx\appdata\local\continuum\anaconda\lib\site-packages\google_cloud_core-0.24.1-py2.7.egg\google\cloud\_http.py", line 193, in _make_request
return self._do_request(method, url, headers, data, target_object)
File "c:\users\xxxx\appdata\local\continuum\anaconda\lib\site-packages\google_cloud_core-0.24.1-py2.7.egg\google\cloud\_http.py", line 223, in _do_request
body=data)
File "build\bdist.win-amd64\egg\google_auth_httplib2.py", line 187, in request
self._request, method, uri, request_headers)
File "c:\users\xxxx\appdata\local\continuum\anaconda\lib\site-packages\google_auth-1.0.1-py2.7.egg\google\auth\credentials.py", line 121, in before_request
self.refresh(request)
File "c:\users\xxxx\appdata\local\continuum\anaconda\lib\site-packages\google_auth-1.0.1-py2.7.egg\google\oauth2\service_account.py", line 310, in refresh
request, self._token_uri, assertion)
File "c:\users\xxxx\appdata\local\continuum\anaconda\lib\site-packages\google_auth-1.0.1-py2.7.egg\google\oauth2\_client.py", line 143, in jwt_grant
response_data = _token_endpoint_request(request, token_uri, body)
File "c:\users\xxxx\appdata\local\continuum\anaconda\lib\site-packages\google_auth-1.0.1-py2.7.egg\google\oauth2\_client.py", line 104, in _token_endpoint_request
method='POST', url=token_uri, headers=headers, body=body)
File "build\bdist.win-amd64\egg\google_auth_httplib2.py", line 119, in __call__
raise exceptions.TransportError(exc)
TransportError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
[1]: https://cloud.google.com/docs/authentication/getting-started
【问题讨论】:
只是想知道,您如何为客户端设置凭据?蟒蛇已经完成了吗?您是否将其导出到您的环境中? 是的,我通过 export GOOGLE_APPLICATION_CREDENTIALS=我怀疑这不是 BigQuery 特定的,这个问题的答案之一可能是相关的:
urllib and "SSL: CERTIFICATE_VERIFY_FAILED" Error
基本上,根证书不会与某些 Python 版本一起默认安装,您需要将其作为安装后步骤的一部分。没有根证书,HTTPS 客户端无法检查远程服务器的身份。
短版,您可能需要这样做(取自链接的问题):
“自述文件将让您运行这个安装后脚本,它只安装证书:/Applications/Python\ 3.6/Install\ Certificates.command”
【讨论】:
我不认为这就是原因。我正在使用 Python 2.7 并且我已经安装了 certifi。在 Windows 上,证书存储在我拥有的 ~\lib\site-packages\certifi\cacert.pem 中。我还需要从 BigQuery 下载证书吗?以上是关于SSL:使用 Bigquery 的 CERTIFICATE_VERIFY_FAILED的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 中的数据流/Beam 流式插入导致 SSL 错误
Not hacking CurlException: 60 (cURL SSL Certificate Verification)