企业应用程序部署在iOS 7.1上不起作用

时间:2013-11-29 01:04:26

标签: ios deployment

我们使用itms-services://网址通过Enterprise帐户分发应用。这一直运行良好,但在iPad上安装iOS 7.1测试版后,它拒绝安装。相反,当下载应用程序出现任何问题时,我们只会收到iOS无用的显示的通用Cannot connect to example.com消息。

我一直无法在此处,谷歌或7.1发行说明中找到任何可能导致问题的原因。

16 个答案:

答案 0 :(得分:330)

通过将iPad连接到计算机并在尝试安装应用程序时通过XCode Organizer查看控制台,我发现了这个问题。错误结果是:

  

无法加载非https清单网址: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证书。我们已经做了,但我想你没有它会有问题。

答案 1 :(得分:230)

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. 删除保管箱可共享链接上的所有参数,例如“?dl = 0t”(根据Carlos Aguirre Tradeco Enterprise app deployment doesn't work on iOS 7.1和我自己的经验)。
  5. 使用格式为download.html
  6. 的链接创建<a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist">INSTALL!!</a>文件
  7. 将您的download.html上传到dropbox
  8. 再次获取download.html的共享链接,例如https://www.dropbox.com/s/gnoctp7n9g0l3hx/download.html,并删除所有参数。
  9. www.dropbox.com替换为第二个链接中的dl.dropboxusercontent.com,例如https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html
  10. 现在,请在您的设备中访问https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html,您可以像以前一样安装该应用。

    多么美好的世界!

答案 2 :(得分:72)

除了Mark Parnell的回答之外,解决这个问题的一种快速而肮脏的方法是将清单plist放入Dropbox,然后使用Dropbox Web界面获取直接的https链接('分享链接' - &gt;'获取链接' - &gt;'下载')。

实际的ipa可以保留在您始终提供的任何地方。在将plist的URL插入到itms-servivces URL的查询中之前,您需要对plist的URL进行URL编码(尽管只用%3D替换任何&amp; s可能有效)。

一个缺点是安装对话框现在会显示“dl.dropbox.com想安装[无论如何]”。

答案 3 :(得分:36)

确实如此,您需要在iOS7.1上通过https进行所有OTA部署。对于Apple没有记录这一点感到羞耻。

对于那些正在寻找更好的内部解决方案而不是依赖Dropbox或者不得不为证书支付现金的人,如果您按照提示#5中列出的步骤,可以找到解决方案:{{3 }}

它的主旨是:

  • 创建您自己的CA Authority证书,您可以在完全信任的设备上安装(我只需通过电子邮件发送即可安装)
  • 针对根证书创建密钥/ cer对并将其安装在您的服务器上
  • 确保您的网络服务器使用与CA Authority根证书匹配的密钥/ cer对
  • 此时您应该可以像往常一样通过https
  • 安装应用
  • 所有这一切都可以在OSX上使用openssl完成,而openssl已经默认安装了

这与仅执行自签名证书不同,在此解决方案中,您还充当自己的专用证书颁发机构。如果Apple设备上安装的根证书未标记为“可信”(绿色),则表示出现问题。做完。

这绝对有效。

更新:2014年3月13日 - 我提供了一个小型命令行实用程序,可以简化整个过程。您可以访问:http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/

答案 4 :(得分:33)

我遇到了同样的问题,虽然我已经在使用SSL服务器,但只是将链接更改为https并不会因为存在根本问题而无法正常工作。

enter image description here Click here for image

突出显示的一点告诉我,我们应该可以选择信任证书,但由于这是应用程序商店,通过Safari工作,恢复建议不会被呈现。< / p>


我对现有解决方案并不满意,因为:

  • 某些选项需要依赖第三方(Dropbox)
  • 我们不愿意支付SSL证书
    • 免费SSL证书只是一种临时解决方案。

我终于通过创建自签名根证书颁发机构并使用此生成我们服务器的SSL证书找到了解决方案。

我使用了Keychain Access和OSX Server,但每个步骤还有其他有效的解决方案


创建证书颁发机构

根据我收集的内容,证书颁发机构用于验证证书是否为正版。由于我们自己要创建一个,但它并不完全是 secure ,但这意味着您可以信任来自给定权限的所有证书。默认情况下,您的浏览器通常会包含这些权限的列表,因为这些实际上受信任。 (GeoTrust Global CA,Verisign等)

  • 打开钥匙串并使用证书助理创建权限

enter image description here

  • 填写您的证书颁发机构信息

enter image description here

  • 我不知道是否有必要,但我确保了权威。

enter image description here


生成证书签名请求

在我们的示例中,证书签名请求由服务器管理员生成。简单来说,它是一个文件,要求&#34;我可以为我的网站提供包含此信息的证书吗&#34;。

  • 接下来,您必须创建证书签名请求(我使用OSX Server的证书管理器

enter image description here

  • 填写您的证书信息(必须只包含ascii字符!,谢谢@Jasper Blues)

enter image description here

  • 将生成的CSR保存在某个地方

enter image description here


创建证书

再次作为证书颁发机构,由您自行决定向您发送CSR的人是否是真实的,并且他们不会假装成其他人。真正的权威人士有自己的方式来做这件事,但既然你很有信心确实是你,那么你的验证应该是非常肯定的:)

  • 返回Keychain Access并打开&#34;创建证书。&#34;选项如图所示

enter image description here

  • 将已保存的CSR拖到指示的框中

enter image description here

  • 点击&#34;让我覆盖此请求按钮的默认值&#34;

enter image description here

  • 我想增加有效期。

enter image description here

  • 出于某种原因,我们必须再次填写一些信息

enter image description here

  • 点击此屏幕上的继续

enter image description here

  • 请确认您点击SSL服务器身份验证 ,这个让我感到头疼。

enter image description here

  • 您可以点击继续浏览其余选项。

  • 邮件应用程序将打开,让您有机会发送证书。右键单击并保存,而不是通过电子邮件发送。

enter image description here


安装证书

我们现在需要设置服务器以使用我们刚刚为其创建的SSL流量证书。

  • 如果您在上工作的设备您的服务器,您可能会发现该证书已经安装。

enter image description here

  • 如果没有,请双击待处理证书,然后将我们刚从电子邮件中保存的PEM文件拖到指定的空间中。 (或者,如果您没有保存,可以从钥匙串导出PEM。)

enter image description here

  • 更新您的服务器以使用此新证书。如果您发现新证书赢了,那么就不会发现这样的问题。并继续恢复,回到 BOLD ITALIC CAPS
  • 中的位置

enter image description here


设置设备

您需要安装应用程序的每个设备都需要拥有此证书颁发机构的副本,以便他们知道他们可以信任来自该机构的SSL证书

  • 返回Keychain Access并将您的证书颁发机构导出为.cer

enter image description here

  • 然后我使用我的OTA应用程序将此文件放在我的服务器上,用户可以单击此链接并下载授权证书。通过电子邮件将证书直接发送给用户也是一种有效的选择。

enter image description here

  • 在您的设备上安装证书。

enter image description here


测试

  • 确保您的plist链接是https

    • 尝试安装应用!它现在应该工作。证书颁发机构是受信任的,SSL证书来自该机构。

答案 5 :(得分:6)

我可以确认它有效,但你必须将html和plist放在dropbox上。 它也适用于非企业OTA,即您想与您的开发者共享应用程序。队。

我做了:

a)在我的网站上,我创建了一个包含以下链接的页面:

