Прочитать информацию, которую мой компьютер отправляет по ssl-соединению

Я хотел бы прочитать информацию, которую java-приложение в firefox отправляет на веб-сайт через соединение ssl.

Я использую WireShark, и я считаю, что если я смогу каким-то образом сказать wireshark, какой ключ шифрования использует firefox, то wireshark сможет расшифровать сообщения ssl.

Затем я точно узнаю, какую информацию этот веб-сайт получает о моем компьютере.

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


person bboyle1234    schedule 24.01.2010    source источник


Ответы (3)


Не совсем связан с программированием.

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

person blowdart    schedule 24.01.2010

Предполагая, что вы не пытаетесь сделать это программно, а просто хотите просматривать заголовки во время отладки, вы можете использовать Charles:

http://www.charlesproxy.com/

Здесь есть достаточно информации о том, как настроить его для расшифровки SSL-трафика:

http://www.charlesproxy.com/documentation/using-charles/ssl-proxying/

person Joe    schedule 24.01.2010
comment
Спасибо Джо! Я потрачу еще немного времени, чтобы проверить Чарльза. Это выглядит великолепно с первого взгляда. Я очень благодарен. - person bboyle1234; 26.01.2010

Java-приложение будет шифровать всю информацию с помощью общедоступного (SSL) сертификата сервера (по крайней мере, насколько вам известно). Для всех практических целей единственный способ расшифровать это впоследствии - это узнать закрытый ключ сервера, которого у вас, по-видимому, нет, и поэтому вы не можете его расшифровать.

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

Если это «обычное» SSL-соединение, клиент (приложение Java) свяжется с сервером и получит свой открытый ключ, проверит его действительность (подписанный доверенным центром сертификации), а затем использует его для согласования симметричного ключа, который используется для шифрования. .

Открытые/закрытые ключи работают таким образом, что все, зашифрованное одним ключом, может быть расшифровано только другим, то есть все, что Java-приложение шифрует с помощью открытого ключа сервера, может быть расшифровано только с использованием закрытого ключа, который никогда не покидает сервер.

SSL/TLS поддерживает клиентские сертификаты, в которых приложение Java может иметь свою собственную пару ключей и использовать свой закрытый ключ для подписи содержимого, чтобы проверить свою подлинность. Однако даже если приложение Java сделает это (сомнительно), это не поможет, поскольку данные все равно будут зашифрованы, так что только сервер сможет их расшифровать.

Справочная информация: http://en.wikipedia.org/wiki/Transport_Layer_Security и http://en.wikipedia.org/wiki/Public-key_cryptography

person dseifert    schedule 24.01.2010
comment
Ok. Вы говорите, что недостаточно знать закрытый ключ, используемый моим собственным компьютером? - person bboyle1234; 24.01.2010