SSLError при использовании клиентской библиотеки Google API

Я использую клиентскую библиотеку Google API на сервере Ubuntu. Хотя скрипт отлично работает на моей машине, на сервере он дает ошибку SSLError:

File "/home/default/bigbluebutton/youtube/uploader/uploadvideo.py", line 78, in authorize
    credentials = flow.step2_exchange(code)        
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/util.py", line 132, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/oauth2client/client.py", line 1283, in step2_exchange
    headers=headers)
  File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py", line 1570, 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/__init__.py", line 1317, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py", line 1252, in _conn_request
    conn.connect()
  File "/usr/local/lib/python2.7/dist-packages/httplib2/__init__.py", line 1021, in connect
    self.disable_ssl_certificate_validation, self.ca_certs)
  File "/usr/local/lib/python2.7/dist-packages/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

Как решить эту проблему? Что-то не так с SSL?


person Dzung Nguyen    schedule 26.08.2013    source источник
comment
Информация здесь может вам помочь: github.com/kennethreitz/requests/issues/557   -  person David K. Hess    schedule 27.08.2013
comment
Я пытался, но это не помогает. Сервер — Ubuntu 12.04, такой же, как и машина для разработки m.   -  person Dzung Nguyen    schedule 27.08.2013
comment
Какие решения из этой ссылки вы пробовали?   -  person David K. Hess    schedule 28.08.2013


Ответы (2)


Решение, которое работает для меня, — изменить разрешение cacerts.txt на вашего собственного пользователя (вместо root). Или запустить как root. Вы можете найти файлы в /usr/local/lib/python2.7/dist-packages/httplib2/cacerts.txt.

person Dzung Nguyen    schedule 28.08.2013

У меня была такая же проблема. Я думаю, причина в том, что не удалось загрузить соответствующий сертификат. Ниже приведен фрагмент кода из httplib2/init.py, который загружает сертификат.

    try:
        # Users can optionally provide a module that tells us where the CA_CERTS
        # are located.
        import ca_certs_locater
        CA_CERTS = ca_certs_locater.get()
    except ImportError:
        # Default CA certificates file bundled with httplib2.
        CA_CERTS = os.path.join(
            os.path.dirname(os.path.abspath(__file__ )), "cacerts.txt")

httplib2/init.py Местоположение:/usr/local/lib/python2.7/dist-packages/httplib2-0.8-py2.7.egg/httplib2/init. пи

В приведенном выше коде ca_certs_locater загружает файл центра сертификации из базовой ОС вместо файла в пакете httplib2. Если модуль ca_certs_locater не существует, он загружает сертификат из файла cacerts.txt.

В моем случае модуль отсутствовал, поэтому он загружался из файла «cacerts.txt», который я не был уверен, присутствует ли он или нет. Я исправил эту проблему, установив модуль, ca_certs_locater.

person Akshay Valsa    schedule 26.09.2013