Ответ
SSL/TLS сертификат — это цифровой документ, который используется для подтверждения подлинности сервера и шифрования данных, передаваемых между клиентом и сервером по протоколу HTTPS.
Зачем он нужен? Основная задача — предотвратить атаки типа «человек посередине» (Man-in-the-Middle), гарантируя, что клиент общается именно с тем сервером, за который тот себя выдает.
Применение в Python:
Библиотеки, такие как requests
и httplib
, по умолчанию проверяют SSL-сертификат сервера при выполнении HTTPS-запроса. Если сертификат недействителен (просрочен, самоподписанный, выдан недоверенным центром сертификации - CA), выбрасывается исключение ssl.SSLCertVerificationError
.
Пример работы с сертификатами в requests
:
-
Небезопасное отключение проверки (только для отладки!):
import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning # Подавляем предупреждения о небезопасных запросах requests.packages.urllib3.disable_warnings(InsecureRequestWarning) # Этот запрос проигнорирует ошибки SSL, что небезопасно в production response = requests.get('https://self-signed.badssl.com/', verify=False) print(response.status_code)
-
Правильный подход: указание пути к доверенному сертификату: Если вы работаете с внутренним сервисом, у которого есть свой сертификат, его следует добавить в доверенные.
import requests # Указываем путь к файлу сертификата (или бандлу сертификатов) response = requests.get('https://internal.service.com', verify='/path/to/your/ca.crt') print(response.status_code)