2

Я знаю, что могу просматривать расшифрованные данные HTTPS непосредственно в Чарльзе. Но я хочу просматривать SSL-сообщения более низкого уровня в Wireshark. Поэтому я настроил Чарльза в качестве прокси-сервера SSL, используя свой собственный сертификат, и настроил настройку диссектора SSL в Wireshark с локальным IP-адресом и своим закрытым ключом.

Однако сообщения в Wireshark по-прежнему зашифрованы.

Что я упустил?

1 ответ1

1

Я столкнулся с точно такой же проблемой с Чарльзом Прокси в сочетании с Wireshark.

Я думаю, что проблема в том, что Чарльз отправляет два (или более) сертификата клиенту (проверьте сообщение сертификата, отправленное с прокси-сервера клиенту). Затем Wireshark будет использовать первый сертификат в этом списке, который, вероятно, не будет соответствовать сгенерированному вами закрытому ключу.

(Это именно то, что интересует пользователя dave_thompson_85 в комментариях.)

Я проверил это, извлекая сертификат из Wireshark. Обратите внимание, что Wireshark извлекает сертификат в формате .der . Затем я преобразовал .der файл в сертификат .pem :

openssl x509 -inform DER -outform PEM -text -in wireshark_charles.der -out wireshark_charles.pem

Я также преобразовал .pem в .crt , но это не обязательно.

Сертификат отправлен Чарльзом клиенту

$ openssl x509 -noout -modulus -in wireshark_charles.crt | openssl md5

7a37a32781daf79402623c19ac9c8d7f

Таможенный сертификат установлен в Чарльзе

$ openssl x509 -noout -modulus -in charles_custom.crt | openssl md5

62ea5ed061fca62efaaecbbb0226b08e

Соответствующий закрытый ключ

$ openssl rsa -noout -modulus -in charles_custom.pem | openssl md5

62ea5ed061fca62efaaecbbb0226b08e

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

И Wireshark также регистрирует эту проблему во время анализа SSL:

ssl_decrypt_pre_master_secret wrong pre_master_secret length (128, expected 48)
ssl_generate_pre_master_secret: can't decrypt pre master secret

Чарльз генерирует новый сертификат для каждого хоста, используя пользовательский сертификат в качестве корневого сертификата. К сожалению, я не нашел способа извлечь этот закрытый ключ для каждого хоста, сгенерированный Чарльзом. Я предлагаю использовать Burp Proxy. В Burp вы можете выбрать, какой тип сертификата вы хотите использовать.

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