Вопрос Как получить сертификат SSL для проверки на Python?


У меня есть недорогой сертификат от 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, я думаю, является причиной).


2
2017-12-17 09:26


происхождения


Сертификаты Comodo присутствуют в Ubuntu, возможно, Python не подтверждает сертификаты, основанные на сертификатах, доступных для операционной системы. Кроме того, ваш сертификат не может быть частью цепочки, которая возвращает к одному из трех сертификатов Comodo, которым доверяет Ubuntu. - jackweirdy
@jackweirdy, пожалуйста, проверьте мои комментарии из ответа, кажется, что Comodo Certificate не включен в список, у меня также есть тестовый файл. - sorin
Добавлена ​​ошибка bugs.launchpad.net/ubuntu/+source/ca-certificates/+bug/1261855 - sorin
бег ls -l /etc/ssl/certs/ | grep -i comodo, Вы должны увидеть там несколько сертификатов comodo. - jackweirdy


ответы:


Использовать пакет Debian CA-сертификаты который будет включать (помимо других) все сертификаты CA, которые Mozilla Firefox / Thunderbird / и т. д. использует.

Вы можете использовать файл сертификата (все сертификаты в одном формате PEM) в Python следующим образом:

ssl_sock = ssl.wrap_socket(sock,  
                           ca_certs="/etc/ssl/certs/ca-certificates.crt",  
                           cert_reqs=ssl.CERT_REQUIRED  
                          )

2
2017-12-17 11:00



Где вы добавляете это, чтобы изменения были системными? - Braiam
Это часть другой библиотеки, я сначала проверю ее, чтобы убедиться, что это решает проблему, и если это правда, мне придется исправить дистрибутив python, чтобы он работал для любого модуля. - sorin
Я пробовал ваш подход, но кажется, что сертификат Comodo не находится внутри /etc/ssl/certs/ca-certificates.crt - вы можете протестировать https://sbarnea.com - мой OS X python проверяет сертификат, но Ubuntu этого не делает. - sorin
Взгляните на этот файл теста gist.github.com/ssbarnea/8007689 это не все тесты относятся к моему домену на Ubuntu, что означает, что /etc/ssl/certs/ca-certificates.crt НЕ содержит сертификаты COMODO. - sorin