エンタープライズアプリの展開がiOS 7.1で機能しない


317

itms-services://URL を使用して、エンタープライズアカウント経由でアプリを配布します。これは常に問題なく動作していましたが、iPadにiOS 7.1ベータ版をインストールした後、インストールを拒否しました。代わりにCannot connect to example.com、アプリのダウンロードになんらかの問題がある場合にiOSが役に立たないように表示する一般的なメッセージが表示されます。

SO、Google、または7.1リリースノートでは、何が問題の原因であるかを示唆するものを見つけることができませんでした。


1
これには、Mavericksサーバーの一部であるビルドサーバーも含まれますか?
Dan

これは、OS Xサーバーでも同様に機能しませんでした。
toofah 2014年

回答:


330

アプリをインストールしようとしているときにiPadをコンピューターに接続し、XCode Organizerを介してコンソールを表示することで問題が見つかりました。エラーは次のようになります。

https以外のマニフェストURLを読み込めませんでした:http : //example.com/manifest.plist

iOS 7.1では、manifest.plistファイルのURLは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証明書が必要だと思います。私たちはすでにそうしましたが、それなしでは問題が発生すると思います。


5
Webサイト用の自己署名SSL証明書を作成できます。iPhone構成ユーティリティを使用してプロファイルを作成し、証明書をデバイスで信頼できるようにすることを忘れないでください。
Niralp 2013

1
@SantaClaus「itms-services://」のリンクにhttp://ではなくhttps://が含まれていることを確認しましたか?さらに、plistにHTTPSを使用したIPA URLも含まれていることを確認してください。
Niralp 2013

3
@Niralpと同じ問題が発生しています。自己署名SSL証明書を使用してApacheサーバーをセットアップしました。サーバーはSSLで問題なく動作しているようですが、OTAリンクはまだ機能せず、上記のエラーが報告されます。証明書をiOSデバイスにインストールしましたが、それでも違いはありませんでした。何かご意見は?
toofah 2014年

5
私は自分の認証局を作成し、それでWebサーバーのSSL証明書に署名しました。Apple Configuratorを使用して、このCAを信頼できるものとしてマークするプロファイルを作成できます。その後、インストールは期待どおりに機能します。
Monobono 2014年

1
manifest.plistに含まれるURLはHTTPSである必要はないことに注意してください。ITMS URLのみをHTTPSにする必要があります
Brody Robertson 14

233

