ошибка рукопожатия в ssl.get_server_certificate () во время теста истечения - PullRequest
0 голосов
/ 31 мая 2019

Я хочу написать скрипт python3, который проверяет даты истечения срока действия нескольких сертификатов SSL удаленно. В большинстве случаев я могу получить закодированный сертификат pem с ssl.get_server_certificate((host, port))

Но в одном случае это приводит к следующей ошибке:

ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:847)

если я пытаюсь получить информацию о сертификате с помощью

openssl s_client -connect host:port 2>/dev/null

для командной строки bash работает без проблем.

Рассматриваемый сервер требует, чтобы пользователь проходил аутентификацию с помощью пользовательского сертификата, и я подозреваю, что отсутствие указанного сертификата является причиной сбоя рукопожатия. Но так как меня интересует только проверка метаданных сертификата сервера, мне не нужно предоставлять действительный сертификат пользователя.

Есть ли способ, которым я могу имитировать функциональность openssl s_client с модулем Python?

Я мог бы вызвать openssl напрямую с помощью subprocess.call(), но, поскольку для python есть модули openssl, похоже, что должен быть лучший способ.

...