首页 文章

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

提问于
浏览
313

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

我无法在SO,Google或7.1发行说明中找到任何可能导致问题的原因 .

16 回答

  • 2

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

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

  • 0

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

  • 72

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

    https://www.testflightapp.com/

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

  • 230

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

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

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

  • 2

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

    无法加载非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

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

    无法加载带有基础错误的下载清单:错误域= NSURLErrorDomain代码= -1202“无法连接到商店”UserInfo = 0x146635d0 {NSLocalizedDescription =无法连接到商店,NSLocalizedRecoverySuggestion =您是否要连接到服务器? NSLocalizedFailureReason =无法 Build 安全连接 . 请检查您的日期和时间设置 . ,NSErrorFailingURLStringKey = https://myserver.com/app/manifest.plist,NSUnderlyingError = 0x14678880“此服务器的证书无效 . 您可能正在连接到假冒的服务器” myserver.com“可能会使您的机密信息受到威胁 . ”,NSURLErrorFailingURLPeerTrustErrorKey =,NSErrorFailingURLKey = https://myserver.com/app/manifest.plist}

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

  • 0

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

    • 将plist放入Dropbox .

    • 通过下载文件按钮,在带有鼠标右键的文档图像下方选择复制链接操作 . 这个链接已经像https://dl.dropboxusercontent.com/s/xyz123/app.plist?stuff=stuff,有许多参数 .

    • 删除参数(仅保留https和.plist之间的地址)

    • 浏览url在线编码,选择其中一个链接,复制,粘贴,执行,然后将生成的文本复制并粘贴到我拥有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

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

  • 2

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

    • 将ipa文件以http格式上传到您的服务器(此处不做更改)

    • 将配置(.mobileprovision)文件以http格式上传到您的服务器(此处不做更改)

    • 将plist文件上传到 dropbox (由于URL是绝对的,因此在plist文件中没有更改)

    • 使用选项"Share the link with Dropbox"将链接复制到剪贴板 . 在通过 dl.dropboxusercontent.com 更改零件 www.dropbox.com 后,必须将此链接复制到html文件中的itms-servivces URL查询中 . 注意我按照@Mike的建议对URL进行了编码,但我不会't test without to do it. Now the itms-services URL'的查询应如下所示: itms-services://?action=download-manifest&url=https%3A%2F%2Fdl.dropboxusercontent.com%2Fs%2FYourShortDropboxLink.plist

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

    • 从您的设备访问您的html文件,现在通常可以通过OTA安装ipa .

    从现在开始,只有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>
    
    <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>
  • 0

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

    在AWS中为您的ad hocs创建一个存储桶,添加一个索引文件(它可以只是一个空白的index.html文件),然后使用可以连接到S3的客户端,如CyberDuck或Coda(我使用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,因此您可能需要采取不同的方式 .

    我决心尝试让詹姆斯韦伯斯特的解决方案发挥作用,但我无法与Plesk合作 .

  • 330

    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

  • 3

    确实,未来你需要在iOS7.1上通过https进行所有OTA部署 . 苹果没有记录这一点感到羞耻 .

    对于那些正在寻找更好的内部解决方案而不是依赖Dropbox或者不得不为证书支付现金的人,如果您按照提示#5中列出的步骤,可以找到解决方案:http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/

    它的要点是这样的:

    • 创建您自己的CA Authority证书,您可以在完全受信任的设备上安装(我只需通过电子邮件发送即可安装)

    • 根据根证书创建密钥/ cer对,并将其安装在服务器上

    • 确保您的网络服务器使用与CA Authority根证书匹配的密钥/ cer对

    • 此时,您应该可以像往常一样通过https安装应用

    • 所有这一切都可以在OSX上使用openssl完成,openssl默认已经安装

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

    这绝对有效 .

    更新:2014年3月13日 - 我提供了一个小型命令行实用程序,可以简化整个过程 . 你可以在:https://github.com/deckarep/EasyCert/releases得到它

  • 1

    我可以确认它有效,但你必须把html和plist放在Dropbox上 . 它也适用于非企业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)

  • 36

    我有同样的问题,虽然我已经在使用SSL服务器,但只是将链接更改为https无法正常工作,因为存在潜在的问题 .

    enter image description here
    Click here for image

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


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

    • 某些选项需要依赖第三方(Dropbox)

    • 我们不愿意支付SSL证书

    • 免费SSL证书只是一种临时解决方案 .

    我终于找到了一个解决方案,创建一个 Self Signed Root Certificate Authority 并使用它生成我们服务器的SSL证书 .

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


    创建证书颁发机构

    根据我的收集,证书颁发机构用于验证证书是否真实 . 由于我们're about to create one ourselves, it'不完全安全,但这意味着您可以信任来自给定机构的所有证书 . 默认情况下,浏览器通常会包含这些权限的列表,因为这些权限实际上是受信任的 . (GeoTrust Global CA,Verisign等)

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

    enter image description here

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

    enter image description here

    • 我没有必要,但我让权威得到了信任 .

    enter image description here


    生成证书签名请求

    在我们的示例中,证书签名请求由服务器管理员生成 . 简单地说,这是一个文件,询问“我可以为我的网站提供包含此信息的证书” .

    • 接下来你必须创建你的 Certificate Signing Request (我用过OSX Server的证书管理器)

    enter image description here

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

    enter image description here

    • 在某处保存生成CSR

    enter image description here


    创建证书

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

    • 返回Keychain Access并打开"Create A Certificate.."选项,如图所示

    enter image description here

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

    enter image description here

    • 点击"Let me override defaults for this request button"

    enter image description here

    • 我想增加有效期 .

    enter image description here

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

    enter image description here

    • 单击此屏幕上的继续

    enter image description here

    • MAKE SURE YOU CLICK SSL SERVER AUTHENTICATION ,这个让我有些头疼 .

    enter image description here

    • 您可以单击继续完成其余选项 .

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

    enter image description here


    安装证书

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

    • 如果您正在使用的设备是您的服务器,您可能会发现该证书已经安装 .

    enter image description here

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

    enter image description here

    • 更新您的服务器以使用此新证书 . 如果您发现新证书不会"stick"并继续恢复,请返回 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证书来自该机构 .

  • 33

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

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

    除了Mark Parnell的回答之外,快速而又肮脏的解决方法是将清单plist放入Dropbox,然后使用Dropbox Web界面获取直接的https链接('Share link' - >'获取链接' - >'下载') .

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

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

  • -1

    ingconti是对的 .

    现在,在您的设备中访问 https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html ,您可以像以前一样安装该应用 .

    多美妙的世界!

相关问题