iOS 7.1在线安装IPA失败以及数字证书
**2014-06-20更新:**增加对七牛云存储的HTTPS服务说明和又拍云的介绍。
Enterprise app deployment doesn't work on iOS 7.1 and CA
错误现象
在 iOS 升级到 7.1 之后,使用 Safari 在线安装企业版或者 AD-HOC 版本的IPA时,iOS会提示:
无法安装应用程序,因为“xx.xx.xx” 的证书无效。
这是一个蛋疼的提示,它的真正人类能懂的含义是:
在 iOS 7.1 版本以后,请使用 HTTPS 部署此类安装。
解决方案
1. 部署自己的HTTPS服务器
这种方案需要使用一个可信的证书颁发机构办法的证书,将其部署在自己的服务器上。配置自己的服务器软件(例如 Apache、Nginx等) 使其支持它。
这是一劳永逸的解决方案,如果需要大量部署,那么此种方案是首选。
注意,自己给自己颁发的证书是不行的。必须使用可信的证书颁发机构颁发的证书。这就意味着,你很可能需要付费。
后面会讲到数字证书的部分,会稍稍展开一点。
2. 使用已有的HTTPS服务器
只需要找一个已经部署的HTTPS服务器,将我们的部署文件(plist)传到该服务器上即可。
注意,为了保证下载速度,也为了保证域名的统一性,我们可以只把 plist 文件上传到HTTPS服务器上。
例如,在我们的网站(http://my.http.server)上有一个在线安装IPA页面是这样的:
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<head>
4<title>Setup My App</title>
5</head>
6<body>
7<ul>
8<li><a href="itms-services://?action=download-manifest&url=http://my.http.server/myapp.plist"> Tap Here to Install My App </a>
9</li>
10</ul>
11</body>
12</html>
由于 iOS 7.1 不支持通过 HTTP 服务器在线安装IPA,我们需要修改其中的链接,将其改到 HTTPS 服务器上。请注意修改过的前缀和域名。
1<a href="itms-services://?action=download-manifest&url=https://my.HTTPS.server/myapp.plist"> Tap Here to Install My App</a>
我们只需要把这个plist文件上传到HTTPS服务器即可,用户仍然可以访问原来的HTTP来进行下载。IPA文件也可以放在HTTP服务器上。
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3<plist version="1.0">
4<dict>
5 <key>items</key>
6 <array>
7 <dict>
8 <key>assets</key>
9 <array>
10 <dict>
11 <key>kind</key>
12 <string>software-package</string>
13 <key>url</key>
14 <string>http://my.http.server/myapp.ipa</string>
15 </dict>
16 </array>
17 <key>metadata</key>
18 <dict>
19 <key>bundle-identifier</key>
20 <string>us.1201.lulala</string>
21 <key>bundle-version</key>
22 <string>1.0</string>
23 <key>kind</key>
24 <string>software</string>
25 <key>title</key>
26 <string>My App</string>
27 </dict>
28 </dict>
29 </array>
30</dict>
31</plist>
而且,在 iOS 7.1 以下的系统中,也可以支持 HTTPS 服务器。所以这个修改对所有iOS系统都生效。
3. 使用免费的 HTTPS 服务器
如果你找不到拥有 HTTPS 服务器的土豪朋友,那么可以使用下面两种免费的方案:
- DropBox 这位美国土豪提供免费服务。只需要把你的plist文件传到 dropbox 的 public 共享区并 Copy public link 得到公共下载地址就行了。
- 七牛云存储 这位中国土豪也支持 HTTPS ,服务同样免费(有流量限制),速度在国内访问更快,方法类似。
在使用七牛的时候要注意,七牛默认提供的外网访问地址,使用HTTPS协议直接访问时浏览器会提示证书无效。可参考 如何通过 SSL 的形式来访问七牛云存储上的资源 重新绑定一个 qbox.me 域名来实现HTTPS访问。 - 又拍云 也支持HTTPS服务,但仅支持7天试用。
2014-06-20更新:
最近DropBox在国内抽风,估计离永久屏蔽也不远了,还是早点转吧。
数字证书
由于考虑自己架设 HTTPS 服务器,于是找了一些数字证书的资料放在这里备查。
- 如果一定要使用自签名的证书或者来发布自己的App,那么可以要求iOS系统使用者在TA的设备上把你的证书加入信任。具体参考:Adding CA Cert root and personal certificates to your iPhone, iPod or iPad 。(对于苹果小白来说,这个很难...)
- 一些证书颁发机构可以免费申请30天、60天的试用证书,例如:试用型 SSL 证书(Free Trial SSL) 和 StartSSL。
- Godaddy 有一个面向开源项目1年免费的计划。
- 还有一些证书每年大约只要6刀,Google可以得到信息。
- 不要在国内的证书颁发机构购买证书。
- 不要信任CNNIC的根证书。
还有一些链接:
- 文章ID:2108
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/enterprise_app_deployment_on_ios71_and_ca/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。