ingcontiは正しいです。

  1. app.plistをDropboxにアップロードします。
  2. https://www.dropbox.com/s/qgknrfngaxazm38/app.plistのようなapp.plistの共有リンクを取得する
  3. https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plistのように、リンクでwww.dropbox.comと置き換えますdl.dropboxusercontent.com
  4. 「?dl = 0t」などのDropbox共有可能リンクのパラメーターをすべて削除します(エンタープライズアプリのデプロイでのCarlos Aguirre Tradecoは、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.htmlDropboxにアップロード
  7. 再度、download.htmlの共有リンク(https://www.dropbox.com/s/gnoctp7n9g0l3hx/download.htmlなど)を取得し、パラメーターを削除します。
  8. 交換するwww.dropbox.comdl.dropboxusercontent.com、第2のリンクにも、同様https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html

これhttps://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.htmlで、デバイスにアクセスして、以前と同じようにアプリをインストールできます。

素晴らしい世界とは!


4
これは私のベーコンを救った!ありがとう、ありがとう、ありがとう!
ベンフォード2014年

13
おかげで...アップルの大ファンですが、最近それを嫌い始めています...私の時間を台無しにするこれらの愚かなことのcoz ...
Karthik

1
上記のすべての手順を実行しました。DanMのような同じ問題に直面しています。ダウンロードが開始されますが、数秒後に「...をダウンロードできませんでした」というアラートが表示されます。
alper_k 2014年

1
次のエラーが発生します。「dl.dropboxusercontent.comに接続できません」<a href = "itms-services://?action = download-manifest&amp; url = dl.dropboxusercontent.com/s/56ny312cwdacho7をインストールしようとしています/xxxxx.plist > https付き
nanoの

1
了解しました。以前はプライベートフォルダーにファイルを保存しましたが、再びパブリックフォルダーに変更しました。ファイルをパブリックフォルダーに入れることを忘れないでください。CheersOldman
Hariprasad.J

72

Mark Parnellの回答に加えて、これを回避する簡単な方法は、マニフェストのplistをDropboxに入れ、Dropbox Webインターフェイスを使用して直接httpsリンクを取得することです( '共有リンク'-> ')。リンクを取得する」->「ダウンロード」)。

実際のipaは、いつでもどこからでも提供できます。itlist-servivces URLのクエリに挿入する前に、plistのURLをURLエンコードする必要があります(ただし、&sを%3Dに置き換えるだけで機能する場合があります)。

欠点の1つは、インストールダイアログに「dl.dropbox.comが[何でも]をインストールしたい」というメッセージが表示されることです。


思わなかった!ありがとう!
サンタクロース

値のURL(エンコード)を取得するのにかなりの時間を要しましたが、ようやく機能し始めました。ありがとう!
David Dunham、2014年

賢い解決策:Dありがとう!
MobileGuy 2014年

マイクは本当に感謝します、ようやくうまくいきました!命の恩人!
adamteale 2014年

これを支援するツールを作成しました:otter-ota.herokuapp.com。Dropbox共有URLを自動的に調整し、plistを生成し(xcodeはこれを行わないため?)、必要なitmsリンクとhtmlを作成します。必要に応じて、ランディングページをホストすることもできます。
スープ

36

確かに、今後はiOS7.1ですべてのOTA展開をhttps経由で行うことが期待されます。これを文書化していないことに対するAppleの恥。

Dropboxに頼るよりも優れた社内ソリューションを探している場合や、証明書のために現金を払い出す必要がある場合は、ヒント#5で概説されている手順に従うと解決策が得られます:http:// blog。 httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/

その要点はこれです:

  • 完全に信頼されているデバイスにインストールできる独自のCA Authority証明書を作成します(メールでインストールするだけです)
  • ルート証明書に対してキー/ cerペアを作成し、サーバーにインストールします
  • WebサーバーがCA Authorityルート証明書と一致するキー/ cerペアを利用していることを確認してください
  • この時点で、https経由で通常どおりアプリをインストールできるはずです。
  • これはすべて、OSXで、デフォルトですでにインストールされているopensslを使用して実行できます。

これは、自己署名証明書を実行することと同じではありません。このソリューションでは、独自のプライベート認証局としても機能します。Appleデバイスにインストールされているルート証明書が信頼済み(緑色)としてマークされていない場合は、何か問題があります。やり直して。

これは絶対に機能します。

更新:2014年3月13日-このプロセス全体を簡略化する小さなコマンドラインユーティリティを提供しました。https://github.com/deckarep/EasyCert/releasesで入手できます。


1
非常に素晴らしい。要約とCLツールをありがとう。
Alex Zavatone 2014年

私はこのビットを理解するのに1時間費やしました。CA証明書に8192ビットのキーを使用すると失敗します。iOSは証明書をインポートしますが、理由が何であれそれを信頼しません。4096ビットのCAキーは機能します。
EmeraldD。

1
@EmeraldD。コードのどこにもない:github.com/deckarep/EasyCert/blob/master/EasyCert.go 8192ビットのキーを使用する。実際、この記事で説明しているように、ツールは2048のキーを使用します。時間を失ってすみません。
Ralph Caraveo 14年

@ZhaoXiangこれを追加して検討することができます。ここで問題を提出していただけますか:github.com/deckarep/easycert/issues、可能であれば、必要に応じてすべてのファイルを変換するために使用したすべてのコマンドを投稿してください。
Ralph Caraveo 2014

1
これが実際の回答です。+ 1 :))
Tech_Intelliswift

33

同じ問題があり、すでにSSLサーバーを使用していましたが、根本的な問題があったため、リンクをhttpsに変更するだけでは機能しませんでした。

ここに画像の説明を入力してください 画像はこちら

強調表示されたこのビットは、証明書を信頼するオプションを提供する必要があることを教えてくれましたが、これはアプリストアであるため、Safariを介して作業しているため、回復の提案は提示されません。


次の理由により、既存のソリューションに満足できませんでした。

  • 一部のオプションはサードパーティ(Dropbox)への依存を必要とします
  • SSL証明書の支払いは望んでいません
    • 無料のSSL証明書は一時的な解決策にすぎません。

最後に、自己署名ルート認証局を作成し、これを使用してサーバーのSSL証明書を生成することで、解決策を見つけました。

キーチェーンアクセスとOSXサーバーを使用しましたが、各ステップに他の有効な解決策があります


認証局の作成

私が収集したものから、認証局は証明書が本物であることを確認するために使用されます。自分で作成しようとしているため安全ではありませんが、特定の機関からのすべての証明書を信頼できることを意味します。これらは実際に信頼されているため、通常、これらの機関のリストはデフォルトでブラウザに含まれています。(GeoTrust Global CA、Verisignなど)

  • キーチェーンを開き、証明書アシスタントを使用して認証局を作成します

ここに画像の説明を入力してください

  • 認証局情報を入力します

ここに画像の説明を入力してください

  • 必要かどうかはわかりませんが、信頼できる機関にしました。

ここに画像の説明を入力してください


証明書署名要求の生成

この場合、証明書署名リクエストはサーバー管理者によって生成されます。単に「自分のサイトのこの情報が記載された証明書を入手できますか?」と尋ねるファイルです。

  • 次に、証明書署名要求を作成する必要があります(このビットにはOSXサーバーの証明書マネージャーを使用しました)

ここに画像の説明を入力してください

  • 証明書情報を入力します(ASCII文字のみを含める必要があります!、@ Jasper Bluesに感謝)

ここに画像の説明を入力してください

  • 生成されたCSRをどこかに保存します

ここに画像の説明を入力してください


証明書の作成

再度認証局として機能する場合、CSRを送信した人物が本物であり、他人になりすましていないかどうかを判断するのはあなた次第です。実際の当局はこれを行う独自の方法を持っていますが、あなたが本人であることを確信しているので、確認は非常に確実でなければなりません:)

  • キーチェーンアクセスに戻り、図のように「証明書の作成...」オプションを開きます。

