2013-03-29 8 views
8

Ich versuche, Google Oauth verwenden, um eine Verbindung zu Google Adsense und bekomme diesen Fehler. Irgendwelche Hinweise, um es zu beheben?SSL wirft Fehler 185090050 während der Authentifizierung über Oauth

Wer ist schon einmal in Python mit einem solchen Problem konfrontiert?

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

Vielleicht möchten Sie diesen Thread überprüfen: https://github.com/kennthreitz/requests/issues/557 –

+0

Ich schaute es vor dem Posten. Es hat mir nicht geholfen – Nish

Antwort

30

Ich war genau diesen x509 Fehler in oauth2 bekommen (für Twitter-API, nicht Google) mit Python 2.7.5 und verwenden Akshay Valsa Rat und verändern die Berechtigungen für cacerts.txt mit

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

, dass den fest Problem und ich kann jetzt mein Modul als normaler Benutzer ausführen, anstatt es sudoing. Danke!

+4

In Yosemite (10.10.1), abhängig von Ihrer Version von Python, ist die Datei unter /Library/Python/2.7/site-packages/httplib2-0.9-py2.7.egg/httplib2/cacerts.txt –

+0

Arbeitete für mich Wie ein Zauber! Vielen Dank – Simon

0

Ich fand die Lösung. Das Google OAuth ist verrückt zu verstehen und ich musste das Skript zum ersten Mal als sudo/root ausführen. Das hat funktioniert. Stellen Sie außerdem sicher, dass die Berechtigungen korrekt festgelegt sind.

+0

Können Sie das näher erläutern? Ich habe das gleiche Problem –

+0

stellen Sie sicher, dass Sie Root-Berechtigung zur Ausführung haben. – Nish

+0

Nicht so einfach. Ich habe glücklich als normaler Benutzer autorisiert, dann traf dieses Problem und sudoing behebt das Problem nicht. –

7

Dieses Problem tritt beim Laden der Zertifikatsdateien auf.Wenn Sie das Programm mit Rootbenutzer ausführen, wird dieses Problem behoben. Oder überprüfen Sie die Berechtigungen der Datei: /usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/cacerts.txt, und geben Sie die erforderliche Berechtigung für diese Datei an .

1

In meinem Fall lief ich den Django-Entwicklungsserver. Wenn der Server vor dem Wechsel in die virtuelle Umgebung ausgeführt wurde, fand ich [Errno 185090050] _ssl.c: 345: Fehler: 0B084002: x509 Zertifikatsroutinen: X509_load_cert_crl_file: system lib in meinem Traceback. Einfach gesagt, ich habe nicht mehr die Version von httplib2 ausgeführt, die die Zertifikate erstellt hat: Ich habe wahrscheinlich das dist-Paket ausgeführt. (Ububtu 13.10), Python 2.7, Django 1.62. Hoffe das hilft anderen.