REST-вызов sslCertificate.insert завершается неудачно с «SSL-сертификат не может быть проанализирован», но gcloud работает нормально - PullRequest
0 голосов
/ 08 февраля 2019

Вот пример программы, которая генерирует ошибку:

import urllib3
import certifi
from google.auth.transport.urllib3 import AuthorizedHttp
from google.oauth2 import service_account
import boto3
from pprint import pprint
import json

# parameters

JSON_SERVICE_ACCOUNT_FILE = "/home/mwilbert/gcp/matt-vm-service-account.json"
SCOPES = [
  'https://www.googleapis.com/auth/devstorage.read_write',
  'https://www.googleapis.com/auth/compute'
]

TEST_PROJECTID = 'mwilbert-workspace'
TEST_FULLCHAIN_FILE = '/etc/letsencrypt/live/fake.mapgeo.io/fullchain.pem'
TEST_PRIVKEY_FILE = '/etc/letsencrypt/live/fake.mapgeo.io/privkey.pem'

http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED',ca_certs=certifi.where())
credentials = service_account.Credentials.from_service_account_file(JSON_SERVICE_ACCOUNT_FILE)
scoped_credentials = credentials.with_scopes(SCOPES)
authed_http = AuthorizedHttp(scoped_credentials,http)

requestBody = {
  "name":"deleteme",
  "description": "fake domain cert",
  "certificate": TEST_FULLCHAIN_FILE,
  "privateKey": TEST_PRIVKEY_FILE,
}
rb = json.dumps(requestBody)
url = 'https://www.googleapis.com/compute/v1/projects/%s/global/sslCertificates' % TEST_PROJECTID
r = authed_http.urlopen('POST',
                        url,
                        headers={'Content-Type': 'application/json'},
                        body=rb)

response = json.loads(r.data)
pprint(response)

Однако, если я передаю те же аргументы в gcloud

gcloud compute ssl-certificates create deleteme
--certificate=/etc/letsencrypt/live/fake.mapgeo.io/fullchain.pem
--private-key=/etc/letsencrypt/live/fake.mapgeo.io/privkey.pem
--description="fake domain cert" --project=mwilbert-workspace

из того же сеанса терминала, сертификатсоздано.Сертификат в формате .PEM.

Кто-нибудь получил этот вызов на работу?Если да, то какие-нибудь указатели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...