Добавление самозаверяющего сертификата в iphone Simulator? - PullRequest
70 голосов
/ 08 февраля 2010

У меня есть самозаверяющий сертификат в конечной точке моего API. Я пытаюсь проверить некоторые вещи с помощью симулятора, но получаю «сертификат недоверенного сервера».

Я пытался использовать safari на симуляторе для загрузки файла .crt, но, похоже, это не работает.

Откуда iPhone Simulator получает свою связку ключей? Как добавить доверенный сертификат, чтобы мое приложение работало?

UPDATE

Я заставил его работать, создав ЦС, а затем добавив сертификат ЦС с помощью инструмента подготовки iPhone. Затем я смог получить сертификат, подписанный этим сертификатом CA на сервере API, и NSConnection просто сработало. По какой-то причине мне не удалось заставить его работать, используя самозаверяющий сертификат. Мне нужно повторить попытку с помощью программного обеспечения.

Мой реальный вопрос: как мне заставить это работать на симуляторе? Я думаю, что симулятор использует брелок реального компьютера.

Ответы [ 6 ]

98 голосов
/ 18 ноября 2013

Только для информации, если кто-то все еще сталкивается с этой проблемой:

просто перетащите файлы .cer в окно запущенного симулятора. Вы увидите мигание Safari, а затем диалоговое окно импорта для вашего сертификата (или центра сертификации) ...

Работа для симулятора iOS 7 (и я думаю, что он работал и для iOS 6).

33 голосов
/ 09 мая 2017

Для тех, кто считает, что перетаскивание сертификата на симуляторе не работает, было недавнее изменение , которое добавляет дополнительный шаг .

Симулятору необходимо явно указать, что он должен доверять корневому центру сертификации. Сделайте это, перейдя по адресу:

Общие -> О программе -> Настройки доверия сертификата -> «Включить полное доверие для корневого сертификата» для вашего конкретного сертификата

См. Полный ответ здесь :

16 голосов
/ 08 сентября 2017

У меня была такая же проблема в течение нескольких месяцев, и сегодня я НАКОНЕЦ решил ее с помощью:

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 и заметил, что он правильно устанавливает сертификаты в симуляторе, но они не отображаются в разделе Настройки - Профили . Затем после некоторых поисков я обнаружил этот инструмент. Вероятно, есть несколько других инструментов, но в моем случае перетаскивание никогда не работало правильно для всех случаев. Сафари было бы хорошо, но не мои приложения.

9 голосов
/ 12 сентября 2012

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

Смотри также:

Похоже, что для установки собственного сертификата в симуляторе может потребоваться его установка на устройстве через Safari, а затем копирование полученной строки из TrustStore.sqlite3 устройства в симулятор.

2 голосов
/ 18 декабря 2012

Используя iPhone Backup Extractor , я скопировал TrustStore.sqlite3 моего iPhone в ~/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 из резервной копии в симулятор работало просто отлично.

0 голосов
/ 16 апреля 2015

Взгляните на iostrust Рубиновый камень: http://github.com/yageek/iostrust

...