Додавання самопідписаного сертифіката до iphone Simulator?


87

У мене є самопідписаний сертифікат у кінцевій точці мого API. Я намагаюся перевірити деякі речі за допомогою симулятора, але отримую "сертифікат ненадійного сервера".

Я намагався використати сафарі на тренажері для завантаження .crt-файлу, але, схоже, це не спрацьовує.

Звідки iPhone Simulator бере свій брелок? Як я можу додати надійний сертифікат, щоб моя програма працювала?

ОНОВЛЕННЯ

Я змусив це працювати, створивши CA, а потім додавши сертифікат CA за допомогою інструмента підготовки iPhone. Тоді мені вдалося отримати сертифікат, підписаний цим сертифікатом ЦС, на сервері API, і NSConnection щойно працював. Мені не вдалося змусити його працювати з використанням самопідписаного сертифіката з якихось причин. Мені потрібно повторити спробу за допомогою програмного забезпечення для забезпечення.

Моє справжнє запитання - як змусити це працювати на тренажері? Я думаю, що симулятор використовує брелок власне комп'ютера.


1
Нещодавно я вдарив це за допомогою хоста, якому довіряє сертифікат ЦС, який було імпортовано в брелок для входу на розробнику Mac. (Тобто мій локальний Safari довіряє сайту, але не симулятору.) Я був здивований, що він не працював із симулятором. Як користуватися інструментом підготовки iPhone для обробки надійних сертифікатів на тренажері?
mpontillo

Відповіді:


113

Лише для інформації, якщо хтось все ще стикається з цією проблемою:

просто перетягніть .cer файли у вікно запущеного Simulator. Ви побачите Safari, що блимає, а потім діалогове вікно імпорту вашого сертифіката (або Центру сертифікації) ...

Працюючи для iOS 7 Simulator (і я думаю, що працював і для iOS 6).


3
Перетягування прекрасно працює для симулятора iOS 7, безсумнівно. Я можу перевірити, що він НЕ працює на симуляторах iOS 6.0 / 6.1.
Джон Бауерс

2
це я, або з тих пір, як я вбудував Xcode 6, ця функція перетягування зараз працює лише у версії симулятора iOS 8. Спробував iPhone 5s iOS 7 та iOS 7.1 симулятор, нічого не відбувається, коли я перетягую сертифікат у вікно симулятора. І зараз я застряг і не можу протестувати свій додаток ні в чому, крім iOS 8.
Фред,

2
З’ясували обхідний шлях для iOS 7 і 7.1: помістіть файл .cer на доступний веб-сервер (додавши тип mime application / x-x509-ca-cert, якщо це потрібно) і використовуйте Safari на симуляторі для завантаження сертифіката з веб-сервера. Потім він попросить вас встановити його, як якщо ви перетягнули його.
Fred

3
Ти бог мій друг
CommaToast

1
ти той чоловік! Я знав, що це повинен бути швидкий спосіб.
pqsk

44

Для тих, хто виявив, що перетягування та скидання сертифіката на симуляторі не працює, нещодавно відбулася зміна, яка додає додатковий крок .

Симулятору потрібно прямо сказати довіряти кореневому ЦС. Зробіть це, перейшовши до:

Загальне -> Про мене -> Налаштування довіри сертифікатів -> "Увімкнути повне довіру до кореневого сертифіката" для вашого конкретного сертифіката

Дивіться повну відповідь тут :


13
Параметр "Увімкнути повне довіру до кореневого сертифіката" взагалі відсутній на моєму тренажері під управлінням iOS 10.3
Ісус Родрігес,

1
Ви коли-небудь вирішували цю проблему - кореневий сертифікат відсутній у списку Certificate Trust Settings? Доданий Мій профіль і включає в себе сертифікат - це просто працює менше , ніж місяць тому. Скиньте мої кеші симулятора, тепер сертифікат додано, але немає можливості повністю йому довіряти.
chrisp

3
У моєму випадку параметр "Увімкнути повне довіру до кореневого сертифіката" з'являється лише для кореневих сертифікатів. Це не відображається для проміжних або листкових сертифікатів.
Джон Гірата,

1
Я також виявив, що в сертифікаті для параметра базового обмеження ЦС має бути встановлено значення true: basicConstraints = CA:TRUEпри генерації сертифіката за допомогою openssl. В іншому випадку він не виявиться надійним.
sandinmyjoints

