使用python api和私钥访问谷歌云存储 - 坏握手

时间:2017-06-21 12:46:54

标签: python ssl ssl-certificate google-cloud-storage

我正在尝试使用python google.cloud.storage api访问我的google存储桶,但获得例外:

requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')],)",)

我在GCP中创建了一个服务帐户,将其定义为项目所有者和编辑者,将其定义为存储对象创建者和查看者。我还将其添加为特定的桶对象admin,creator和viewer。我通过凭证页面为此帐户创建了一个私钥(json),我尝试将其用于python客户端。这些都没有奏效。 python代码附在下面:

from google.cloud import storage
client = storage.Client.from_service_account_json('service_account_private_key.json')
bucket = client.get_bucket('bucket-name')
blob = bucket.get_blob('text.txt')
print(blob.download_as_string())

1 个答案:

答案 0 :(得分:0)

您的证书似乎有问题。您可以使用以下代码重现它:

import requests
requests.get(
    # Arbitrary Google API URL
    'https://www.googleapis.com/discovery/v1/apis/storage/v1/rest')

最有可能的情况是,您的系统要么不信任签署Google密钥的证书颁发机构(不太可能),要么就是在防火墙后面用自己的(非常可能)交换真实证书。您可以尝试禁用证书检查,这是您不希望在生产中执行的,以查看是否存在问题:

import requests
requests.get(
    'https://www.googleapis.com/discovery/v1/apis/storage/v1/rest',
    verify=False)