2013-03-29 16 views
8

Sto provando a utilizzare Google Oauth per connettersi a Google Adsense e sto ricevendo questo errore. Eventuali indizi per risolverlo?Errore di lancio SSL 185090050 durante l'autenticazione tramite Oauth

Chiunque ha già riscontrato un problema simile in Python?

Traceback (most recent call last): 
    File "get_all_saved_reports.py", line 56, in <module> 
     main(sys.argv) 
    File "get_all_saved_reports.py", line 36, in main 
     service = sample_utils.initialize_service() 
    File "/home/nish/Programs/python/google-adsense/samples/adsense/sample_utils.py", line 114, in initialize_service 
     credentials = prepare_credentials() 
    File "/home/nish/Programs/python/google-adsense/samples/adsense/sample_utils.py", line 95, in prepare_credentials 
     credentials = run(FLOW, storage) 
     File "/usr/local/lib/python2.7/dist-packages/oauth2client-1.1-py2.7.egg/oauth2client/util.py", line 128, in positional_wrapper 
     return wrapped(*args, **kwargs) 
     File "/usr/local/lib/python2.7/dist-packages/oauth2client-1.1-py2.7.egg/oauth2client/tools.py", line 197, in run 
     credential = flow.step2_exchange(code, http=http) 
     File "/usr/local/lib/python2.7/dist-packages/oauth2client-1.1-py2.7.egg/oauth2client/util.py", line 128, in positional_wrapper 
     return wrapped(*args, **kwargs) 
     File "/usr/local/lib/python2.7/dist-packages/oauth2client-1.1-py2.7.egg/oauth2client/client.py", line 1283, in step2_exchange 
     headers=headers) 
     File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 1571, in request 
     (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) 
     File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 1318, in _request 
     (response, content) = self._conn_request(conn, request_uri, method, body, headers) 
     File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 1253, in _conn_request 
     conn.connect() 
     File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 1022, in connect 
     self.disable_ssl_certificate_validation, self.ca_certs) 
     File "/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/__init__.py", line 80, in _ssl_wrap_socket 
    cert_reqs=cert_reqs, ca_certs=ca_certs) 
    File "/usr/lib/python2.7/ssl.py", line 381, in wrap_socket 
    ciphers=ciphers) 
    File "/usr/lib/python2.7/ssl.py", line 141, in __init__ 
    ciphers) 
ssl.SSLError: [Errno 185090050] _ssl.c:340: error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib 
+0

Si potrebbe voler controllare questa discussione: https://github.com/kennethreitz/requests/issues/557 –

+0

ho guardato dentro prima di pubblicare. Non mi ha aiutato – Nish

risposta

30

stavo ottenendo questo errore esatto X509 in OAuth2 (Twitter API, non Google) con Python 2.7.5 e utilizzato il consiglio di Akshay Valsa e cambiato le autorizzazioni per cacerts.txt con

chmod 644 /usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/cacerts.txt 

che fissava il problema e ora posso eseguire il mio modulo come utente ordinario invece di sudoarlo. Grazie!

+4

In Yosemite (10.10.1), a seconda della versione di Python, il file è a /Library/Python/2.7/site-packages/httplib2-0.9-py2.7.egg/httplib2/cacerts.txt –

+0

Ha lavorato per me come un fascino! Grazie – Simon

0

Ho trovato la soluzione. Google OAuth è pazzo da capire e ho dovuto eseguire lo script come sudo/root per la prima volta. Ha funzionato. Assicurati anche che i privilegi siano impostati correttamente.

+0

Puoi approfondire questo? Sto avendo lo stesso problema –

+0

assicurati di avere il permesso di root da eseguire. – Nish

+0

Non così semplice. Sono stato felicemente autorizzato come utente normale, quindi ho riscontrato questo problema e sudo non risolve il problema. –

7

Questo problema si verifica durante il caricamento dei file dei certificati. Se si esegue il programma con utente root, questo problema verrà risolto. Oppure puoi controllare i permessi del file: /usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/cacerts.txt e fornire i permessi necessari per questo file .

1

Nel mio caso stavo eseguendo il server di sviluppo Django. Se il server è stato eseguito prima di passare in ambiente virtuale ho trovato [Errno 185.090.050] _ssl.c: 345: errore: 0B084002: x509 routine certificato: lib sistema nel mio traceback: X509_load_cert_crl_file. In poche parole, non eseguivo più la versione di httplib2 che creava i certificati: probabilmente stavo eseguendo il dist-package. (Ububtu 13.10), Python 2.7, Django 1.62. Spero che questo aiuti gli altri.