Имейте в виду, что openssl s_client также использует stderr для некоторых выходных данных. Вам нужно проверить, переходит ли перезаключение к stderr, что, я полагаю, делает, хотя моя память может исчезать.
Я сделал это по-другому, но не в Python. Я создал процесс и подключил дескрипторы файлов stdin, stdout, stderr к тем, которые я могу читать / записывать, и я фактически управляю вводом и читаю вывод. Это немного больше работы, но у вас есть полный контроль над тем, что происходит и взаимодействует с процессом. Я сделал это в php, и тест доступен онлайн на http://netsekure.org/2009/11/tls-renegotiation-test/.
В качестве альтернативы, вы можете просто попробовать использовать python для программирования самого openssl вместо s_client, но это больше работы, и я использовал предыдущий подход.
Есть две вещи, которые вы можете проверять, и вы не дали понять, какая из них вас интересует:
- проверка того, поддерживает ли удаленный сервер повторное согласование, инициированное клиентом
- проверка того, поддерживает ли удаленный сервер расширение безопасного повторного согласования
Оба из них можно просто вывести, просто выполнив s_client и grep для ключевых слов, применимых к обоим случаям. Все зависит от того, сколько вам нужно управления / сложности.