安装gcloud时如何解决“CERTIFICATE_VERIFY_FAILED”错误?

4

我尝试在MacOS中安装gcloud但失败了。 我尝试了两个Python版本3.7.4和3.9.1,但都遇到了相同的问题。 我应该如何安装 gcloud ? 还需要其他依赖关系吗?

$ python --version
Python 3.9.1

$ sh install.sh --screen-reader=true
Welcome to the Google Cloud SDK!

To help improve the quality of this product, we collect anonymized usage data
and anonymized stacktraces when crashes are encountered; additional information
is available at <https://cloud.google.com/sdk/usage-statistics>. This data is
handled in accordance with our privacy policy
<https://cloud.google.com/terms/cloud-privacy-notice>. You may choose to opt in this
collection now (by choosing 'Y' at the below prompt), or at any time in the
future by running the following command:

    gcloud config set disable_usage_reporting false

Do you want to help improve the Google Cloud SDK (y/N)?  y

Traceback (most recent call last):
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/urllib3/connectionpool.py", line 667, in urlopen
    self._prepare_proxy(conn)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/urllib3/connectionpool.py", line 930, in _prepare_proxy
    conn.connect()
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/urllib3/connection.py", line 361, in connect
    self.sock = ssl_wrap_socket(
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/urllib3/util/ssl_.py", line 382, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/Users/joey/.pyenv/versions/3.9.1/lib/python3.9/ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "/Users/joey/.pyenv/versions/3.9.1/lib/python3.9/ssl.py", line 1040, in _create
    self.do_handshake()
  File "/Users/joey/.pyenv/versions/3.9.1/lib/python3.9/ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/urllib3/connectionpool.py", line 724, in urlopen
    retries = retries.increment(
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/urllib3/util/retry.py", line 439, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='dl.google.com', port=443): Max retries exceeded with url: /dl/cloudsdk/channels/rapid/components-2.json (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/joey/Downloads/google-cloud-sdk/bin/bootstrapping/install.py", line 232, in <module>
    main()
  File "/Users/joey/Downloads/google-cloud-sdk/bin/bootstrapping/install.py", line 210, in main
    Install(pargs.override_components, pargs.additional_components)
  File "/Users/joey/Downloads/google-cloud-sdk/bin/bootstrapping/install.py", line 151, in Install
    _CLI.Execute(['--quiet', 'components', 'list'])
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 1008, in Execute
    self._HandleAllErrors(exc, command_path_string, specified_arg_names)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 1045, in _HandleAllErrors
    exceptions.HandleError(exc, command_path_string, self.__known_error_handler)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/calliope/exceptions.py", line 551, in HandleError
    core_exceptions.reraise(exc)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/exceptions.py", line 146, in reraise
    six.reraise(type(exc_value), exc_value, tb)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/six/__init__.py", line 693, in reraise
    raise value
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 982, in Execute
    resources = calliope_command.Run(cli=self, args=args)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 809, in Run
    resources = command_instance.Run(args)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/surface/components/list.py", line 102, in Run
    result = update_manager.List(show_hidden=args.show_hidden,
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/update_manager.py", line 714, in List
    to_print, current_version, latest_version = self._GetPrintListWithDiff()
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/update_manager.py", line 750, in _GetPrintListWithDiff
    _, diff = self._GetStateAndDiff(command_path='components.list')
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/update_manager.py", line 641, in _GetStateAndDiff
    latest_snapshot = self._GetLatestSnapshot(version=version,
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/update_manager.py", line 624, in _GetLatestSnapshot
    return snapshots.ComponentSnapshot.FromURLs(
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/snapshots.py", line 178, in FromURLs
    data = [
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/snapshots.py", line 179, in <listcomp>
    (ComponentSnapshot._DictFromURL(
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/snapshots.py", line 204, in _DictFromURL
    response = installers.MakeRequestViaRequests(url, command_path)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/installers.py", line 203, in MakeRequestViaRequests
    return _RawRequestViaRequests(url, headers=headers, timeout=timeout)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/installers.py", line 251, in _RawRequestViaRequests
    return retryer.RetryOnException(
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/util/retry.py", line 195, in RetryOnException
    exceptions.reraise(exc_info[1], tb=exc_info[2])
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/exceptions.py", line 146, in reraise
    six.reraise(type(exc_value), exc_value, tb)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/six/__init__.py", line 693, in reraise
    raise value
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/util/retry.py", line 176, in TryFunc
    return func(*args, **kwargs), None
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/updater/installers.py", line 281, in _ExecuteRequestAndRaiseExceptions
    response = requests_session.get(
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/requests/sessions.py", line 546, in get
    return self.request('GET', url, **kwargs)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/transport.py", line 243, in WrappedRequest
    response = orig_request(*modified_args, **modified_kwargs)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/googlecloudsdk/core/requests.py", line 198, in WrappedRequest
    return orig_request_method(*args, **kwargs)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/Users/joey/Downloads/google-cloud-sdk/lib/third_party/requests/adapters.py", line 514, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='dl.google.com', port=443): Max retries exceeded with url: /dl/cloudsdk/channels/rapid/components-2.json (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)')))

你是否在SSL代理或类似的环境下? - Puteri
不,我不这么认为。我的网络中没有配置任何代理。 - Joey Yi Zhao
你的问题解决了吗? - Priyashree Bhadra
5个回答

14
运行以下命令以禁用SSL验证
gcloud config set auth/disable_ssl_validation  True

1
谢谢!这个命令解决了我在GCLOUD证书方面的问题。 - Rajat Singh
4
这并不能解决运行安装脚本时的问题,因为按照定义,gcloud尚未被安装。 - TheHiggsBroson
2
通常情况下,出于安全原因禁用SSL证书验证是一种不良做法,但这取决于上下文和查询的性质,有时可能是可以接受的。 - kudoku

5

这对我有用:

  1. 解压缩安装程序下载的google-cloud-sdk.zip文件。
  2. 打开google-cloud-sdk\lib\third_party\requests\session.py文件。
  3. 将“self.verify = True”这一行更改为“self.verify = False”。
  4. 在您提取到的根目录中运行install.bat。
  5. 获得收益。

3
将 export CLOUDSDK_PYTHON="/usr/bin/python3" 添加到我的 .zshrc(zshell 配置文件)中,解决了我的问题。我正在使用 Mac。
在将上述内容添加到我的配置文件之前,这个问题一直存在,但我也执行了以下步骤,不确定是否需要这些步骤来解决此问题:
  1. https://www.python.org/downloads/ 安装最新的 Python 3。我使用的是 Python 3.10.4。
  2. 通过转到应用程序文件夹,然后进入 python 3.10 并运行 "Install Certificates.command" 命令来运行 python 3.10 Install Certificates.command。
  3. 将我的企业证书添加到 /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/certifi/cacert.pem 中。

0

这个错误可能有很多原因,代理配置可能是其中之一,但是你提到你的网络没有配置代理,所以原因可能是其他的。为了验证这个错误是否是由于代理引起的,你可以尝试运行以下命令:

$ curl https://dl.google.com/

Output: <a href="https://www.google.com/chrome"> Found  </a>

如果您从上述提到的输出中得到了不同的输出,那么您可能处于代理或门户后面。
您可以参考这个stackoverflow thread,其中一个云支持用户通过提供可能导致此SSL错误的各种可能原因给出了答案,他还提供了解决此错误的解决方法。 如果安装了任何此类软件,请尝试禁用防病毒设置。

是的,我得到了这个输出:“<a href="https://www.google.com/chrome">Found</a>”。但不确定为什么它仍然发生,因为我没有任何关于代理/证书的配置。 - Joey Yi Zhao
好的,你可以在答案中参考提供的线程,其中提到了各种原因以及解决方法,请检查并回复。 - Divyani Yadav
如果安装了防病毒软件,请尝试禁用其设置。 - Divyani Yadav
@JoeyYiZhao,我的回答有帮助吗? - Divyani Yadav

0
如果有人在Windows上遇到这个问题,我找不到Matt D提到的google-cloud-sdk.zip文件,但是在安装失败后,我在以下位置找到了提取的文件:
C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk
使用这个文件夹位置,我按照Matt D概述的步骤完成了安装。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接