#python #ssl #python-requests #certificate
#python #ssl #python-запросы #сертификат
Вопрос:
Мы используем пакет Python, который используется requests
для доступа к онлайн-сервису. Служба расположена по адресу https://dsbox02.isi.edu:8888 / . Если вы перейдете по ссылке в своем браузере, вы увидите, что открывается страница и что у нее есть действительный сертификат.
Однако следующий код Python завершается с ошибкой:
import requests
requests.get('https://dsbox02.isi.edu:8888')
запросы.исключения.Ошибка SSLError: HTTPSConnectionPool(host=’dsbox02.isi.edu ‘, порт=8888): Превышено максимальное количество попыток с url: / (Вызвано ошибкой SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] ошибка проверки сертификата: не удалось получить локальный сертификат эмитента (_ssl.c: 1122)’)))
Это происходит в Windows 10 и Python 3.7, Ubuntu 18.04 и Python 3.6, а также в python:latest
docker image с Python 3.9. На Mac с Python 3.8 это работает.
Комментарии:
1. sslshopper.com/ssl-checker.html#hostname=https :// … проверьте это.
2. Блестяще! Это должно быть опубликовано в качестве ответа!
3. Опубликовано в качестве ответа 🙂
Ответ №1:
Существуют некоторые ssl-сертификаты, которым доверяют не во всех веб-браузерах. Возможно, вам потребуется установить промежуточный / цепной сертификат, чтобы связать его с доверенным корневым сертификатом.
Самый простой способ — проверить ваш сайт с помощью средства проверки ssl. Например: https://www.sslshopper.com/ssl-checker.html#hostname=https://dsbox02.isi.edu:8888 /