.. href =“https://dl.dropboxusercontent.com/u//(your DB id)/ipa.html”&gt; MyApp

b)在DropBox上我写了另一个HTML页面:

.. https://dl.dropboxusercontent.com/u/(your DB id)/MyApp.plist“&gt;     点按即可安装MyApp

c)在DropBox上移动plist但是将它留给POINT到我的旧服务器(没有https)

答案 6 :(得分:3)

打开终端并运行命令: curl -i https://(.ipa文件路径不是plist)

这将告诉您安装程序是否可以看到IPA文件。如果你运行带有'-i'的curl命令,你会看到完整的响应,它可能不是IPA文件。 这是安装程序看到的响应,因此如果它没有返回HTTP 200和IPA,则需要将其返回给您。

ITMS安装程序不保存Safari的任何上下文。如果您在Safari中的安全门户中进行了身份验证,则身份验证cookie不会传递给安装程序。即安装程序需要能够在没有身份验证的情况下查看应用程序,这可能是您“无法连接到服务器”的原因。

答案 7 :(得分:2)

我遇到了同样的麻烦,如上所述。

  • 将plist放入Dropbox。
  • 通过下载文件按钮,在带有鼠标右键的文档图像下方选择复制链接操作。这个链接就像是这样的 https://dl.dropboxusercontent.com/s/xyz123/app.plist?stuff=stuff 有许多参数。
  • 删除参数(仅保留https和.plist之间的地址)
  • 在线浏览网址编码,选择其中一个链接,复制,粘贴,执行,然后将生成的文本复制并粘贴到我拥有itms-services链接的html中。 顺便说一句,我在两个不同的位置都有这个html,其中一个就是ipa所在的位置。
  • 确保plist包含对ipa文件的绝对引用。

这两个页​​面都成功地在带有ios 7.1的iphone中安装应用程序

但是,现在使用ios 7.0x的iphone无法安装该应用程序。

我创建了一个新问题:upgraded adhoc app deployment doesnt work on ios previous to 7.1

这两个问题都是紧密相关的,并且由于缺乏官方参考资料而受到约束。

答案 8 :(得分:2)

一些好人通过使用Class 1 StartSSL证书和共享Apache配置来处理此问题,该配置添加了证书支持(将与任何证书一起使用)和用于自动更改现有* .plist文件中的链接的代码。复制太长,所以这里是链接: http://cases.azoft.com/how-to-fix-certificate-is-not-valid-error-on-ios-7/

