Я хотел бы бежать

openssl s_server -key rsa_key.pem -cert rsa_cert.pem

который примет расширение сердцебиения. Моя клиентская сторона

openssl s_client -connect localhost:4433 -key rsa_key.pem -cert rsa_cert.pem

предлагает его на ClientHello, но серверная сторона не выбирает его. Что мне нужно сделать на работающей стороне сервера с принятием этого расширения?

Следующий вопрос - как я узнаю на стороне сервера, что я получил сердцебиение? Я увижу это в терминале, который запускает s_server? Я пробовал Wireshark, но я не знаю, как расшифровать эти зашифрованные сообщения. Я попытался добавить ключ в Wireshark/Edit/Preferences, но это не помогло.

1 ответ1

1

OpenSSL 1.0.2 поддерживает тактовые импульсы TLS. Эта возможность была удалена из OpenSSL 1.1.0. Поэтому, если вы запустите s_client, используя версию 1.0.2, и s_server, используя версию 1.1.0, вы увидите поведение, которое вы испытываете, т.е. расширение сердцебиения предлагается, но не принимается.

s_client/s_server не сообщает вам напрямую, когда они получили запрос HEARTBEAT, хотя они сообщают вам, отправили ли они его, например, из s_client типа "B" в терминале, а s_client сообщит "HEARTBEATING". На стороне s_server вы увидите только сообщение "Read BLOCK". Это означает, что сервер пытался прочитать входящие данные, но не было никаких данных приложения для отображения (потому что Heartbeat не является данными приложения). Точно так же вы можете сделать то же самое и наоборот (т.е. выдать "B" на терминале из s_server).

Вы можете получить больше информации, если сами захотите скомпилировать OpenSSL. Если вы скомпилируете 1.0.2 с помощью опции «enable-ssl-trace» для "Configure" (или config), а затем запустите s_server или s_client с опцией «-trace», это даст вам подробную информацию о пакетах, которые она отправляет и получение - включая пакеты пульса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .