Вопрос: Развертывание корпоративного приложения не работает на iOS 7.1


Мы распространяем приложения через учетную запись Enterprise, используя itms-services:// URL. Это всегда срабатывало нормально, но после установки бета-версии iOS 7.1 на нашем iPad он отказывается устанавливать. Вместо этого мы просто получаем общий Cannot connect to example.com сообщение, которое iOS бесполезно отображает, когда есть какая-либо проблема при загрузке приложения.

Я не смог найти что-либо здесь на SO, в Google или в примечаниях к выпуску 7.1, чтобы предположить, что может вызвать проблему.


310


источник


Ответы:


Я нашел проблему, подключив iPad к компьютеру и просмотрев консоль через XCode Organizer при попытке установить приложение. Ошибка получается:

Не удалось загрузить URL-адрес не-https-манифеста: http://example.com/manifest.plist

Оказывается, что в iOS 7.1 URL-адрес manifest.plist файл должен быть HTTPS, где мы использовали HTTP. Изменение URL-адреса для HTTPS разрешило проблему.

То есть

itms-services://?action=download-manifest&url=http://example.com/manifest.plist

становится

itms-services://?action=download-manifest&url=https://example.com/manifest.plist

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


329



ingconti прав.

  1. Загрузите приложение app.plist в Dropbox.
  2. Получить общую ссылку app.plist, например https://www.dropbox.com/s/qgknrfngaxazm38/app.plist
  3. замещать www.dropbox.com с dl.dropboxusercontent.com в ссылке, например https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist
  4. Удалите все параметры в связанной с Dropbox ссылке, например, «? Dl = 0t» (согласно Carlos Aguirre Tradeco at Развертывание корпоративного приложения не работает на iOS 7.1  и мой собственный опыт).
  5. Создать download.html файл со ссылкой, отформатированной как <a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist">INSTALL!!</a>
  6. Загрузите download.html к Dropbox
  7. Опять же, получите общую ссылку download.html, например https://www.dropbox.com/s/gnoctp7n9g0l3hx/download.html , и удалите все параметры.
  8. замещать www.dropbox.com с dl.dropboxusercontent.com во втором звене также, как https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html

Теперь посетите https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html на вашем устройстве вы можете установить приложение, как раньше.

ЧТО ЗА ЧУДЕСНЫЙ МИР!


228



В дополнение к ответу Марка Парнелла быстрый и грязный способ обойти это состоит в том, чтобы поместить манифест plist в Dropbox, а затем с помощью веб-интерфейса Dropbox, чтобы получить прямую ссылку https к нему ('Share link' -> ' Получить ссылку '->' Скачать ').

Фактический ipa может оставаться там, где вы всегда его обслуживали. Вам нужно будет URL-кодировать URL-адрес plist, прежде чем вставлять его в запрос URL-адреса itms-servivces (хотя просто замена любых & gt;% 3D может работать).

Один недостаток заключается в том, что диалоговое окно установки теперь будет читать «dl.dropbox.com хочет установить [все]».


72



Это правда, что в будущем вы ожидаете, что все развертывания OTA превысят https в будущем с iOS7.1. Позор Apple, чтобы не документировать это.

Для тех из вас, кто ищет лучшее внутреннее решение, чем полагаться на dropbox или вынуждает выкапывать наличные деньги за сертификат, вы можете получить решение, если будете следовать шагам, изложенным в подсказке № 5 здесь: http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/

Суть его в том, что:

  • Создайте свой собственный сертификат центра сертификации, который вы можете установить на полностью доверенное устройство (я установил его просто по электронной почте)
  • Создайте пару key / cer против корневого сертификата и установите его на свой сервер
  • Убедитесь, что ваш веб-сервер использует пару key / cer, которая соответствует корневому сертификату CA Authority
  • На этом этапе вы сможете установить свои приложения, как обычно, поверх https
  • Все это можно выполнить на OSX с помощью openssl, который уже установлен по умолчанию

Это не то же самое, что просто делать самозаверяющий сертификат, в этом решении вы также являетесь своим собственным центром сертификации. Если ваш корневой сертификат, установленный на вашем устройстве Apple, не отмечен как «Доверенный» (зеленый), тогда что-то не так. Сделать это более.

Это абсолютно работает.

Обновление: 3/13/2014. Я предоставил небольшую утилиту командной строки, которая упрощает весь этот процесс. Вы можете получить его по адресу: https://github.com/deckarep/EasyCert/releases


36



У меня была такая же проблема, и хотя я уже пользовался сервером SSL, просто изменение ссылок на https не работало, так как была основная проблема.

enter image description here Нажмите здесь для изображения

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


Я был недоволен существующими решениями, потому что:

  • Некоторые параметры требуют зависимости от стороннего (Dropbox)
  • Мы не хотели платить за SSL-сертификат
    • Бесплатные сертификаты SSL являются лишь временным решением.

Я, наконец, нашел решение, создав Авторизованный корневой центр сертификации  и используя SSL-сертификат нашего сервера.

Я использовал Keychain Access и OSX Server, но есть и другие допустимые решения для каждого шага


Создание центра сертификации

Из того, что я собираю, органы сертификации используются для проверки подлинности сертификатов. Поскольку мы собираемся создать их самостоятельно, это не совсем безопасный , но это означает, что вы можете доверять всем сертификатам от данного органа. Список этих полномочий обычно включается по умолчанию в ваши браузеры, поскольку они на самом деле  доверять. (GeoTrust Global CA, Verisign и т. Д.)

  • Откройте брелок и используйте помощника сертификата для создания полномочий

enter image description here 

  • Заполните свою информацию о сертификате

