Ошибка "Сертификат сервера не доверена" в приложении iPhone

Я использую мое приложение для iPhone на моем iPhone 3G OS 3.0.1 без каких-либо проблем. Приложение подключается к URL-адресу API в https://api.serverdensity.com/1.0/, и все запросы проходят через него.

Пользователь приложения сообщил, что теперь они неожиданно получают ошибку "сертификат ненадежного сервера". Никакие другие пользователи не испытывают эту проблему (что я знаю), и я не могу воспроизвести ее.

Сертификат SSL является подстановочным сертификатом на *.serverdensity.com. Он приобретается у GoDaddy и действует до мая 2010 года.

Кроме того, пользователь работает под управлением ОС 3.0.1, время и дата установлены правильно на устройстве, и если он посещает URL-адрес API в Safari, он правильно загружается.

Любые предложения по причине этого?

Ответ 1

Ранее мы использовали "жестко закодированный" метод аутентификации с использованием базового HTTP AUTH при подключении к нашему API:

NSString *requestURL = [NSString stringWithFormat:@"https://%@:%@@api.serverdensity.com/1.0/?account=%@.serverdensity.com&c=%@", username, password, account, command];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

но переключился на использование "правильного" метода в нашем последнем обновлении:

NSString *requestURL = [NSString stringWithFormat:@"https://api.serverdensity.com/1.0/?account=%@.serverdensity.com&c=%@", account, command];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0];

используя NSURLCredential, чтобы правильно обрабатывать HTTP-аутентификацию. После этого обновления ошибка сертификата исчезла для соответствующего пользователя.

Ответ 2

У меня была такая же проблема!

Установили ли вы "пакет промежуточного сертификата"? Если вы этого не сделаете, вы получите сертификат ненадежного сервера на всех мобильных платформах (и некоторых ПК).

Цитата из веб-сайта:

Перед установкой выданного SSL-сертификата вы должны загрузить и установить наш промежуточный комплект сертификатов на своем веб-сервере. Вы также можете загрузить пакет из репозитория.

Ознакомьтесь с инструкциями по установке GoDaddy SSL для настройки вашего веб-сервера.

Промежуточный сертификат Bundle можно найти здесь.

Ответ 4

Пожалуйста, проверьте настройки даты и времени на вашем iPhone или iPod, если вы столкнулись с ошибкой, говорящей "сертификат ненадежного сервера".

После исправления даты и времени с iPhone/iPod "Настройка". Он автоматически позаботится обо всех приложениях (то есть Yahoo messenger, Citrix, Push mail... и т.д.) Встретит проблему с сертификатом "Неверный сервер". Просто попробуй. Надеюсь, это поможет вам. Спасибо.

Ответ 5

Ранние устройства iOS и android поставлялись с базой данных корневых сертификатов меньшего размера, чем у настольных браузеров. Вам необходимо объединить свои промежуточные сертификаты CA с сертификатом вашего сервера и отправить веб-сервер на телефон. Позднее выпуски iOS и android исправляют это, добавляя больше сертификатов ca на устройство.

Ответ 6

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

Это редко, но это может произойти, если пользователь переходит на точку доступа Wi-Fi, которая вставляет свою страницу входа в попытку подключения. Это действительно правильное поведение для SSL, и это вызвано тем, что "горячая точка" эффективно выполняет перенаправление "человек-в-середине" для вашего URL-адреса.

Они могут исправить это, сначала перейдя в Safari и получив соединение.

OS3.0 должен сделать некоторый автоматический вход в этот вид горячей точки, но по моему опыту он не всегда работает.

edit: чтобы добавить, прежде чем использовать SSL, я использовал для обнаружения этого для простого http и установил соответствующее сообщение об ошибке. Вероятно, желательно поймать эту ошибку в вашем приложении и поставить аналогичное сообщение "вы можете подключиться к горячей точке, требующей входа в систему" ​​и т.д. Теперь, когда вы напомнили мне, мне нужно сделать это в своем собственном приложение.

Ответ 7

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

Ответ 8

Я бы подтвердил, что ваш телефон может загружать любые https://URL-адреса без предупреждения. У меня старый iPhone 3.1.3, который почему-то предупреждает о каждом встречаемом им сертификате. Не знаете, в чем причина, но это делает ее почти бесполезной для тестирования моего веб-сервиса.