Я разрабатываю платформу iPhone, которая отправляет HTTPS-запросы для связи с общедоступным внутренним сервером. В настоящее время у меня большая проблема с сертификатами ненадежного сервера.
Сертификат внутреннего сервера не подписан доверенным центром сертификации, поэтому мой первый подход состоял в том, чтобы использовать закрытое свойство NSURLRequest allowAnyHTTPSCertificateForHost. Несмотря на то, что это сработало, как ожидалось, и в качестве временного решения проблемы, наш клиент требует чистого решения в качестве конечного результата. Поэтому я написал метод, который позволяет установить предоставленный сертификат из файловой системы в цепочку для ключей, но этот метод не работает, как ожидалось в iPhone Simulator. Сертификат вместо этого устанавливается в цепочку ключей Mac OS X на главном компьютере. К сожалению, если я вызываю метод sendSynchronousRequest от NSURLConnection, я получаю ошибку «сертификат недоверенного сервера». Кажется, что NSURLConnection не может получить доступ к цепочке ключей Mac OS X хоста для получения сертификата.
Правильно ли мое предположение или я что-то упустил?
Сработал бы мой подход, если бы я запустил свое приложение на реальном устройстве iPhone (у меня его еще нет)?
Существует ли вообще брелок в симуляторе iPhone?
Можно ли вообще отправлять запросы HTTPS на сервер с ненадежным сертификатом на симуляторе iPhone или мне нужно использовать директивы прекомпилятора для реализации различных подпрограмм в зависимости от базовой платформы (симулятора или устройства, соответственно)?
Любая помощь высоко ценится.
Спасибо,
Matthias