Ошибка SSL Python для discord.py: ssl.SSLCertVerificationError: сбой проверки сертификата: невозможно получить сертификат локального эмитента (_ssl.c: 1056) - PullRequest
0 голосов
/ 11 ноября 2019

Ошибка

ssl.SSLCertVerificationError: Не удалось проверить сертификат [SSL: CERTIFICATE_VERIFY_FAILED]: не удалось получить сертификат локального эмитента (_ssl.c: 1056) Сбой при установлении связи SSLпроверка сертификата

aiohttp.client_exceptions.ClientConnectorCertificateError: Невозможно подключиться к хосту discordapp.com:443 ssl: True [SSLCertVerificationError: (1, 'Сертификат сертификата [SSL: CERTIFICATE_VERIFY_FAILED] не удалось: не удалось получить локальный сертификат_ssl.c: 1056) ')]

Полный возврат (156 строк): https://pastebin.com/xmy4aYcM

Отладочная информация

Яработает на полностью обновленном Raspbian Buster с Python 3.7.3, на Raspberry Pi 3.

Выход uname -a:

Linux hostname 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l GNU/Linux

Выход lsb_release -a:

Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

Вывод pip freeze:

aiohttp==3.5.4
async-timeout==3.0.1
attrs==19.3.0
certifi==2019.9.11
chardet==3.0.4
discord.py==1.2.4
idna==2.8
multidict==4.5.2
pkg-resources==0.0.0
websockets==6.0
yarl==1.3.0
>>> import os
>>> import ssl                                        
>>> openssl_dir, openssl_cafile = os.path.split(      
...     ssl.get_default_verify_paths().openssl_cafile)
>>> os.listdir(openssl_dir)
['openssl.cnf', 'private', 'misc', 'certs']
>>> print(os.path.exists(openssl_cafile))
False

То, что я пробовал

Все мои поиски в Интернете дают одно из двух предложений:

  1. Установить certifi используя pip
    • У меня уже есть инстаЛед его, и он ничего не меняет.
  2. Запустите Install Certificates.command в папке /Applications/Python 3.X/
    • Это зависит от Mac. В общем, все упоминания об этой ошибке были только на Mac.

Пример минимального воспроизведения

Создание venv и установкапакеты

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install ca-certificates python3-venv python3-pip

python3 -m venv env
source env/bin/activate
python3 -m pip install -U pip
python3 -m pip install -U setuptools wheel
python3 -m pip install -U discord.py certifi

Откройте приглашение python3 и выполните команду:

import discord

client = discord.Client()
client.run("token") # error happens here

Я не сталкиваюсь с такой же ошибкой на моем ПК под управлением Linux, с той же версией и пакетами Python.

Есть ли способ либо

  • Игнорировать проверку проверки сертификата ssl (например, флаг --insecure на curl), либо
  • Правильно установить недостающие сертификаты?
...