ここに画像の説明を入力してください

  • 保存されたCSRを示されたボックスにドラッグします

ここに画像の説明を入力してください

  • [このリクエストのデフォルトをオーバーライドする]ボタンをクリックします

ここに画像の説明を入力してください

  • 有効期間を長くしたい。

ここに画像の説明を入力してください

  • 何らかの理由で、もう一度情報を入力する必要があります

ここに画像の説明を入力してください

  • この画面で[続行]をクリックします

ここに画像の説明を入力してください

  • SSLサーバー認証をクリックすることを確認してください。これにより、いくつかの問題が発生しました。

ここに画像の説明を入力してください

  • 残りのオプションで[続行]をクリックできます。

  • メールアプリが開き、証明書を送信する機会が与えられます。メールではなく、右クリックして保存します。

ここに画像の説明を入力してください


証明書のインストール

次に、SSLトラフィック用に作成した証明書を使用するようにサーバーを設定する必要があります。

  • 作業しているデバイスサーバーの場合、証明書がすでにインストールされていることがあります。

ここに画像の説明を入力してください

  • そうでない場合は、保留中の証明書をダブルクリックして、電子メールから先ほど保存したPEMファイルを指定されたスペースにドラッグします。(または、保存していない場合は、キーチェーンからPEMをエクスポートできます。)

ここに画像の説明を入力してください

  • この新しい証明書を使用するようにサーバーを更新します。新しい証明書が「固定」されず、元に戻る場合は、太字の大文字のビットに戻ってください

ここに画像の説明を入力してください


デバイスのセットアップ

アプリをインストールする必要がある各デバイスには、この認証局のSSL証明書を信頼できることがわかるように、この認証局のコピーが必要です。

  • キーチェーンアクセスに戻り、認証局を.cerとしてエクスポートします

ここに画像の説明を入力してください

  • 次に、このファイルを私のOTAアプリと共にサーバーに配置します。ユーザーはこのリンクをクリックして、認証局の証明書をダウンロードできます。証明書をユーザーに直接メールで送信することも有効なオプションです。

ここに画像の説明を入力してください

  • デバイスに証明書をインストールします。

ここに画像の説明を入力してください


テスト

  • plistリンクがhttpsであることを確認してください

    • アプリを試してインストールしてください!これで動作するはずです。認証局は信頼されており、SSL証明書はその認証局からのものです。

私はあなたの答えの最後の部分を完全に理解していませんでした、これは私のサーバーに.cerファイルを置く必要があることを意味します、ユーザーは彼/彼女がHTTPS経由でipaをインストールする前にHTTP経由で.cerをダウンロードする必要があります?
趙翔

Safariは、アプリストアが無視する「この証明書を信頼しますか?」インターフェースを表示するため、.cerはHTTP経由である必要はありません。
James Webster

1
2つのパラメーターのみを必要とする使いやすいコマンドラインツールを使用して、このプロセスを完全に自動化しました。github.com/deckarep/EasyCert/releasesに関する私の回答をご覧ください
Ralph Caraveo

Windows ServerでIISを使用しています。.cerファイルを生成してiPhoneに配置しましたが、それでも機能しません。理由がわかりません。今は認証にいくらかお金をかけたいと思います。
趙翔2014

1
また、デバイスにインストールする必要のある証明書は証明書であり、Certificate Authority誤って最初にインストールした自己署名SSL証明書ではないことに注意してください
NSTJ

