2009-08-22 2 views
10

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

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

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

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

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

ответ

2

Мы были ранее с помощью «жёстко прописанные» метод аутентификации с использованием базовой 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. После этого обновления ошибка сертификата исчезла для соответствующего пользователя.

6

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

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

Веб-сайт Цитата:

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

Заполните GoDaddy SSL install instructions для настройки веб-сервера.

Пакет промежуточного сертификата можно найти here.

+0

Право, но если это была проблема, это всегда должно происходить. звучит так, что это прерывисто. – frankodwyer

+0

Когда это случилось со мной, это было странно. Он работал, после чего он прекратил работу после определенной даты. Поэтому для меня это было не прерывистым, но от работы до работы не было никакой реальной причины. –

+1

Yeh, я действительно установил пакет и фактически написал об этом блог - http://blog.boxedice.com/2009/05/11/godaddy-ssl-certificates-and-cannot-verify-identity-on-macsafari/. Однако, если это была проблема, я ожидал увидеть и ошибку в браузерах. – DavidM

2

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

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

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

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

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

+0

Пользователь говорит, что он пробовал как по Wi-Fi, так и сотовые сети передачи данных с той же ошибкой. Он также переустановил приложение. – DavidM

+0

Это действительно странно, что он работает в Safari, но не от вашего клиента. Используете ли вы стандартный материал для загрузки URL и какую политику кэша используете? Пробовал ли пользователь очистить кеш Safari? – frankodwyer

+0

Это действительно полезное предложение, так как большинство приложений, которые подключаются к API через HTTPS, столкнутся с этой проблемой. –

0

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

4

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

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

+0

Работал как шарм. Спасибо! – johnnieb

0

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

3

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

Смежные вопросы