3
Схоже, що 12.2 (можливо, і попередні версії) процедура тепер перейти до загальних> профілів, вибрати сертифікат та натиснути на встановлення у верхньому правому куті
MaxPRafferty

23

У мене ця проблема виникла місяцями, і сьогодні я, нарешті, вирішив її за допомогою:

ADVTrustStore

Ви хочете використати проект під назвою ADVTrustStore від github. Він робить якусь химерну магію, але він правильно встановить сертифікати у ваш кореневий магазин довіри на симуляторі.

Етапи встановлення власного сертифіката

# Clone the repo
git clone https://github.com/ADVTOOLS/ADVTrustStore.git

# Enter the repo directory
cd ADVTrustStore/

# Copy your .crt file 
cp somewhere/something.crt my.crt

# conver to a .pem file
openssl x509 -in my.crt -out my.pem -outform PEM

# Install the pem in the simulators
./iosCertTrustManager.py -a my.pem

Використовуючи цей процес, я зміг отримати зображення GoogleStreetView для правильної візуалізації, перебуваючи за корпоративним брандмауером, використовуючи SSL, що звільняється із самопідписаними сертифікатами

Передумови

Я використовував CharlesProxy, і я помітив, що він правильно встановлював сертифікати в симуляторі, але вони не відображалися в розділі Налаштування - Профілі . Потім після деяких пошуків я виявив цей інструмент. Напевно, є кілька інших інструментів, але в моєму випадку функція перетягування ніколи не працювала коректно для всіх випадків. Safari було б добре, але не мої програми.


3
ПОРАДА: перезапустіть симулятор, щоб встановити новий сертифікат.
Kiko Seijo

1
Це зробило для мене фокус із симулятором Xcode 10.1 та iPhone 5s 12.1. Потрібно лише переконатись, що скажете сценарію встановити сертифікат у потрібному тренажері. Якщо ви використовуєте це у поєднанні з badssl.test (тобто badssl працює локально в докері), вам потрібно буде зламати .pem, щоб видалити все, крім власне сертифіката.
Ендрю

це врятувало мені життя. майже немає підтримки громади для встановлення самопідписаних сертифікатів в ios. Дякую!
lsimonetti

Я підтверджую, що це працює в Simulator 10.3 для iPhone X з iOS 12.4.
Сергій Башаров

9

Погляньте на сценарій оболонки, який Чарльз використовує, щоб встановити їх самопідписаний сертифікат у брелок симулятора. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

Дивіться також:

Схоже, для встановлення власного сертифіката в тренажері може знадобитися встановити його на пристрій за допомогою Safari, а потім скопіювати отриманий рядок із пристрою TrustStore.sqlite3в тренажер.


Відповідь @nailer оновлена ​​ще кількома посиланнями, наскільки я знаю, формат цих BLOB-файлів у TrustStore.sqlite3 є непрозорим (і, можливо, може бути змінений), тому, схоже, підхід, який застосовують інші, полягає в установці сертифіката на пристрій через Safari і копіюючи отриманий рядок TrustStore в їх симулятор.
Йона

8

Для тих, хто використовує OS X Catalina, перевірте це: https://forums.developer.apple.com/thread/124056 .

В даний час Каталіна блокує доступ до папки «Робочий стіл», «Документи» та «Завантаження». Я перемістив файли сертифікатів до спільної папки та перетягнув файли на симулятор звідти.


3
Дай

2

Використання iPhone резервного Extractor , я скопіював мій iPhone в TrustStore.sqlite3INTO ~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains, перезаписувати існуючий файл. Я намагався вставити лише один рядок із наступним sqlite, але не зміг змусити його працювати.

sqlite3 ~/backup/iOS\ Files/TrustStore.sqlite3
sqlite3>.mode insert
sqlite3>.output working.sql
sqlite3>select * from tsettings;
sqlite3>.quit

Тепер working.sqlмає весь вміст таблиці налаштувань (у моєму випадку 1 рядок).

sqlite3 ~/Library/Application\ Support/iPhone\ Simulator/6.0/Library/Keychains/TrustStore.sqlite3
sqlite3>INSERT INTO tsettings VALUES(X'...
sqlite3>.quit

Знову ж, наведені вище команди sqlite не працювали для мене, але можуть стати гарною відправною точкою для когось іншого. Копіювання всього TrustStore.sqlite3із резервної копії в симулятор спрацювало чудово.


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