6

私はそれが機能することを確認できます、しかしあなたはドロップボックスにhtmlとplistを置かなければなりません。それは非エンタープライズOTAでも機能します。つまり、開発者とアプリを共有したいとします。チーム。

やった:

a)私のサイトで私はこのリンクでページを作りました:

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

b)DropBoxで別のHTMLページを作成しました。

.. https://dl.dropboxusercontent.com/u/(your DB id)/MyApp.plist ">タップしてMyAppをインストールします

c)DropBoxのplistを移動しましたが、古いサーバーへのPOINTのままにしました(httpsなし)


7
私はhtmlを置く必要がなかったし、それはうまくいくようです。plistだけで十分でした。
ベンG

これはどのplistですか?それはapp.plistですか、それともIPAファイルの作成時に生成されたものですか?
user1872384

3

ターミナルを開いてコマンドを実行します:curl -i https://(.ipaファイルパスではなくplist)

これにより、インストーラーがIPAファイルを表示できるかどうかがわかります。'-i'を指定してcurlコマンドを実行すると、完全な応答が表示され、おそらくIPAファイルではありません。これはインストーラーが見る応答なので、HTTP 200とIPAが返されない場合は、ユーザー側で返す必要があります。

ITMSインストーラーはSafariからのコンテキストを保存しません。Safariの安全なポータルに認証された場合、認証Cookieはインストーラーに渡されません。つまり、インストーラーは認証なしでアプリを表示できる必要があり、これが「サーバーに接続できません」という理由になる可能性があります。


これは私にとって非常に役に立ちました。ありがとう!
スタニスラフパンケビッチ2014年

iPhoneまたはMACBookの端末アプリケーションからコマンドを実行するように求めていますか?私も同じ問題に直面しているようです。
user867662 2016年

2

私は同じ問題を抱えて、上記のようにしました。

  • Dropboxにplistを配置します。
  • ファイルのダウンロードボタンの上で、マウスの右ボタンでドキュメントの画像の下にあるリンクのコピーアクションを選択します。このリンクはすでにhttps://dl.dropboxusercontent.com/s/xyz123/app.plist?stuff=stuffのよう に多くのパラメータを持っています。
  • パラメータを削除します(httpsと.plistの間のアドレスのみを保持します)
  • オンラインでURLエンコードを参照し、それらのリンクの1つを選択してコピー、貼り付け、実行してから、結果のテキストをコピーして、私がitms-servicesリンクを持っているhtmlに貼り付けます。ちなみに、このhtmlは2つの異なる場所にあり、そのうちの1つはipaが配置されている場所です。
  • plistにipaファイルへの絶対参照が含まれていることを確認してください。

iOS 7.1搭載のiPhoneにアプリをインストールする場合、両方のページが正常に機能しました

ただし、iOS 7.0xを搭載したiPhoneではアプリをインストールできません。

新しい質問を作成しました:アップグレードされたアドホックアプリのデプロイが7.1以前のiOSで機能しません

どちらの問題も密接に関連しており、公式な参照の欠如によっても拘束されています。



2

あなたがたまたま魅力のように機能するAWS S3を持っている場合。上手。比較的言えば:-)

AWSでアドホック用のバケットを作成し、インデックスファイル(空のindex.htmlファイルの場合もあります)を追加してから、Cyber​​DuckやCodaなどのS3に接続できるクライアントを使用します(ここでは、[追加]を選択したCodaを使用しました)接続ウィンドウを取得するサイト)次に、接続のように接続を設定します。

次に、XCodeでエンタープライズアドホックを構築し、https: //s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.ipaをアプリケーションURLとして使用し、アップロードすることを確認します新しいS3バケットディレクトリに。

itmsリンクは一致する必要があります。つまり、itms-services://?action = download-manifest&url = https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.plist

そしてボイラ。

これは一般的なAWS URLの場合のみです-AWSでカスタムURLを試したことがないので、いくつか異なることをする必要があるかもしれません。

James Websterのソリューションを上記のように機能させようと決心しましたが、Pleskで機能させることができませんでした。


1

エンタープライズ配布にDropboxを使用する代わりに、エンタープライズ署名付きアプリの配布にTestFlightを使用できます。

https://www.testflightapp.com/

これは、アドホック開発ビルドとエンタープライズビルドの両方のホスティングと配布に最適なサービスです。


1
皮肉なことに、TestflightはAppleのtechcrunch.com/2014/02/21/
Thunder Rabbit

1
また、TestflightはAppleに買収されたため、Androidのサポートを終了しています。
Brody Robertson 14

1

