У меня есть недорогой сертификат от EssentialSSL (Comodo - это CA), и я с удивлением обнаружил, что Python его не распознал.
requests.exceptions.SSLError: [Errno 1] _ssl.c:509: error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Сертификат, похоже, правильно распознается всеми основными браузерами, но Python его не проверяет.
Если возможно, я бы предпочел простое решение для установки, такое как установка пакета или скрипта.
Я был немного удивлен, не увидев Comodo в списке распознанных сертификатов CA по умолчанию, все основные (5) браузеры принимают его, но не Ubuntu wget / python / ... (openssl, я думаю, причина).
Используйте пакет Debian ca-Certificates , который будет включать (помимо других) все сертификаты CA, которые Mozilla Firefox / Thunderbird / etc. использует.
Вы можете использовать файл сертификата (все сертификаты в одном, в формате PEM) в Python следующим образом:
ssl_sock = ssl.wrap_socket(sock,
ca_certs="/etc/ssl/certs/ca-certificates.crt",
cert_reqs=ssl.CERT_REQUIRED
)