Як використовувати проксі Чарльза на симуляторі Xcode 6 (iOS 8)?


Відповіді:


121

Оновлення: Charles 3.9.3+ має вбудовану функцію налаштування ваших симуляторів iOS (тобто встановлення сертифіката Charles SSL). Це можна знайти в меню Довідка програми Чарльза. ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

До Чарльза 3.9.2 відноситься таке:

Завантажте сценарій оболонки конфігурації з веб-сайту Charles Proxy . Потім замініть сценарій таким і запустіть його на своєму Mac:

#/bin/bash
install() {
if [ -f "$SQLITEDBPATH" ]; then
cp -n "$SQLITEDBPATH" "$SQLITEDBPATH.charlesbackup"
sqlite3 "$SQLITEDBPATH" <<EOF
INSERT INTO "tsettings" VALUES(X'189B6E28D1635F3A8325E1E002180DBA2C02C241',X'3123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A',X'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C21444F435459504520706C697374205055424C494320222D2F2F4170706C652F2F44544420504C49535420312E302F2F454E222022687474703A2F2F7777772E6170706C652E636F6D2F445444732F50726F70657274794C6973742D312E302E647464223E0A3C706C6973742076657273696F6E3D22312E30223E0A3C61727261792F3E0A3C2F706C6973743E0A',X'3082045E30820346A003020102020101300D06092A864886F70D01010505003081913123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A3020180F31383939313233313132303030305A170D3338303932343033313930355A3081913123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A30820122300D06092A864886F70D01010105000382010F003082010A02820101008349587455EFB272E397A31D3B52D9B13115C93F320766D2D451117F45C40285506027079ED439CABB94D44F1AE136EB1E79BF77ABE43345AD1D436809CF9E035C439272F3CA917DCADD7FBD0E3929F1A345F0B89096130BBD116F8D3AB5655789B7B0831325BD22903F198DA6BDDA30C08DFD17CE9AB51C48555264307BCF789A2B6C48DF4ECAF3EA2C092EE737AD8F397900AC03303BFE2AE43549030A7866CB6FE9B04B9F6EC498B4E7369E99B45491BF093858A77C72F8ADC818E018D413265E39446BE514F78EB57A23AA88F630776F861A9163E04AD38EE8A5C9219D0FC23F6B9A6324455DEA6F4A6A251ECA1FA3D6288CB89FD12A2062A3A015A56F250203010001A381BC3081B9300F0603551D130101FF040530030101FF307706096086480186F842010D046A136853534C2050726F7879696E6720697320656E61626C656420696E20436861726C65732050726F78792E20506C6561736520766973697420687474703A2F2F636861726C657370726F78792E636F6D2F73736C20666F72206D6F726520696E666F726D6174696F6E2E300E0603551D0F0101FF040403020204301D0603551D0E04160414BB27F4CB2EB6DBB058101BBD803F38D208D76129300D06092A864886F70D010105050003820101000041F935F30B209E56360F7E3D9C30314A213323C47EDCEA1467600A50FFE4E8E39DFCA8C8D34463C34745FF04C870F1DF28BB772DB0CF1BCA677B70842C742BC6D5FB00559AD643C6BF2C95BD0B855A961D7D6A3EADA9C642E9A789474C4AD838C6F732D8D859548D30829DF7A32D098FE3F00147DAF08C0B37DD597184C1E27A61EA42050C73994E809013CB21E37BF84BF923BCEFEA6164FD28AB9058CCC48F1F486FC1C47EBD8A9C933F542401B11F36A003E47B141A41C7B326D18D023E11EDB445699AA44800254EA33F174FD5EB1CCCE6A09365751FF905988C06315B5575067BF65EC24CAD1A6A601846D1D2F51F1F420A2762990B044000619D1C84');
EOF
fi
}

