#android #proxy #charles-proxy
#Android #прокси #charles-прокси
Вопрос:
Я использую устройство Nexus 5X под управлением Android 7. Мне не удалось настроить прокси, используя последние инструкции из документации Charles Proxy. Я установил сертификат, но настройки Wi-Fi или nugat расширены. Я могу установить charles в качестве сертификата, но это не позволит мне подключиться к этому wifi (проблема с аутентификацией). Поэтому я оставляю это как «не проверять правильность». Я даже не знаю, актуально ли это.
Дело в том, что когда я пытаюсь отслеживать вызовы https в своем приложении, я вижу SSLHandshake: Received fatal alert: certificate_unknown
, однако, если я запускаю веб-клиент с помощью chrome на том же устройстве — я могу читать вызовы того же API.
Суть в том, что он работает для браузера, но не для моего приложения. Я проверил и другие приложения. Тот же результат.
Причина, по которой я спрашиваю здесь, заключается в том, что, возможно, мне нужно добавить какой-нибудь небезопасный клиент в мою настройку модифицированного API — надеюсь, нет.
Комментарии:
1. Я получаю ту же проблему — вам удалось найти решение?
Ответ №1:
Вот как вам нужно настроить apk, чтобы заставить CharlesProxy работать в Android 7.
Android
Начиная с Android N, вам необходимо добавить конфигурацию в свое приложение, чтобы оно доверяло SSL-сертификатам, сгенерированным Charles SSL Proxying. Это означает, что вы можете использовать SSL-прокси только с приложениями, которые вы контролируете.
Чтобы настроить приложение на доверие Charles, вам необходимо добавить в приложение файл конфигурации сетевой безопасности. Этот файл может переопределять системные значения по умолчанию, позволяя вашему приложению доверять установленным пользователем сертификатам CA (например, корневому сертификату Charles). Вы можете указать, что это применимо только к отладочным сборкам вашего приложения, чтобы в производственных сборках использовался профиль доверия по умолчанию.
Добавьте файл res/xml/network_security_config.xml к вашему приложению:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Затем добавьте ссылку на этот файл в манифест вашего приложения следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<applicationandroid:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
Здесь вы можете найти более подробную информацию:
https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
Комментарии:
1. После внесения вышеуказанных изменений это может привести к ошибке отсутствия атрибута «networksecurityconfig», которая будет решена путем установки вашей compileSdkVersion на 24 или выше и установки вашей buildToolsVersion на 24.0.0 или выше.
2. Я не могу изменить исходный код apk. Итак, есть ли какое-либо решение?
Ответ №2:
В Charles выберите Справка -> Прокси-сервер SSL -> Установить корневые сертификаты Charles в симуляторах IOS, закройте симулятор iOS и перезапустите симулятор. Теперь он должен работать.