Назад | Перейти на главную страницу

Как я могу использовать SSL3 для связи с сервером?

Я пытаюсь получить трассировку wirehark, которую я могу расшифровать для запроса между клиентом и ALB. Чтобы расшифровать транзакцию, мне нужно заставить клиент / сервер отключить PFC (идеальная прямая секретность). У меня есть доступ к закрытому ключу сервера.

Когда я это сделаю:

openssl s_client -connect server:443 -debug -msg -state -cipher AES128-SHA

оно работает.

Однако когда я это сделаю:

openssl s_client -connect keystone-ext.develop.zillow.net:443 -debug -msg -state -cipher AES128-SHA -ssl3

это не удается. Результат выглядит следующим образом:

SSL3 alert read:fatal:handshake failure SSL_connect:failed in SSLv3
read server hello A 31996:error:14094410:SSL
routines:SSL3_READ_BYTES:sslv3 alert handshake
failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.7/src/ssl/s3_pkt.c:1145:SSL
alert number 40 31996:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl
handshake
failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.50.7/src/ssl/s3_pkt.c:566:

Я использую:

$ openssl version OpenSSL 0.9.8zh 14 Jan 2016

Есть идеи, что я делаю неправильно?

Сервер, с которым вы, вероятно, пытаетесь связаться, не поддерживает SSL v3. Любой прилично настроенный сервер в 2019 году не поддерживает SSL v3, а для SSL / TLS требуется совместимый набор шифров на обоих концах для связи с данным шифром.

Причина, по которой такие старые шифры отключены, как раз и заключается в том, чтобы помешать гнусным актерам делать то, что вы пытаетесь сделать.

Боюсь, вам придется найти другой способ сбросить полезную нагрузку.

Как я могу использовать SSL3 для связи с сервером?

Не надо. Не меняйте протокол (и не используйте старый OpenSSL), который изменяет безопасность. Совершенная прямая секретность - это особенность.

Вместо этого используйте регистрация ключа сеанса на клиенте или сервере. Установить переменную среды SSLKEYLOGFILE в файл для трассировки. Это поддерживается несколькими клиентами, особенно браузерами, NSS и libcurl. затем наведите на него Wireshark: Edit> Preferences, Protocols> SSL> (Pre) -Master-Secret имя файла журнала.

Изменить: еще одна ссылка на расшифровку TLS - Презентация расшифровки SSL / TLS от SharkFest ASIA 2018. Он указывает, что ECDHE нельзя расшифровать с помощью только закрытого ключа RSA. Напоминаем, что TLS 1.3 будет полностью PFS. Он также описывает состояние большего количества реализаций регистрации ключей SSL, в частности, OpenSSL и производные, позволяющие приложениям вызывать SSLCTXsetkeylogcallback() в то время как NSS и GnuTLS имеют SSLKEYLOGFILE переменная окружения.

Итак, для статически связанного OpenSSL вы можете попросить разработчика использовать другую библиотеку TLS или реализовать свою собственную функцию обратного вызова с ведением журнала, или вы выкопайте отладчик, чтобы извлечь его самостоятельно. Обратите внимание, что переключить используемый libssl (и обновить его) проще, если он динамически связан.

Альтернативы включают в себя преждевременное завершение TLS, например, на прокси-сервере, и захват незашифрованных пакетов или удаление PFS и расшифровку с помощью закрытого ключа.