BAT 批处理程序 2017-04-18
公司的一个项目有Android和iOS的app,Android的下载和安装都很方便,不过iOS有些麻烦,因为项目本身有些限制,主要有以下一些障碍:1.iOS的版本不是通过Appstore分发。2.出于安全的考虑,Android和iOS的app只能通过vpn的方式来访问服务器,而手机通过vpn后是无法访问互联网的。因此无法访问互联网的相关HTTPS的服务,换句话说就是无法使用互联网的SSL证书的web服务。3、iOS的版本大于7.1的,因此apple的itms-services协议必须实用HTTPS。
鉴于上面这些障碍,于是考虑在局域网搭建内部HTTPS的服务,通过OTA(Over-the-Air)方式来分发iOS的应用。
OTA即Over-the-Air,简单来说就是通过无线的方式发送指令给设备,具体针对iOS的设备,比如iphone 、ipad等,让开发者能够脱离Appstore,实现从自己的服务器下载并安装iOS应用。 用户只需要在iphone 或ipad的浏览器中点开一条链接,就能直接在主界面中安装App。整个分发的过程包括三部分:设备(iPhone,ipad),服务器(profile service,用来发送配置文件),验证服务器(包括CA和目录服务器)。
针对iOS应用分发,需要在服务器里上包括三个文件,来实现OTA方式的分发
1.ipa文件,也就是应用安装包,可以是开发者证书签名的,也可以是企业证书。2.plist文件,主要用来说明iOS应用的安装信息,主要的安装信息包括ipa文件的名称和存放路径。可以通过Xcode来创建plist文件,具体创建过程和plist文件这里就不赘述了。3、一个提供itms-services协议链接的页面,同时该页面是通过HTTPS的方式访问。itms-services协议链接指向plist文件的路径,例如:
[blockquote]
<a href="itms-services://?action=download-manifest&url=https://192.168.0.1/appipa.plist">Install App</a>
[/blockquote]
有了上面三个文件,apple设备就可以通过提供HTTPS服务器,读取plist文件的iOS安装的ipa文件的路径,从而实现下载和安装。
由于提供HTTPS的服务只能在局域网内部,因此SSL证书不能使用相关CA机构颁发的,且证书不是基于域名,是基于ip地址的,因此只能采用自制证书。在这里我采用的是OpenSSL配置Tomcat 的SSL证书,OpenSSL使用是windows 版本的Apache服务器下的openssl.exe生成。 步骤如下(采用命令行的方式):
1.生成服务器的私钥openssl genrsa -out server.key 1024
2.生成签署申请(Common Name必须为服务器的ip或域名)openssl req -new -out server.csr -key server.key -config ..\conf\openssl.cnf
3.生成CA私钥openssl genrsa -out ca.key 10244.用CA的私钥产生CA的自签署证书openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -config ..\conf\openssl.cnf