Добавление самоподписанного сертификата в симулятор iphone?

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

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

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

UPDATE

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

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

Ответ 1

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

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

Работа для iOS 7 Simulator (и я думаю, тоже работала для iOS 6).

Ответ 2

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

Симулятор должен быть явно передан доверенному корневому ЦС. Сделайте это, перейдя к:

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

Подробнее см. здесь:

Ответ 3

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

См. также:

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

Ответ 4

Используя iPhone Backup Extractor, я скопировал свой iPhone TrustStore.sqlite3 в ~/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 содержит все содержимое таблицы tsettings (в моем случае, 1 строка).

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

Опять же, приведенные выше команды sqlite не сработали для меня, но могут быть хорошей отправной точкой для кого-то другого. Копирование всего TrustStore.sqlite3 из резервной копии в симулятор работало нормально.

Ответ 5

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

ADVTrustStore

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

Шаги по установке настраиваемого сертификата

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