Как отладить соединение ssl?

У меня есть клиентское приложение, которое подключается к веб-службе через https. Мне нужно "обнюхать" весь сетевой трафик между веб-сервисом и моим клиентом, чтобы проверить, все ли в порядке, то есть мне нужно отладить подключение.

Я пробовал Wireshark, но поскольку у меня нет закрытого ключа сервера, данные, показанные на экране wirehark, конечно же, зашифрованы.

Есть ли способ наблюдать сетевой трафик ssl между моим клиентом и веб-сервисом, когда у меня нет доступа к самому серверу и, следовательно, к секретным ключам и другим связанным с ними материалам?

Спасибо заранее.

Ответ 1

Смотрите это: Отладка SSL-коммуникаций.

Я знаю, что теоретически это можно сделать - вы можете настроить прокси-сервер, который связывается с целевым веб-сервисом, указать ваше приложение для подключения через этот прокси-сервер. Его известное ограничение - Https предполагает, что вы доверяете всем прокси и сертификатам, установленным на вашем компьютере. Его форма Атака "Человек-в-середине" .

Посмотрите, будет ли использоваться Fiddler.

Атаки "Человек-в-середине"

В атака "человек-в-середине", атакующий перехватывает пользовательский трафик для захвата учетных данных и других соответствующих Информация. Затем злоумышленник использует эту информацию для доступа к фактическим целевой сети. В течение процесс, злоумышленник обычно служит как прокси-шлюз, который представляет ложный сайт SSL VPN для пользователя; это прокси/шлюз проходит все аутентификация, которую пользователь вводит реальный сайт назначения.

Ответ 2

У вас установлен python?

pip install mitmproxy

mitmproxy -p 1234

даже для вас

(кстати, мне пришлось apt-get install python-lxml на debian squeeze после обновления apt-get)

Ответ 3

Burp Suite (даже Free Edition) позволяет вам установить прокси-сервер SSL, он представит другой сертификат вашему приложению, и он будет расшифровывать (и отображать) трафик для вас. И если вы хотите протестировать сервер на локальном хосте, это также позволит вам установить прокси-сервер (что-то, что я не смог сделать с Wireshark в Windows и Fiddler).

Ответ 4

Если у вас нет доступа к закрытому ключу сервера, вы не можете сделать, чтобы узнать, что защищено SSL/TLS. (По крайней мере, вы увидите начальное рукопожатие.)

Если у вас есть полный контроль над клиентом, вы можете написать фальшивый сервер, на котором будет находиться закрытый ключ и сертификат, который вы контролируете, и который будет передавать все, отправленные клиентом на фактический сервер. Для этого вам нужно заставить клиента доверять свой собственный сертификат, поэтому вам нужен контроль над клиентом. Возможно, было бы проще настроить соответствующий файл hosts на клиенте, чтобы выполнить подмену DNS, чтобы соединения с правильным именем хоста переходили на ваш поддельный сервер.