У меня есть самозаверяющий сертификат в конечной точке моего API. Я пытаюсь протестировать некоторые вещи с помощью симулятора, но получаю «сертификат ненадежного сервера».
Я пытался использовать сафари на симуляторе, чтобы загрузить файл .crt, но, похоже, это не сработало.
Откуда в iPhone Simulator брелок для ключей? Как я могу добавить доверенный сертификат, чтобы мое приложение работало?
ОБНОВИТЬ
Я заставил его работать, создав ЦС, а затем добавив сертификат ЦС с помощью инструмента подготовки iPhone. Затем я смог получить сертификат, подписанный этим сертификатом CA на сервере API, и NSConnection просто заработал. Мне по какой-то причине не удалось заставить его работать, используя самоподписанный сертификат. Мне нужно повторить попытку с помощью программного обеспечения для подготовки.
Мой настоящий вопрос в том, как заставить это работать на симуляторе? Я бы подумал, что в симуляторе используется связка ключей реального компьютера.
Ответы:
Просто для информации, если кто-то все еще сталкивается с этой проблемой:
просто перетащите файлы .cer в окно работающего симулятора. Вы увидите мигающий Safari, а затем диалоговое окно импорта для вашего сертификата (или центра сертификации) ...
Работает для iOS 7 Simulator (и я думаю, что работал и для iOS 6).
источник
Для тех, кто обнаруживает, что перетаскивание сертификата в симуляторе не работает, недавно было внесено изменение, которое добавляет дополнительный шаг .
Симулятору необходимо явно указать доверять корневому ЦС. Сделайте это, перейдя:
Смотрите полный ответ здесь :
источник
Certificate Trust Settings
? Добавлен Мой профиль и включает в себя сертификат - это просто работает меньше , чем месяц назад. Сбросьте мои кеши симулятора, теперь сертификат добавлен, но нет возможности полностью доверять ему.basicConstraints = CA:TRUE
при создании сертификата с использованием openssl. В противном случае ему не будут доверять.У меня была такая же проблема в течение нескольких месяцев, и сегодня я НАКОНЕЦ решил ее:
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 подойдет, но не мои приложения.
источник
Взгляните на сценарий оболочки, который Чарльз использует для установки самоподписанного сертификата в связку ключей симулятора. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/
Смотрите также:
Похоже, что для установки вашего собственного сертификата в симуляторе может потребоваться установить его на устройстве через Safari, а затем скопировать полученную строку с устройства
TrustStore.sqlite3
в симулятор.источник
Для тех, кто использует OS X Catalina, проверьте это: https://forums.developer.apple.com/thread/124056 .
Каталина в настоящее время блокирует доступ к рабочему столу, папке «Документы» и «Загрузки». Я переместил файлы сертификатов в общую папку и перетащил файлы в симулятор оттуда.
источник
Использование iPhone резервного Extractor , я скопировал мой iPhone в
TrustStore.sqlite3
INTO~/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
из резервной копии в симулятор работало нормально.источник
Взгляните на
iostrust
гем Ruby: http://github.com/yageek/iostrustисточник