我们通过一个企业账户,使用itms-services:// URL来分发应用。这一直都很正常,但在我们的iPad上安装了iOS 7.1测试版后,它就拒绝安装了。相反,我们只是得到一个通用的不能连接到example.com的消息,当下载应用程序出现任何问题时,iOS会毫无帮助地显示这个消息。

我无法在SO,谷歌或7.1发布说明中找到任何东西来建议可能导致问题的原因。


当前回答

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

其他回答

通用的解决方案是将你的设备连接到Mac上,然后观察安装过程中发生了什么。我得到一个错误:

Could not load download manifest with underlying error: Error Domain=NSURLErrorDomain Code=-1202 "Cannot connect to the Store" UserInfo=0x146635d0 {NSLocalizedDescription=Cannot connect to the Store, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, NSLocalizedFailureReason=A secure connection could not be established. Please check your Date & Time settings., NSErrorFailingURLStringKey=https://myserver.com/app/manifest.plist, NSUnderlyingError=0x14678880 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “myserver.com” which could put your confidential information at risk.", NSURLErrorFailingURLPeerTrustErrorKey=, NSErrorFailingURLKey=https://myserver.com/app/manifest.plist}

错误中甚至有检查日期设置的建议。不知什么原因,那天是1970年1月1日。设置正确的日期就解决了这个问题。

这是真的,在iOS7.1下,所有OTA部署都将通过https进行。苹果没有记录这一点,真可耻。

对于那些正在寻找比依赖dropbox或必须支付现金获得证书更好的内部解决方案的人来说,如果你遵循提示#5中列出的步骤,你可以有一个解决方案:http://blog.httpwatch.com/2013/12/12/five-tips-for-using-self-signed-ssl-certificates-with-ios/

它的要点是:

创建自己的CA颁发机构证书,可以安装在完全受信任的设备上(我通过简单地通过电子邮件安装它) 根据根证书创建key/cer对,并将其安装到服务器上 确保您的web服务器使用与CA颁发机构根证书匹配的密钥/密钥对 在这一点上,你应该能够像往常一样通过https安装你的应用程序 所有这些都可以在OSX上使用已经默认安装的openssl来完成

这与仅仅使用自签名证书不同,在这个解决方案中,您还充当自己的私有证书颁发机构。如果安装在Apple设备上的根证书未标记为受信任(绿色),则有问题。重做一遍。

这绝对有效。

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

Ingconti是对的。

Upload your app.plist to dropbox. Get shared link of app.plist, like https://www.dropbox.com/s/qgknrfngaxazm38/app.plist replace www.dropbox.com with dl.dropboxusercontent.com in the link, like https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist Remove any parameters on the dropbox shareable link such as "?dl=0t" (as per Carlos Aguirre Tradeco at Enterprise app deployment doesn't work on iOS 7.1 and my own experience). Create a download.html file with a link formatted as <a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/qgknrfngaxazm38/app.plist">INSTALL!!</a> Upload your download.html to dropbox Again, get a shared link of download.html, like https://www.dropbox.com/s/gnoctp7n9g0l3hx/download.html, and remove any parameters. Replace www.dropbox.com with dl.dropboxusercontent.com in the second link as well, like https://dl.dropboxusercontent.com/s/gnoctp7n9g0l3hx/download.html

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

多么美好的世界啊!

我也遇到了同样的问题,尽管我已经在使用SSL服务器,但简单地将链接更改为https是行不通的,因为有一个潜在的问题。

点击此处查看图片

突出显示的部分告诉我,我们应该提供信任证书的选项,但由于这是应用程序商店,因此在Safari中没有提供恢复建议。


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

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

我最终找到了一个解决方案,创建一个自签名根证书颁发机构,并使用它生成我们的服务器的SSL证书。

我使用了钥匙链访问和OSX服务器,但每个步骤都有其他有效的解决方案


创建证书颁发机构

据我所知,证书颁发机构被用来验证证书的真实性。由于我们将要自己创建一个证书,所以它并不完全安全,但这意味着您可以信任来自给定权威机构的所有证书。默认情况下,浏览器中通常包含这些授权机构的列表,因为这些授权机构实际上是受信任的。(GeoTrust Global CA, Verisign等)

打开Keychain并使用证书助手创建一个权威

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

我不知道是否有必要,但我让权威得到了信任。


生成证书签名请求

在本例中,证书签名请求由服务器管理员生成。简单地说,它是一个文件,询问“我可以为我的网站获得一个包含此信息的证书吗?”

接下来,你必须创建你的证书签名请求(我使用OSX服务器的证书管理器

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

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


创建证书

再次作为证书颁发机构,由您来决定向您发送CSR的人是否真实,他们是否假装是其他人。真正的权威有他们自己的方法来做这件事,但因为你希望非常确定你是你,你的验证应该非常确定:)

返回“Keychain Access”,如图所示打开“Create A Certificate..”选项

将保存的CSR拖到指定的框中

点击“让我重写此请求的默认值”按钮

我想延长有效期。

由于某种原因,我们不得不重新填写一些信息

在此屏幕上单击continue

确保你点击SSL服务器认证,这让我有些头疼。

您可以单击继续查看其余选项。 邮件应用程序将打开,让您有机会发送证书。不要发电子邮件,右键单击并保存。


安装证书

现在我们需要设置服务器来使用我们刚刚为它的SSL通信创建的证书。

如果您使用的设备是服务器,则可能会发现证书已经安装。

如果没有,双击Pending证书,并将刚才从电子邮件中保存的PEM文件拖到指定的空间中。(或者,如果你没有保存PEM,你也可以从keychain中导出它。)

更新您的服务器以使用这个新证书。如果您发现新的证书不“粘”,并一直还原,请回到BOLD ITALIC CAPS中的位


安装设备

你需要安装应用程序的每个设备都需要有这个证书授权机构的副本,这样他们就知道他们可以信任来自该授权机构的SSL证书

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

然后我把这个文件和我的OTA应用放在我的服务器上,用户可以点击这个链接下载权威证书。将证书直接通过电子邮件发送给用户也是一种有效的选择。

在您的设备上安装证书。


Test

确保你的plist链接是https 尝试安装一个应用程序!现在应该可以工作了。证书颁发机构是受信任的,SSL证书来自该颁发机构。

我可以确认它的工作,但你必须把html和plist的dropbox。 它也适用于非企业OTA,即你想要与你的开发团队共享应用程序。

我做了:

a)在我的网站上,我用这个链接做了一个页面:

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

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

. .https://dl.dropboxusercontent.com/u/(your DB id)/MyApp.plist"> . DB id " 点击“安装MyApp”

c)在DropBox上移动plist,但让它指向我的旧服务器(没有https)