さらに、Dropboxに関する以前の回答として、PLISTファイルのみをDropboxにアップロードする必要があるなど、次のファイルツリーを実装しました。

  1. ipaファイルをhttpでサーバーにアップロードします(ここでは変更なし)
  2. プロビジョニング(.mobileprovision)ファイルをhttpでサーバーにアップロード(ここでは変更なし)
  3. ドロップボックスに plistファイルをアップロードします(URLは絶対的なものなので、plistファイル内で行う変更はありません)
  4. 「リンクをDropboxと共有」オプションを使用して、リンクをクリップボードにコピーします。このリンクは、一部を変更した後ITMS-servivces URLのクエリにあなたのhtmlファイルにコピーする必要があるwww.dropbox.comことでdl.dropboxusercontent.com。@Mikeによって提案されたようにリンクをURLエンコードしましたが、それを行うことなしにテストすることはありません。itms-services URLのクエリは次のようになります。itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist

  5. htmlファイルをhttpでサーバーにアップロードします。htmlファイルには、ipaへのリンクとプロビジョニングファイルの両方が含まれています。

  6. デバイスからhtmlファイルにアクセスすると、通常どおり、ipaをOTAでインストールできます。

今後は、OTAがベータ版テスターに​​次のアプリバージョンを提供するために、ipaファイルのみを変更する必要があります。Appleがまだセキュリティルールを変更するまで。

私が使用している非常に単純なHTMLファイルの後にここに参加します。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>iPhone app for test</title>
</head>
<body>
<h1>iPhone app for test</h1>
<br/>
<ul>
    <li><a href="http://www.yourdomain.com/with/directories/provision/v.last/yourprovision_adhoc.mobileprovision">
            Install Provisioning File</a></li>
    <li><a href="itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist">
            Install Application</a></li>
</ul>
</body>
</html>

1
参考までに、次のリンクを使用してURLをエンコードできます:w3schools.com/tags/ref_urlencode.asp
Lisarien

0

私たちのチームはhttpsを使用するアドホック配布にDropboxを使用していますが、それでもアプリのインストールに失敗していました。多くのトラブルシューティングを行った結果、タイトルフィールドも必須であることがわかりました。このフィールドのないリンクを送信したときはいつでも、safariはリンクを無視し、ユーザーにインストールを促すプロンプトを出しませんでした。迅速な開発テストのために、XMLのタイトルノードをスキップして、値を設定しない場合があります。これがこの問題を抱えている人にとって役立つ場合は、.plistに次のノードが含まれていることを確認してください。

      ....
     <string>software</string>
    <key>title</key>
     <string>Your App Name</string>
      ...

0

この投稿を読んだ後も、アプリのダウンロードに問題がありました。問題は、自己署名SSL証明書が原因でした。

この問題の解決策を見つけました。Webに拡張子「.crt」の証明書ファイルをアップロードし、モバイルサファリにそのアドレスを入力する必要があります。信頼できる証明書のリストに証明書を追加するかどうかを尋ねられます。この操作の後、アドホックアプリをインストールできるようになります。


0

普遍的な解決策は、デバイスをMacに接続し、インストール中に何が起こっているかを観察することです。エラーが発生しました:

基になるエラーでダウンロードマニフェストを読み込めませんでした:エラードメイン= NSURLErrorDomainコード= -1202 "ストアに接続できません" UserInfo = 0x146635d0 {NSLocalizedDescription =ストアに接続できません、NSLocalizedRecoverySuggestion =サーバーに接続しますか?、NSLocalizedFailureReason =安全な接続を確立できませんでした。 日付と時刻の設定を確認してください。、NSErrorFailingURLStringKey = https://myserver.com/app/manifest.plist、NSUnderlyingError = 0x14678880「このサーバーの証明書は無効です。機密情報が危険にさらされています。」、NSURLErrorFailingURLPeerTrustErrorKey =、NSErrorFailingURLKey =https://myserver.com/app/manifest.plist }

そのエラーには、日付の設定を確認するという提案さえありました。何らかの理由で日付は1970年1月1日でした。正しい日付を設定すると問題が解決しました。


-1

アプターはに変更しようとしitms-services://?action=download-manifest&url=http://....ましたitms-services://?action=download-manifest&url=https://....。それも機能しません。アラートはcannot connect to my domainです。ウェブページも更新する必要があることがわかりました。

問題はメインのURLがHTTPSではなく、ページ内のリンクにあるHTMLコードの一部にあります。開発者はWebページを更新する必要があります。また、ステージングドメインに有効なSSL証明書がないため、1つインストールするか、Dropboxを使用する必要があります。ここにあるリンクが参考になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.