Запросы Python завершаются с ошибкой на определенном сайте HTTPS, хотя его сертификат действителен

#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 /