答案 9 :(得分:2)

如果您碰巧拥有的AWS S3也像魅力一样。好。相对而言:-)

在AWS中为您的ad hocs创建一个存储桶,添加一个索引文件(它可以只是一个空白的index.html文件)然后使用可以连接到S3的客户端,如Cyber​​Duck或Coda(我使用Coda - 你在哪里' d选择添加站点以获取连接窗口)然后设置连接,如附加:

然后在XCode中临时构建您的企业,并确保使用https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.ipa作为应用程序URL,并将其上传到新的S3存储桶目录。

您的itms链接应该匹配,即itms-services://?action = download-manifest&amp; url = https://s3.amazonaws.com/your-bucket-name/your-ad-hoc-folder/your-app.plist

瞧瞧。

这仅适用于通用AWS URL - 我没有尝试使用AWS上的自定义URL,因此您可能需要采取不同的方式。

我决心尝试让詹姆斯·韦伯斯特的解决方案发挥作用,但我无法与普莱什克合作。

答案 10 :(得分:1)

作为使用Dropbox进行企业分发的替代方法,您可以使用TestFlight分发企业签名的应用程序。

https://www.testflightapp.com/

这是托管和分发特定开发构建和企业构建的绝佳服务。

答案 11 :(得分:1)

进一步以前关于Dropbox的答案,我实现了以下文件树,例如只有PLIST文件必须上传到Dropbox:

  1. 以http(此处不做更改)
  2. 将ipa文件上传到您的服务器
  3. 将配置(.mobileprovision)文件以http(此处不做更改)
  4. 上传到您的服务器
  5. 将plist文件上传到 dropbox (由于网址是绝对的,因此不会在plist文件中进行更改)
  6. 使用“与Dropbox共享链接”选项将链接复制到剪贴板。在通过www.dropbox.com更改部件dl.dropboxusercontent.com后,必须将此链接复制到您的html文件中的itms-servivces网址查询中。注意我按照@Mike的建议对URL进行了编码,但是如果没有这样做,我就不会测试。现在,itms-services URL的查询应如下所示:itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist

  7. 以http格式将html文件上传到您的服务器。请注意,html文件包含指向ipa和配置文件的链接。

  8. 从您的设备访问您的html文件,现在可以像OTA一样安装ipa。
  9. 从现在起,只有ipa文件必须更改才能通过OTA向您的Beta版测试人员提供下一个应用版本。直到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>
    

答案 12 :(得分:0)

我们的团队使用dropbox进行临时分发,该分发使用https,但我们的应用仍无法安装。经过多次故障排除后,我们意识到标题字段也是必需的。每当我们发送没有此字段的链接时,safari会忽略该链接,并且不会提示用户进行安装。有时为了快速开发测试,我们跳过xml中的标题节点而不是填充它。如果这对有此问题的任何人都有帮助,请确保您的.plist包含以下填充的节点:

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

答案 13 :(得分:0)

阅读这篇文章后,我仍然有下载我的应用程序的问题。问题是因为自签名SSL证书。

我找到了解决这个问题的方法。您需要在网络上传您的扩展名为“.crt”的证书文件,并在您的移动版中输入该地址。系统会询问您将证书添加到受信任证书列表中。完成此操作后,您将能够安装您的ad-hoc应用程序。

答案 14 :(得分:0)

通用解决方案是将您的设备连接到Mac并观察安装过程中发生的情况。我收到了一个错误:

  

无法加载包含基础错误的下载清单:错误   Domain = NSURLErrorDomain Code = -1202&#34;无法连接到商店&#34;   UserInfo = 0x146635d0 {NSLocalizedDescription =无法连接到   Store,NSLocalizedRecoverySuggestion =你想连接到   无论如何服务器?,NSLocalizedFailureReason =安全连接不能   成立。 请检查您的日期&amp;时间设置。,   NSErrorFailingURLStringKey = https://myserver.com/app/manifest.plist,   NSUnderlyingError = 0x14678880&#34;此服务器的证书是   无效。您可能正在连接到假装的服务器   “myserver.com”可以把您的机密信息放在   风险。&#34;,NSURLErrorFailingURLPeerTrustErrorKey =,   NSErrorFailingURLKey = https://myserver.com/app/manifest.plist}

在该错误中甚至有建议检查日期设置。由于某种原因,日期是1970年1月1日。设置正确的日期解决了问题。

答案 15 :(得分:-1)

Apter试图将itms-services://?action=download-manifest&url=http://....更改为itms-services://?action=download-manifest&url=https://....。它也行不通。警报为cannot connect to my domain。我发现还需要更新网页。

问题不在于主URL是HTTPS,而是页面内链接中的一些HTML代码。您需要开发人员更新网页。我还注意到您的暂存域上没有有效的SSL证书,因此您需要安装一个或使用Dropbox,这里是the link maybe helpful for you