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

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

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

Тогда я точно скажу, какую информацию этот сайт получает о моем компьютере.

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

Ответы [ 3 ]

2 голосов
/ 24 января 2010

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

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

1 голос
/ 24 января 2010

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

http://www.charlesproxy.com/

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

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

0 голосов
/ 24 января 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

...