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

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

8 ответов


для Android7

см.: как заставить charles proxy работать с Android 7 нуга?

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

С компьютера запустите Charles:

  1. открыть Настройки прокси: Прокси - > Настройки прокси, вкладка Прокси, установите флажок " Включить прозрачное http-проксирование "и запомните" порт " в сердце. enter image description here

  2. Прокси SSL Настройки:прокси -> прокси-сервера SSL параметры, вкладка SSL-Прокси, Проверьте "включить SSL прокси", и добавить . в местах: enter image description here enter image description here

  3. Открыть Настройки Управления Доступом: Прокси - > Настройки Управления Доступом. Добавьте локальную подсеть для авторизации компьютеров в локальной сети для использования прокси-сервера с другого компьютера / мобильного телефона. enter image description here

В Android Телефон:

  1. настройка мобильного телефона: перейдите в Настройки - > Беспроводные сети - > WiFi - > подключение или изменение сети, заполните IP-адрес компьютера и порт(8888): enter image description here

  2. получить сертификат SSL Чарльза. Посетите этот url-адрес из мобильного браузера: http://charlesproxy.com/getssl enter image description here

  3. В "имя сертификата" введите то, что вы хочу!--5-->

  4. примите предупреждение безопасности и установите сертификат. Если вы установите его успешно, то вы, вероятно, увидите sth так: В телефоне Настройки - > Безопасность - > доверенные учетные данные: enter image description here

сделано.

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


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

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

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

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

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

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

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

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

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 доверия diff (для выпуска, отладки только и так далее), включая сертификат прокси-сервера Charles SSL (если вы загрузите сертификат Charles и поместите .PEM-файл в вашей папке raw). Более подробную информацию можно найти здесь: https://developer.android.com/training/articles/security-config.html

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

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


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


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

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

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


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