Ошибка
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
То, что я пробовал
Все мои поиски в Интернете дают одно из двух предложений:
- Установить
certifi
используя pip - У меня уже есть инстаЛед его, и он ничего не меняет.
- Запустите
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), либо - Правильно установить недостающие сертификаты?