for SQLITEDBPATH in ~/Library/Developer/CoreSimulator/Devices/*/data/Library/Keychains/TrustStore.sqlite3; do
    echo $SQLITEDBPATH
    install
done

echo "The Charles SSL CA Certificate has been installed for the iPhone Simulator"

Деякі речі, на які слід звернути увагу:

  • ви повинні відкрити Чарльза перед запуском симулятора. Якщо ви закриєте Чарльза, мережеві запити будуть невдалими, доки ви не перезапустите симулятор
  • вам потрібно буде це робити щоразу, коли ви "Скидаєте вміст і налаштування ..." на тренажері
  • Для Xcode 5: якщо ви хочете налаштувати Charles Proxy на Xcode 5 і раніше, вам не потрібно змінювати оригінальний сценарій. Просто завантажте його з веб-сайту Charles і запустіть як є

4
Працює після перезапуску симулятора.
авдюшин

9
Ви відповідаєте, схоже, вирішили проблему із запитом SSL. але основною проблемою може бути те, що Чарльз не обробляє жодних запитів від iOS simulator 8.0 / Xcode6. Чи знаєте ви, як це виправити?
aelam

1
Я думаю, що сценарій перенесено сюди: charlesproxy.com/documentation/faqs/… (і, читаючи джерело, схоже, він оновлений так, як ви пропонуєте)
Ян Дандас,

1
Я пішов за цим, але бачу помилку в терміналі - УНІКАЛЬНЕ обмеження не вдалося: tsettings.sha1
Бета

1
FYI - Я оновив цю відповідь, включивши вказівки щодо завантаження Charles 3.9.3, а також виконує установку сертифіката за допомогою меню Довідка, а не потребуючи сценарію.
codeperson

35

Я щойно протестував Чарльза на симуляторі Xcode 7 / iOS9. Лише кілька вказівок, які я хочу додати, якщо у вас виникли проблеми:

  • Переконайтеся, що параметри « Увімкнути проксі-сервер Mac OS » та « Використовувати проксі HTTP » встановлені в розділі «Проксі- сервер Чарльза | Налаштування проксі; і необов’язково встановіть прапорець « Увімкнути проксі Mac OS X під час запуску », якщо ви не хочете робити цей крок кожного разу, коли запускаєте Чарльза.
  • Якщо ваша Автоматична конфігурація проксі-сервера (та / або Авто-виявлення проксі-сервера ) встановлена ​​у ваших Системних налаштуваннях | Мережі, вам потрібно зняти прапорець, щоб веб-проксі Чарльза (HTTP) і безпечний веб-проксі (HTTPS) не набрали чинності.
  • Якщо вашій компанії потрібен проксі-сервер, незалежний від Чарльза, вам потрібно вручну скопіювати налаштування всередині Чарльза, щоб Чарльз їх не замінив, і ви не зможете отримати доступ до Інтернету. Зверніть увагу на URL-адресу проксі-сервера та номери портів перед тим, як починати Чарльза. Транскрибуйте ці налаштування веб-проксі та безпечного веб-проксі в розділі проксі Чарльза | Налаштування зовнішнього проксі.
  • " Увімкнути проксі-сервер SSL " і додайте свою кінцеву точку до списку через проксі Чарльза | Налаштування проксі-сервера SSL.
  • " Встановити кореневий сертифікат Чарльза в iOS Simulator " через довідку Чарльза | Меню SSL-проксі-сервера.
  • І так, переконайтеся, що Чарльз налаштований і почав роботу першим, перш ніж запускати симулятор.
  • Нарешті, поки що вимкніть ATS під час розробки, поки ми не почуємо більше від Apple.

"Нарешті, наразі вимкніть ATS під час розробки, поки ми не почуємо більше від Apple". - Позначте, відсутні в інших відповідях вище.
Mark Gibaud

Дякую! Вони повинні розмістити це на веб-сайті Чарльза!
Rudolf J

Чарльз підтримує App Transport Security (ATS) станом на 3.11.4.
Маріан Черні,

1
+1 для зняття прапорця Автоматична конфігурація проксі . У мене є файл .pac у мережевому середовищі компанії, і через нього трафік симулятора може не з’являтися в Чарльзі.
iplus26,

«Переконайтеся, що в розділі« Проксі-сервер Чарльза | Налаштування проксі-сервера »встановлено прапорець« Увімкнути проксі-сервер Mac OS »та« Використовувати HTTP-проксі ». Це мені допоможе. Дякую!
S. Matsepura

17

Згідно з документацією Чарльза

IOS Simulator повинен використовувати налаштування системного проксі. Якщо цього не сталося, спробуйте вийти і перезапустити iOS Simulator. Починаючи з Xcode 6, здається, важливо, щоб Чарльз був запущений і встановлений як проксі-сервер Mac OS X, перш ніж запускати iOS Simulator.

Читайте тут

Тож просто вийдіть із симулятора, відкрийте Чарльз і знову запустіть програму. Після цього ви зможете відстежувати свої дзвінки в мережі.

ПРИМІТКА. Якщо ви кинете Чарльза, ваші дзвінки в мережі не зможуть. Тож вам потрібно буде або вийти з симулятора і запустити його знову, або знову відкрити Чарльза.


1
Я виявив, що якщо у вас встановлено URL-адресу проксі-сервера "autoconfigure", Charles Proxy не працюватиме. Здається, що URL-адреса автоматичного налаштування замінює будь-які ручні налаштування проксі-сервера. Видалення URL-адреси автоматичного налаштування та вказівка ​​ручних налаштувань (у моєму випадку з обліковими даними) дозволило Чарльзу переконфігурувати параметри, і це спрацювало .. навіть не перезапустивши iOS Simulator (7.1).
Шон Ейткен

12

Інший спосіб зробити це - перейти до сертифіката http://charlesproxy.com/charles.crt на пристрої

який представить вам екран:

екран запрошення сертифіката -


Я спробував цей метод, але він також не зміг завантажити захищений сайт під час запуску локального сервера. Хтось може пролити світло на те, як вирішити цю проблему?
Ganesh Pandhere

1
Спробуйте переглянути веб-сторінку за допомогою Safari, щоб перевірити, чи не було щось із сертифікатом. Для цього натисніть на символ замка для вашого веб-сайту. Діалогове вікно сертифікату Safari . Я підозрюю, що ви використовуєте сертифікат, який має власний підпис, і що вам потрібно встановити сертифікат клієнта на вашому комп'ютері. Цього можна досягти за допомогою Safari та вибравши Довіра -> 'завжди дозволяти'.
user1307434

Мені довелося це зробити, щоб позбутися помилок SSL Handshake.
Will Larche


2

Я не бачив сценарію оболонки конфігурації на цій сторінці. Я зробив наступне, і мені це вдалося:

http://raptureinvenice.com/getting-the-charles-debugging-proxy-to-work-with-ios-and-genymotion/


Ця відповідь краща, ніж @ jonsibley. Сценарій конфігурації на веб-сайті Чарльза зник.
Хай Фенг Као

Думаю, його щойно перенесли сюди: charlesproxy.com/documentation/faqs/…
Ян Дандас,

2

Перевір це:

Починаючи з Charles v3.9.3, у меню Довідка є пункт "Встановити сертифікат Charles CA SSL у симуляторах iOS", який автоматично встановить сертифікат SSL CA Charles у ваших симуляторах iOS.

Крім того, ви можете змінити свій код так, щоб NSURLConnection приймав будь-який сертифікат SSL. Будь ласка, перегляньте питання та відповідь щодо переповнення стека: Як використовувати NSURLConnection для підключення до SSL для ненадійного сертифіката?

Ви можете перевірити це за цим посиланням: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/


2

`` Встановити корінний сертифікат Чарльза в симуляторах iOS '' не працює в поточній версії CharlesProxy (3.11) із симуляторами Xcode 7 / iOS 9.

Натомість скористайтеся опцією «Встановити корінний сертифікат Чарльза на мобільний пристрій або віддалений браузер ...». Це дасть вам адресу для сертифіката.

Якщо ви відкриєте цю URL-адресу в Safari в симуляторі, вам буде надана можливість встановити сертифікат.

Потім вам все одно потрібно вимкнути безпеку транспорту додатків. Я не розумію, чому це потрібно, коли у вас встановлений сертифікат; Я думаю, CharlesProxy не використовує досить великі ключі / підписи.


Якщо нічого іншого, сертифікат має власний підпис, і це точно не буде відповідати вимогам Apple ATS. Перший крок - це підписання сертифіката Чарльза санкційним органом сертифікації, але якщо не брати до уваги логістику, це буде коштувати грошей. Домен також повинен бути публічним. І т. Д. І т. Д. Це буде непросто, якщо це взагалі можливо.
Hampden123,

@ Hampden123 Наскільки мені відомо, механізм захисту транспорту додатків від Apple дозволив би самостійно підписати сертифікат, якщо він був правильно встановлений на пристрій iOS як надійний сертифікат - отже, чому я вважаю, що charlesproxy потребує відключення ATS з іншої причини. На даний момент я не можу отримати доступ до документації Apple ATS, щоб перевірити це.
JosephH

Якщо ви (або хтось) успішно подаєте самопідписаний сертифікат на пристрій iOS 9, не відключаючи ATS, повідомте мене, як ви це робите. ТІА!
Hampden123

1

Просто (повторний) запуск Симулятора після того, як Чарльз починає, це виправив для мене.


1

Для тих, хто бореться з ненадійними з’єднаннями на симуляторах бета-версії Xcode 9:

Я не знаю, працює скрипт встановлення чи ні, але ви можете встановити сертифікат Чарльза так само, як і на фізичному пристрої - через Safari.

Останній крок, який необхідний (звичайно, після встановлення сертифіката або за допомогою сценарію, або через Safari): Перейдіть до налаштувань Simluator -> загальні -> про -> Налаштування довіри до сертифікатів -> Charles Proxy Custom Root ... -> увімкнути 💥


1

Кроки для симулятора iOS.

  • Встановити Чарльза - завантажити
  • Меню Чарльза -> Проксі -> Увімкнути проксі Mac
  • Меню Чарльза -> Інструменти -> Проксі -> Налаштування проксі -> MacOS -> Позначте всі прапорці
  • Встановіть сертифікат Чарльза на симуляторах iOS
  • Меню Чарльза -> Довідка -> Проксі-сервер SSL -> Встановити Charles Ceritificate в симуляторах iOS
  • Увімкніть сертифікат Чарльза в iOS Simulators
  • Налаштування симуляторів iOS -> Загальне -> Про мене -> Налаштування довіри сертифікатів -> Увімкнути
  • Якщо трафік не відображається, запустіть Charles перед симулятором

Кроки для iPhone / iPad.

  • Відкрити програму Charles на робочому столі (Mac / Windows)
  • Перейти до меню Чарльза -> Довідка -> Проксі-сервер SSL -> Встановити сертифікат Чарльза на мобільний пристрій або віддалений браузер -> Вибрати -> з'явиться спливаюче вікно з кроками нижче `

    Налаштуйте пристрій на використання Чарльза як HTTP-проксі на 192.168.0.100:8888 , а потім перейдіть до chls.pro/ssl, щоб завантажити та встановити сертифікат.

  • Перейдіть до налаштувань iPhone -> Wi-Fi -> натисніть вибраний wifi -> Http проксі -> Налаштуйте проксі -> виберіть Вручну -> Надати серверу як 192.168.0.100 та порту як 8888 -> Зберегти

  • Перейдіть до браузера iPhone -> Завантажити chls.pro/ssl -> З'явиться спливаюче вікно `

    Веб-сайт намагається завантажити конфігураційний профіль. Ви хочете дозволити це? Кнопку колонку Дозволити кнопку

  • Натисніть кнопку Дозволити -> Це завантажить профіль

  • Перейдіть до Налаштування iPhone -> Загальне -> Профілі -> Завантажений профіль -> Виберіть профіль Charles Proxy -> Встановити
  • Перейдіть до Налаштування iPhone -> Загальне -> Про мене -> Налаштування довіри сертифікатів -> Увімкнути - Сертифікат Чарльза Проксі CA
  • Тепер ми можемо відстежувати дзвінки програми iPhone у настільному додатку Чарльза

1
Налаштування симуляторів iOS -> Загальне -> Про мене -> Налаштування довіри сертифікатів -> Увімкніть те, що мені потрібно, дякую!
аталаяса

0

Для мене це те, що спрацювало.

Я зробив те саме, що ми робимо в пристрої.

  1. Відкрийте сафарі та перегляньте chls.pro/ssl
  2. Прийміть та встановіть сертифікат
  3. Зайдіть в Налаштування / Про мене / Довіряйте сертифікатам і довіряйте сертифікату Чарльза.

Я повинен зробити це в 3 екземплярах симулятора, оскільки тестування автоматизації XCUI може обертати 3.


0

Це працює для мене після переходу в сафарі (симулятор) та переходу за URL-адресою:

chls.pro/ssl 

До того, як мені довелося встановлювати кореневий сертифікат charles в симуляторах iOS (Charles: help / SSLproxying)

з повагою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.