Добавление самоподписанного сертификата в симулятор 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 будет хорошо, но не мои приложения.
Ответ 6
Взгляните на драгоценный камень iostrust
Ruby: http://github.com/yageek/iostrust