library google example engine clients app apiclient python google-app-engine ssl google-api-python-client

python - google - Certificado SSL no válido y/o faltante para la URL cuando se llama a apiclient.discovery.build



library api (2)

Según el número 13477 de App Engine , parece que algunos de los certificados encontrados en urlfetch_cacerts.txt que están incluidos en el App Engine Python SDK / gcloud-sdk App Engine Python SDK caducaron el 2017-01-01 .

Como una solución temporal, puede reemplazar los contenidos de <your-cloud-sdk-path>/platform/google_appengine/lib/cacerts/urlfetch_cacerts.txt con https://curl.haxx.se/ca/cacert.pem

Así que estoy ejecutando mi punto final de google localmente con dev_appserver.py . Uso el explorador API para probar la aplicación.

El código que estoy usando para crear el Servicio, para que pueda llamar a la API es el siguiente:

from apiclient.discovery import build from oauth2client.client import GoogleCredentials credentials = GoogleCredentials.get_application_default() service = build(''speech'', ''v1beta1'', credentials=credentials)

Recibo un error SSL (certificado SSL no válido o faltante), aunque cuando accedo a la URL indicada mediante el navegador funciona bien (es decir, aparece el candado verde).

No estoy seguro de qué cambió, pero esto funcionaba bien no hace mucho tiempo.

Traté de desactivar la verificación SSL, pero no pude.

Registros completos a continuación:

INFO 2017-01-02 03:12:02,724 discovery.py:267] URL being requested: GET https://www.googleapis.com/discovery/v1/apis/speech/v1beta1/rest?userIp=0.2.0.3 ERROR 2017-01-02 03:12:03,022 wsgi.py:263] Traceback (most recent call last): File "/home/vini/opt/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) File "/home/vini/opt/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler handler, path, err = LoadObject(self._handler) File "/home/vini/opt/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject obj = __import__(path[0]) File "/mnt/b117/home/vini/udacity/cerci-endpoint/api.py", line 28, in <module> service = build(''speech'', ''v1beta1'', credentials=credentials) File "/mnt/b117/home/vini/udacity/cerci-endpoint/lib/oauth2client/_helpers.py", line 133, in positional_wrapper return wrapped(*args, **kwargs) File "/mnt/b117/home/vini/udacity/cerci-endpoint/lib/googleapiclient/discovery.py", line 222, in build cache) File "/mnt/b117/home/vini/udacity/cerci-endpoint/lib/googleapiclient/discovery.py", line 269, in _retrieve_discovery_doc resp, content = http.request(actual_url) File "/mnt/b117/home/vini/udacity/cerci-endpoint/lib/httplib2/__init__.py", line 1609, in request (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) File "/mnt/b117/home/vini/udacity/cerci-endpoint/lib/httplib2/__init__.py", line 1351, in _request (response, content) = self._conn_request(conn, request_uri, method, body, headers) File "/mnt/b117/home/vini/udacity/cerci-endpoint/lib/httplib2/__init__.py", line 1307, in _conn_request response = conn.getresponse() File "/home/vini/opt/google-cloud-sdk/platform/google_appengine/google/appengine/dist27/gae_override/httplib.py", line 532, in getresponse raise HTTPException(str(e)) HTTPException: Invalid and/or missing SSL certificate for URL: https://www.googleapis.com/discovery/v1/apis/speech/v1beta1/rest?userIp=0.2.0.3

¿Alguna idea de qué podría estar causando este problema?

¿Tengo que "instalar" o actualizar los certificados SSL utilizados por python?


Tengo este error en el entorno de desarrollo local tan recientemente como agosto de 2017. La solución es actualizar todas las llamadas a urlfetch y forzar la validación de los certs:

urlfetch.fetch(url=url, validate_certificate=True)

No tuvo que tocar los cert de gcloud (MacOS). Consulte Emitir una solicitud HTTPS .