【发布时间】:2018-10-17 07:48:00
【问题描述】:
更新 (2019-02-07):issue 现已修复,所以如果您仍然遇到此问题,请尝试 gcloud components update。
在过去几个月的某个时间点,我的 bq 工具停止工作。即使是简单的事情也会显示此错误:
$ bq show
BigQuery error in show operation: Cannot contact server. Please try again.
Traceback: Traceback (most recent call last):
File "/opt/google-cloud-sdk/platform/bq/bigquery_client.py", line 685, in BuildApiClient
response_metadata, discovery_document = http.request(discovery_url)
File "/opt/google-cloud-sdk/platform/bq/third_party/oauth2client_4_0/transport.py", line 176, in new_request
redirections, connection_type)
File "/opt/google-cloud-sdk/platform/bq/third_party/oauth2client_4_0/transport.py", line 283, in request
connection_type=connection_type)
File "/opt/google-cloud-sdk/platform/bq/third_party/httplib2/__init__.py", line 1626, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/opt/google-cloud-sdk/platform/bq/third_party/httplib2/__init__.py", line 1368, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/opt/google-cloud-sdk/platform/bq/third_party/httplib2/__init__.py", line 1288, in _conn_request
conn.connect()
File "/opt/google-cloud-sdk/platform/bq/third_party/httplib2/__init__.py", line 1082, in connect
raise SSLHandshakeError(e)
SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)
我尝试了以下方法:
-
sudo gcloud components update(版本 221.0.0)。 -
sudo pacman -Syu(系统更新)获取最新的 SSL 证书集。这是 Arch Linux,几乎总是最前沿。 -
sudo gcloud components reinstall。 - 卸载
google-cloud-sdk,清除剩余的/opt/google-cloud-sdk并完全从 AUR 重新安装。 - 添加
--httplib2_debuglevel=3(有效值未记录,找到值3here)。这不会提供任何额外的输出。 - 添加
--ca_certificates_file=/etc/ca-certificates/extracted/tls-ca-bundle.pem、--ca_certificates_file=/etc/ca-certificates/extracted/ca-bundle.trust.crt和--ca_certificates_file=/etc/ssl/certs/ca-certificates.crt之一,其中之一肯定是我系统上的根证书捆绑包。其中最后一个是 curl 使用的,它可以与www.googleapis.com通话。 - 查看源代码发现
/opt/google-cloud-sdk/platform/bq/third_party/httplib2/cacerts.txt是默认使用的证书包。如果我用curl --cacert ...试试这个,它仍然有效。 - 在这个 shell 中设置
GOOGLE_APPLICATION_CREDENTIALS环境变量。正如预期的那样,这也没有什么不同。 SSL 错误发生在bq甚至有机会开始 OAuth 握手之前。 - 添加
--disable_ssl_validation。这“有效”,但显然不安全。
其他人看到这个,或者有如何调试/解决的想法?
【问题讨论】:
-
我想知道这是否与 Python OpenSSL 本身有关。如果您尝试使用
requests与任何安全 URL 建立 SSL 连接,它是否有效?也许更新 pyopenssl 和 http2 也可能会改变一些东西。 -
我今天遇到同样的错误,更新到 Ubuntu 18.10 后,暂时使用 --disable_ssl_validation 虽然不推荐
-
可能与新的 Ubuntu 18.10 有关?因为我也安装了它。
标签: ssl google-bigquery ssl-certificate gcloud google-cloud-sdk