Ошибка "сертификат сервера ненадежен" в приложении 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, он загружается правильно.
любые предложения по причине этого?
8 ответов
У меня была такая же проблема!
вы установили там "промежуточный пакет сертификатов"? Если вы этого не сделаете, вы получите сертификат ненадежного сервера на всех мобильных платформах (а также на некоторых ПК).
Цитата Веб-Сайта:
перед установкой выданного SSL-сертификата необходимо загрузить и установить наш пакет промежуточных сертификатов на веб-сервере. Вы также можете загрузить пакет из репозитория.
Проверьте GoDaddy SSL инструкции по установке для настройки веб-сервера.
промежуточный пакет сертификатов можно найти здесь.
похоже, что все проверяется с установкой сертификата. Все промежуточные сертификаты отправляются сервером:http://www.sslshopper.com/ssl-checker.html?hostname=api.serverdensity.com
пожалуйста, проверьте дату и время установки вашего iPhone или iPod, если вы столкнулись с ошибкой говоря "ненадежный сертификат сервера".
после исправления даты и времени с iPhone/iPod "настройка". Он автоматически позаботится обо всех приложениях (например, Yahoo messenger, Citrix, Push mail ....etc) встречает проблему "ненадежного сертификата сервера". Просто попробуй. Надеюсь, это немного поможет вам. Спасибо.
ранние устройства iOS и android поставляются с базой данных root-сертификатов размером меньше, чем настольный браузер. Вам нужно объединить промежуточные сертификаты CA с сертификатом сервера и отправить их на веб-сервер по телефону. Более поздние версии iOS и android исправляют это, включая больше сертификатов ca на устройстве.
Я действительно видел это с моим собственным приложением, которое также использует сертификат godaddy - и да, я установил промежуточные сертификаты на своем сервере.
Это редко, но это может произойти, если пользователь переходит на точку доступа wifi, которая вставляет свою страницу входа в попытку подключения. Это на самом деле правильное поведение для SSL, и это вызвано тем, что hotspot эффективно выполняет перенаправление человека в середине для вашего URL.
Они могут исправить это, сначала зайдя в Safari и получив соединение работает.
OS3.0 должен сделать автоматический вход в эту точку доступа, но по моему опыту это не всегда работает.
edit: чтобы добавить, прежде чем я использовал SSL, я использовал это для простого http и разместил соответствующее сообщение об ошибке. Вероятно, рекомендуется поймать эту ошибку в вашем приложении и поместить аналогичное сообщение "вы можете быть подключены к точке доступа, которая требует от вас входа" и т. д. Теперь, когда ты напомнил мне, я должен сделать это сам. приложение.
ранее мы использовали "жестко закодированный" метод аутентификации с использованием базовой HTTP-аутентификации при подключении к нашему 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. После этого обновления ошибка сертификата исчезла для соответствующего пользователя.
Я видел такое же сообщение об ошибке на взломанном тестовом телефоне, но не на других тестовых телефонах. Я никогда не исследовал его дальше, но подумал, что упомяну, если это поможет...
Я бы подтвердил, что ваш телефон может загружать любые https: / / urls без предупреждения. У меня есть старый 3.1.3 iPhone, который по какой-то причине предупреждает о каждом сертификате, с которым он сталкивается. Не уверен, в чем причина, но это делает его почти бесполезным для тестирования моего веб-сервиса.