无法让Google Cloud Platform识别JSON服务帐户密钥文件。错误:PyOpenSSL不可用。建议使用JSON,但我使用的是JSON密钥

时间:2017-07-12 17:46:25

标签: json google-cloud-platform

我是一个彻头彻尾的新手,所以原谅可能是一个愚蠢的问题,但当我尝试使用Google Cloud Platform传递我的服务帐户密钥文件的位置时,我收到的消息是:

WARNING: .p12 service account keys are not recomended unless it is necessary for
 backwards compatability. Please switch to a newer .json service account key for
 this account.
ERROR: (gcloud.auth.activate-service-account) PyOpenSSL is not available. If you
 have already installed PyOpenSSL, you will need to enable site packages by sett
ing the environment variable CLOUDSDK_PYTHON_SITEPACKAGES to 1. If that does not
 work, see https://developers.google.com/cloud/sdk/crypto for details or consider using .json private key instead.

但是我选择并下载了一个JSON密钥。谁能告诉我发生了什么以及如何解决这个问题?不确定我是否提供足够的信息,所以请询问您是否需要详细信息。谢谢!

2 个答案:

答案 0 :(得分:0)

该错误表示您可能正在使用已弃用的p12格式服务帐户密钥文件(以及无法找到以该格式读取密钥所需的加密库)而不是json格式。

您可能想要双重确认您下载的密钥文件确实是JSON。验证这一点的一种快捷方法是在某个文本编辑器中打开此文件,如果您在*nixOS X,则可以使用cat。我已经展示了一个示例json服务帐户密钥文件:

$ cat my-service-account-key.json
{
  "type": "service_account",
  "project_id": "PROJECT_NAME",
  "private_key_id": "YOUR_PRIVATE_KEY_ID",
  "private_key": "-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY\n-----END PRIVATE KEY-----\n",
  "client_email": "SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com",
  "client_id": "CLIENT_ID",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "URL",
}

要激活服务帐户,您必须运行gcloud auth activate-service-account命令:

gcloud auth activate-service-account --key-file=/path/to/service-account-key.json

答案 1 :(得分:0)

密钥必须必须基于base64进行编码,您可以使用以下bash命令进行操作:

$ cat key_file.json | base64


在以下位置查看gcloud设置说明: https://github.com/GoogleCloudPlatform/github-actions/tree/master/setup-gcloud#inputs