Python imapclient - сертификат SSL не работает - PullRequest
0 голосов
/ 12 января 2019

Я разрабатываю на Python 3.6.1 для Mac для развертывания на Raspberry Pi 3. Я использую imapclient для чтения Gmail. Он работает на Pi, но тот же сценарий на Mac генерирует ошибку [SSL: CERTIFICATE_VERIFY_FAILED] при попытке войти в Gmail:

_______CODE_______

....
from imapclient import IMAPClient

....
while True:
    loop()
....

def loop():
    server = IMAPClient(HOSTNAME, use_uid=True, ssl=True)
    server.login(USERNAME, PASSWORD)

    if DEBUG:
        print('Logging in as ' + USERNAME)
    (etc)

_______OUTPUT_______

Traceback (most recent call last):
  File "/Users/username/PycharmProjects/googleVoice_tests/gmail_imap_02.py", line 64, in <module>
    loop()
  File "/Users/username/PycharmProjects/googleVoice_tests/gmail_imap_02.py", line 27, in loop
    server = IMAPClient(HOSTNAME, use_uid=True, ssl=True)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/imapclient.py", line 254, in __init__
    self._imap = self._create_IMAP4()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/imapclient.py", line 289, in _create_IMAP4
    self._timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/tls.py", line 44, in __init__
    imaplib.IMAP4.__init__(self, host, port)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/imaplib.py", line 197, in __init__
    self.open(host, port)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/tls.py", line 50, in open
    self.sock = wrap_socket(sock, self.ssl_context, host)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/imapclient/tls.py", line 32, in wrap_socket
    return ssl_context.wrap_socket(sock, server_hostname=host)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 401, in wrap_socket
    _context=self, _session=session)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 808, in __init__
    self.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1061, in do_handshake
    self._sslobj.do_handshake()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 683, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)

Process finished with exit code 1

Я ничего не знаю о SSL и связанных с ним файлах .crt ... Я даже не знаю, с чего начать поиск. Почему это работает на одной машине, а не на другой? Может кто-нибудь сказать мне, что здесь не так и как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...