Получить сертификат с помощью python3 с сервера, который требует аутентификации клиента без аутентификации? - PullRequest
0 голосов
/ 22 января 2019

Возможно ли получить сертификат только с помощью python3 с сервера, который требует аутентификации клиента без аутентификации?

В моей среде есть сервер, требующий проверки подлинности ssl-сертификата клиента. Если у вас его нет, при соединении с openssl вы сможете получить сертификат, но получите сообщение об ошибке: Публикация с подробностями . Ошибка возникает в конце рукопожатия.

Если я попробую с python использовать модуль ssl:

hostname = 'serverwithclientauth'
# PROTOCOL_TLS_CLIENT requires valid cert chain and hostname
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.load_verify_locations('path/to/cabundle.pem')

with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as sock:
    with context.wrap_socket(sock, server_hostname=hostname) as ssock:
        print(ssock.version())

(который в основном копирует / вставляет из: Python.org )), ошибка wrap_socket. Мне интересно, можно ли разбить последовательность ssl на более мелкие куски, чтобы я мог завершить работу после того, как сервер отправит сертификат клиенту.

Я пытался просто пойти на:

ssl.get_server_certificate((host,port))

но даже этот бит не работает для этого хоста (другие без требования аутентификации клиента работают отлично!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...