enter image description here

  • Я не знаю, нужно ли это, но я доверял доверенности.

enter image description here


Создание запроса на подпись сертификата

В нашем случае запросы на подпись сертификата генерируются администратором сервера. Просто это файл, который спрашивает: «Могу ли я получить сертификат с этой информацией для моего сайта».

  • Затем вам нужно будет создать свой Запрос на подпись сертификата  (Я использовал диспетчер сертификатов OSX Server для этого бита

enter image description here 

  • Заполните свою информацию о сертификате (должны содержать только символы ascii !, спасибо @Jasper Blues)

enter image description here

  • Сохраните создание CSR где-нибудь

enter image description here


Создание сертификата

Вновь действуя как центр сертификации, вам решать, действительно ли человек, который послал вам CSR, является подлинным, и они не притворяются кем-то другим. У реальных властей есть свои способы сделать это, но поскольку вы, надеюсь, совершенно уверены, что вы являетесь, ваша проверка должна быть совершенно уверенной :)

  • Вернитесь к Keychain Access и откройте опцию «Создать сертификат ..», как показано

enter image description here 

  • Перетащите сохраненную CSR в указанный квадрат

enter image description here

  • Нажмите «Позвольте мне переопределить значения по умолчанию для этой кнопки запроса»

enter image description here

  • Мне нравится увеличивать срок действия.

enter image description here

  • По какой-то причине нам нужно снова заполнить некоторую информацию

enter image description here

  • Нажмите «Продолжить» на этом экране.

enter image description here

  • УБЕДИТЕСЬ, ЧТО ВЫ НАЙДЕТЕ ПОДТВЕРЖДЕНИЕ SSL СЕРВЕР , это вызвало у меня головную боль.

enter image description here

  • Вы можете щелкнуть по остальным параметрам.

  • Откроется приложение Mail, дающее вам возможность отправить сертификат. Вместо отправки по электронной почте щелкните правой кнопкой мыши и сохраните его.

enter image description here


Установка сертификата

Теперь нам нужно настроить сервер для использования только что созданного сертификата для его трафика SSL.

  • Если устройство, на котором вы работаете является  ваш сервер, вы можете обнаружить, что сертификат уже установлен.

enter image description here

  • Если это не так, дважды щелкните по ожидающему сертификату и перетащите файл PEM, который мы только что сохранили из электронной почты, в указанное пространство. (Кроме того, вы можете экспортировать PEM из брелка, если вы его не сохранили.)

enter image description here

  • Обновите сервер, чтобы использовать этот новый сертификат. Если вы обнаружите, что новый сертификат не будет «придерживаться» и будет продолжать возвращаться, вернитесь к биту в БЫСТРЫЕ ИТАЛИЯ

enter image description here


Настройка устройств

Каждому устройству, на котором нужно установить приложения, должна быть копия этого центра сертификации, чтобы они знали, что могут доверять сертификатам SSL от этого органа

  • Вернитесь к Keychain Access и экспортируйте свой сертификат в качестве .cer

enter image description here

  • Затем я помещаю этот файл на свой сервер с помощью своих приложений OTA, пользователи могут щелкнуть эту ссылку и загрузить сертификат полномочий. Отправка сертификата непосредственно пользователям также является допустимым вариантом.

enter image description here

  • Установите сертификат на свое устройство.

enter image description here


Контрольная работа

  • Убедитесь, что ваши plist-ссылки https

    • Попробуйте и установите приложение! Теперь он должен работать. Органу сертификации доверяют, и сертификат SSL поступает от этого органа.

33



Я могу подтвердить, что он работает, но вы должны поместить html и plist в dropbox. Он также работает для OTA для не-предприятий, т. Е. Вы хотите поделиться своим приложением с вашим разработчиком. команда.

Я сделал:

а) на моем сайте я сделал страницу с этой ссылкой:

.. href = "https://dl.dropboxusercontent.com/u//(your DB id) /ipa.html"> MyApp

б) на DropBox я написал еще одну HTML-страницу:

.. https://dl.dropboxusercontent.com/u/(your DB id) /MyApp.plist ">     Нажмите, чтобы установить MyApp

c) переместил plist на DropBox, но оставил его POINT на моем старом сервере (без https)


6



Open up terminal and run the command: curl -i https:// (.ipa file path not plist)

This will tell you whether or not the installer can see the IPA file. If you run the curl command with the '-i' you'll see the full response and it's probably not the IPA file. This is the response the installer sees, so if it's not returning HTTP 200 and an IPA you'll need to return it on your end.

The ITMS installer doesn't save any context from Safari. If you authenticated into a secure portal in Safari, the authentication cookies aren't pass to the the installer. i.e. The installer needs to be able to see the app without authentication and this could be the reason you are getting 'Cannot connect to server'.


3



I had same trouble and did as mentioned above.

  • Put the plist in dropbox.
  • Over the download file button, below an image of the document with mouse right button select the copy link action. This link is already something like https://dl.dropboxusercontent.com/s/xyz123/app.plist?stuff=stuff with many params.
  • Remove the parameters (kept only address between https and .plist)
  • Browse for url encode online, selected one of those links, copy, paste, execute, then the resulting text copied and pasted into the html where I have the itms-services link. By the way I have this html in two different locations, one of those is where the ipa is located.
  • Make sure the plist includes absolute references to the ipa file.

Both pages worked successfully for installing the app in iphones with ios 7.1

But, now iphones with ios 7.0x can't install the app.

I created a new question: upgraded adhoc app deployment doesnt work on ios previous to 7.1

Both issues are tightly related, and also bonded by the lack of official references.


2