0

Ich installierte Google Speech API auf einem Centos 7-Computer mit Python 2.7.5 und einem Gentoo Linux-Computer mit Python 2.7.2. Ich folgte diesem Verfahren basierend auf This official link:Google Speech API-Authentifizierungsfehler TransportError: HTTPSConnectionPool

  1. Installierte Pip neueste Version.
  2. die globale Variable für die Authentifizierung Set export GOOGLE_APPLICATION_CREDENTIALS=/path_to_my_jason_key_file
  3. Installierte Google Rede mit pip install google-cloud-speech
  4. die Testdateien
  5. Run python quickstart.py

Ich erhalte In beiden Systemen audio.raw und quickstart.py heruntergeladen haben derselbe TransportError: HTTPSConnectionPool-Fehler.

Dies ist das Trace-Protokoll aus der Centos Maschine:

python quickstart.py 
WARNING: yacc table file version is out of date 
Traceback (most recent call last): 
    File "quickstart.py", line 59, in <module> 
    run_quickstart() 
    File "quickstart.py", line 51, in run_quickstart 
    response = client.recognize(config, audio) 
    File "/usr/lib/python2.7/site-packages/google/cloud/gapic/speech/v1/speech_client.py", line 201, in recognize 
    return self._recognize(request, options) 
    File "/usr/lib/python2.7/site-packages/google/gax/api_callable.py", line 452, in inner 
    return api_caller(api_call, this_settings, request) 
    File "/usr/lib/python2.7/site-packages/google/gax/api_callable.py", line 438, in base_caller 
    return api_call(*args) 
    File "/usr/lib/python2.7/site-packages/google/gax/api_callable.py", line 376, in inner 
    return a_func(*args, **kwargs) 
    File "/usr/lib/python2.7/site-packages/google/gax/retry.py", line 127, in inner 
    ' classified as transient', exception) 
google.gax.errors.RetryError: RetryError(Exception occurred in retry method that was not classified as transient, caused by <_Rendezvous of RPC that terminated with (StatusCode.UNAUTHENTICATED, Getting metadata from plugin failed with error: Traceback (most recent call last): 
    File "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi", line 143, in grpc._cython.cygrpc.plugin_get_metadata.async_callback (src/python/grpcio/grpc/_cython/cygrpc.c:7002) 
    File "/usr/lib64/python2.7/site-packages/grpc/_plugin_wrapping.py", line 91, in __call__ 
    AuthMetadataPluginCallback(wrapped_cygrpc_callback)) 
    File "/usr/lib/python2.7/site-packages/google/auth/transport/grpc.py", line 73, in __call__ 
    callback(self._get_authorization_headers(context), None) 
    File "/usr/lib/python2.7/site-packages/google/auth/transport/grpc.py", line 61, in _get_authorization_headers 
    headers) 
    File "/usr/lib/python2.7/site-packages/google/auth/credentials.py", line 121, in before_request 
    self.refresh(request) 
    File "/usr/lib/python2.7/site-packages/google/oauth2/service_account.py", line 322, in refresh 
    request, self._token_uri, assertion) 
    File "/usr/lib/python2.7/site-packages/google/oauth2/_client.py", line 143, in jwt_grant 
    response_data = _token_endpoint_request(request, token_uri, body) 
    File "/usr/lib/python2.7/site-packages/google/oauth2/_client.py", line 104, in _token_endpoint_request 
    method='POST', url=token_uri, headers=headers, body=body) 
    File "/usr/lib/python2.7/site-packages/google/auth/transport/requests.py", line 115, in __call__ 
    raise exceptions.TransportError(exc) 
TransportError: HTTPSConnectionPool(host='accounts.google.com', port=443): Max retries exceeded with url: /o/oauth2/token (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:765)'),)) 
)>) 

Es ist so ziemlich der gleiche Protokollfehler in beiden Systemen. Was fehlt mir in der Konfiguration?

Update 07/11/2017: Es scheint ein Problem mit der Version von openssl zu sein. Die folgende Anweisung von here mit yum update openssl, die zu openssl 1.0.2 udated ist, löste das Problem für Centos 7. Immer noch versucht, OpenSSL in Gentoo von Quelle zu aktualisieren.

Update 2 07/11/2017: Aktualisiert openssl in Gentoo Linux zu 1.0.2m, aber der Fehler bleibt bestehen. Der einzige Unterschied ist, dass es _ssl.c:504 error:14090086 routines:SSL3_GET_SERVER_CERTIFICATE: certificate verify failed sagt.

Antwort

0

Für diejenigen, die in die gleichen Fehler führen könnten bei dem Versuch, Google Cloud Apis zu authentifizieren: mit yum update openssl folgenden Anweisungen von here

Für Centos 7 I zu openssl 1.0.2m aktualisiert.

Für Gentoo Linux, zusätzlich zu openssl 1.0.2m zu aktualisieren, hatte ich Zertifi herabzustufen mit pip uninstall -y certifi && pip install certifi==2015.04.28