IOS应用除了可以正常的在Appstore上面发布外,还可以申请企业证书,自己部署服务器进行发布提供下载;但企业证书在IOS 7.1后,应用的下载需要使用可信任的https发布才能正常下载,否则会提示找不到服务器之类的错误;
首先,需要开发人员生打包一个ipa,并且提供一个plist文件,plist文件可以参考下面的:
plist文件(test.plist):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>https://192.168.0.8/test.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.test</string> <key>bundle-version</key> <string>1.0</string> <key>kind</key> <string>software</string> <key>title</key> <string>测试</string> </dict> </dict> </array> </dict> </plist>
新建一个页面,假设index.html,内容如下:
<script> location.href="itms-services:///?action=download-manifest&url=https://192.168.0.8/test.plist"; </script>
或者
<a href="itms-services:///?action=download-manifest&url=https://192.168.0.8/test.plist">点击下载</a>
访问:https://192.168.0.8/test.html (使用safari浏览器打开)
注意:plist文件中url的值可以不是https,但页面中,items-services协议后面url参数的必须是https,并且必须是可信任的https,也就是说,如果你在权威机构申请的证书,直接在服务端配置好即可信任,否则,自己生成的证书,客户端必须安装ca证书才能被信任;另外,记得提醒用户只能在safari浏览器中下载,其他浏览器不识别itms-services协议;
如果需要在局域网下载,只能自己生成证书,生成步骤如下:
1.生成服务器的私钥
openssl genrsa -out server.key 1024
2.生成签署申请(注意除Common Name以外可以为空,Common Name必须为服务器的ip或域名)
openssl req -new -key server.key -out server.csr
3.生成CA私钥
openssl genrsa -out ca.key 1024
4.利用CA的私钥产生CA的自签署证书
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
5.在当前目录创建demoCA,里面创建文件index.txt和serial,serial内容为01,index.txt为空,以及文件夹newcerts
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
这样,生成了的文件中有 server.crt,server.key, ca.crt
将 server.crt,server.key配置到服务器上,apache、nginx各不相同,百度一下,很多配置说明的文章,这里就不重述了;另外将ca.crt放入服务根目录,以便用户能访问安装;
服务端配置好证书并重启服务后,此时可以访问https://192.168.0.8/test.html,但仍然不是完全授信的,用户端必须安装ca.crt,才能正常下载;引导用户端访问http://192.168.0.8/ca.crt, safari会直接跳转证书安装界面,安装好证书以后,通过https://192.168.0.8/test.html才能正常下载