#python #pyopenssl
#python #pyopenssl
Вопрос:
Возможно ли принудительно заставить pyOpenSSL выполнить согласование SSL (и, в частности, получить сертификат партнера) без попыток отправки / получения данных?
В настоящее время с помощью этого кода:
ssl_soc = SSL.Connection(self._mk_ctx(), plain_soc)
ssl_soc.set_connect_state()
cert = ssl_soc.get_peer_certificate()
Вызов get_peer_certificate
возвращается None
, но после того, как я вызвал, например, ssl_soc.write("hello")
, get_peer_certificate
начинает возвращать сертификат, как я и ожидал.
Комментарии:
1. О боже! Я даже не мог понять, что он возвращается
None
только перед любой отправкой / получением. Оглядываясь назад, это должно было быть очевидно, поскольку я также использовалVERIFY_FAIL_IF_NO_PEER_CERT
флаг, и это не привело к сбою. Понял только после просмотра этого вопроса.
Ответ №1:
Ошибка, очевидно, что мне нужно немного усложнить RTFM. Я искал do_handshake
метод: http://packages.python.org/pyOpenSSL/openssl-connection.html