SSL Proxy/ Чарльз и проблема с Android

Я хочу, чтобы проверить Https звонки с Android-устройства с помощью инструмента прокси Чарльз. Мне нужно увидеть необработанное содержимое запроса / ответа для приложения отладки. Я настроил Чарльза, добавив хост и порт в "Настройки прокси" -> вкладка SSL. Когда я запускаю приложение, кажется, что все вызовы SSL быстро исчезают из Charles. Есть ли у кого-нибудь идеи, как решить эту проблему. Документация Чарльза не содержит информации для устройств Android.

8 ответов

Решение

Я понял проблему. Это потому, что в Charles 3.7 есть ошибки для устройств Android. Я обновил до бета-версии Charles 3.8 и, кажется, работает нормально для меня.

для Android7

обратитесь к: Как заставить работать прокси чарльза с нуга Android 7?

для версии Android ниже Android7

С вашего компьютера запустите Чарльз:

  1. Откройте Настройки прокси: Прокси -> Настройки прокси, вкладка Прокси, отметьте "Включить прозрачное прокси HTTP" и запомните "Порт" в глубине души. введите описание изображения здесь

  2. Настройки SSL-прокси: Прокси -> Настройки SSL-прокси, вкладка Прокси-сервер SSL, установите флажок "Включить SSL-прокси" и добавьте . в локации: введите описание изображения здесь введите описание изображения здесь

  3. Откройте Настройки контроля доступа: Прокси -> Настройки контроля доступа. Добавьте свою локальную подсеть, чтобы авторизовать машины в вашей локальной сети для использования прокси с другого компьютера / мобильного устройства. введите описание изображения здесь

В телефоне Android:

  1. Настройте свой мобильный: перейдите в "Настройки" -> "Беспроводные сети" -> "WiFi" -> "Подключите или измените свою сеть", введите IP-адрес компьютера и порт (8888): введите описание изображения здесь

  2. Получите SSL-сертификат Charles. Посетите этот URL-адрес в своем мобильном браузере: http://charlesproxy.com/getssl введите описание изображения здесь

  3. В "Название сертификата" введите все, что вы хотите

  4. Примите предупреждение безопасности и установите сертификат. Если вы установите его успешно, то вы, вероятно, увидите следующее: в вашем телефоне Настройки -> Безопасность -> Доверенные учетные данные: введите описание изображения здесь

Готово.

тогда вы можете провести тест на своем мобильном телефоне, зашифрованный запрос https будет показан в Charles: введите описание изображения здесь

Изменить - этот ответ был для более ранней версии Чарльза. Смотрите @semicircle21 ответ ниже для правильных шагов для v3.10.x - намного проще, чем этот подход тоже...:-)

Для этого стоит пошаговая инструкция для этого. Они должны применяться одинаково хорошо и в iOS:

  1. Открой Чарльза
  2. Перейдите в Прокси> Настройки прокси> SSL
  3. Отметьте "Включить SSL-прокси"
  4. Выберите "Добавить местоположение" и введите имя хоста и порт (при необходимости).
  5. Нажмите ОК и убедитесь, что опция отмечена
  6. Загрузите сертификат Чарльза здесь: Сертификат Чарльза>;;
  7. Отправьте этот файл себе по электронной почте.
  8. Откройте электронную почту на вашем устройстве и выберите сертификат
  9. В "Название сертификата" введите все, что вы хотите
  10. Нажмите кнопку ОК, и вы должны получить сообщение, что сертификат был установлен

После этого вы сможете увидеть файлы SSL в Charles. Если вы хотите перехватить и изменить значения, вы можете использовать инструмент "Map Local", который действительно потрясающий:

  1. В Charles выберите Инструменты> Карта Local.
  2. Выберите "Добавить запись"
  3. Введите значения для файла, который вы хотите заменить
  4. В "Локальный путь" выберите файл, который вы хотите, чтобы приложение загружалось вместо
  5. Нажмите ОК
  6. Убедитесь, что запись выбрана и нажмите ОК
  7. Запустите ваше приложение
  8. В "Заметках" вы должны увидеть, что ваш файл загружается вместо реального

Спасибо за ответ @bkurzius, и это обновление для Чарльза 3.10+. (Причина здесь)

  1. Открой Чарльза
  2. Перейдите в Прокси-сервер> Настройки SSL-прокси...
  3. Отметьте "Включить SSL-прокси"
  4. Выберите "Добавить местоположение" и введите имя хоста и порт (при необходимости).
  5. Нажмите ОК и убедитесь, что опция отмечена
  6. Перейдите в "Справка"> "Прокси SSL"> Install Charles Root Certificate on a Mobile Device or Remote Browser...и просто следуйте инструкциям. (используйте браузер Android для загрузки и установки сертификата.)
  7. В "Название сертификата" введите все, что вы хотите
  8. Нажмите кнопку ОК, и вы должны получить сообщение, что сертификат был установлен

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

Посмотреть здесь:

http://jaanus.com/blog/2012/02/12/debugging-http-on-an-android-phone-or-tablet-with-charles-proxy-for-fun-and-profit/

Вам нужно будет установить сертификат charles.crt на ваше устройство.

Ответы с самым высоким рейтингом работают отлично (немного устарело, но все еще работает), но я просто хочу упомянуть, что, начиная с Android N, мы все можем настраивать ваши приложения, чтобы иметь SSL-сертификаты разного доверия (только для выпуска, отладки и т. Д.), включая сертификат SSL SSL-прокси (если вы загрузили сертификат Charles и поместили файл.pem в папку raw). Более подробную информацию можно найти здесь: https://developer.android.com/training/articles/security-config.html

Также официальная документация Чарльза может быть полезна для настройки этого: https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

Надеюсь, что это поможет настроить Чарльза внутри вашего проекта приложения не на каждом Android-устройстве.

Для более нового эмулятора может быть полезно запустить из командной строки, используя:

emulator -netdelay none -netspeed full -avd <emulator_name> -http-proxy http://<ip-address>:8888

Убедитесь, что вы следовали советам @User9527 выше, а также для остальной части установки

Для меня проблема заключалась в том, что IP-адрес, на который мне указывал чарльз в настройках прокси-сервера, был неверным. Чтобы решить, я в конечном итоге собираюсь ifconfig в терминале и пробуя разные IP-адреса (перечислены рядом с inet) в порту 8888 для текущих активных соединений

Другие вопросы по тегам