通过OTA的方式在局域网分发iOS应用

公司的一个项目有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

OTA即Over-the-Air,简单来说就是通过无线的方式发送指令给设备,具体针对iOS的设备,比如iphone 、ipad等,让开发者能够脱离Appstore,实现从自己的服务器下载并安装iOS应用。 用户只需要在iphone 或ipad的浏览器中点开一条链接,就能直接在主界面中安装App。整个分发的过程包括三部分:设备(iPhone,ipad),服务器(profile service,用来发送配置文件),验证服务器(包括CA和目录服务器)。

OTA分发的实现方式

针对iOS应用分发,需要在服务器里上包括三个文件,来实现OTA方式的分发

1.ipa文件,也就是应用安装包,可以是开发者证书签名的,也可以是企业证书。
2.plist文件,主要用来说明iOS应用的安装信息,主要的安装信息包括ipa文件的名称和存放路径。可以通过Xcode来创建plist文件,具体创建过程和plist文件这里就不赘述了。
3、一个提供itms-services协议链接的页面,同时该页面是通过HTTPS的方式访问。itms-services协议链接指向plist文件的路径,例如:

<a href="itms-services://?action=download-manifest&url=https://192.168.0.1/appipa.plist">Install App</a>

有了上面三个文件,apple设备就可以通过提供HTTPS服务器,读取plist文件的iOS安装的ipa文件的路径,从而实现下载和安装。

自建OpenSSL证书

由于提供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 1024

4.用CA的私钥产生CA的自签署证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -config ..\conf\openssl.cnf

5.创建demoCA(bin目录下)
demoCA里面创建文件index.txt和serial,serial内容为01,index.txt为空,以及文件夹newcerts

6.生成网站服务器签署证书
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ..\conf\openssl.cnf

最后把生成好的server.crt 和server.key路径配置到Apache服务器的openssl.cnf配置文件里(具体配置见相关文档),重新启动Apache服务器即可。

SSLCertificateFile “/Apache22/conf/ssl2rver.crt”
SSLCertificateKeyFile “/Apache22/conf/ssl2rver.key”

客户端证书ca.crt可以通过下载或者email方式提供给iOS 设备安装,不过有一点要注意:由于这是自签名的SSL证书,是不可信任的,因此需要在iphone 或ipad 里手动设置信任证书。

安装完客户端证书后,就可以通过iphone 或ipad的浏览器来访问提供itms-services协议链接的页面,下载和安装iOS的应用了。

-----------------------------------------------------------------------------------------------------------

欢迎关注我的网站和微信公众号,文章会在我的网站和微信公众号上同步发布。

本文首发链接:https://www.watch-life.net/website-app/ota-ios-app.html

我的网站:守望轩

微信公众号名称:守望轩

微信公众号:iwatchlife

你也可以扫描或长按以下二维码

时间: 2024-10-04 19:49:30

通过OTA的方式在局域网分发iOS应用的相关文章

如何利用Pre.im分发iOS测试包

大众创新万众创业,在移动互联网的风口,移动APP开发与测试发展方兴未艾,受到了越来越多的重视.相较 iOS,Android 的开发环境更加开放.Android 开发者要测试应用时,只需发个 APK 安装包即可,但对于 iOS 来说,想要参与 App 测试却是件很复杂的事情. Apple在收购TestFlight后将其整合进iTunes Connect中,虽然能帮助iOS开发者邀请用户协助对 App 进行测试,但过程依旧复杂. 在这样的背景下,国内权威测试平台Testin推出了免费的APP内测分发

远程SSH登陆方式备份和导入IOS系统和配置文件

远程用SSH方式登录和导出IOS系统及配置文件 (本文绝对全部一手射出,请多多支持) 无论是一台交换机还是一台路由器,其中的配置文件以及系统都相当重要,所以及时做好系统文件的备份,然后当系统出现故障的时候再导入备份文件也是很重要的一部分知识. 配置实验步骤:创建一个拓扑结构 1.连接拓扑线,配置回环网卡规划好的IP地址. 2.配置两台路由器上面各个接口的IP地址. 3.配置交换机的管理IP地址以及远程SSH方式登陆过程. 4.在两台路由器上各配置一条静态路由,然后测试连通性. 5.使用putty

Ad Hoc一键分发(iOS开发)

一个可以让你快速.方便.一次配置,终生受益的测试包分发教程.你还在傻傻的用airdrop,qq么? 使用环境: 适合iOS开发者,常需要发布测试包给各类人员,那么以后再也无需多余操作,一键搞定.公司有内网服务器,或用Mac os的同学都可以使用.非越狱手机可以使用,只要正常绑定过证书就没有问题. 以下是教程,相当简单.服务器ip以192.168.1.188为例,端口8080 第一步,配置run script打包ipa并完成ipa上传部署过程,Xcode中打开target->build phase

ITMS-SERVICES://方式安装IPA在IOS 7.1中的变化

转:https://laoyur.com/?p=414 iOS7.1中,通过itms-services://方式安装ipa已经发生了改变,.plist文件必须是https://的,.ipa文件的链接则依然可以是http://的. 目前的解决方案大致有以下几种: Dropbox大法.把plist文件放到Dropbox上,生成一个https的下载链接. 用StarSSL之类的免费SSL服务获得SSL证书,来加密你的服务器. 没钱的穷屌丝可以自建CA,生成自签名SSL证书加密你的服务器,然后为你的CA

在企业内部分发 iOS 应用程序

参考:http://www.cocoachina.com/industry/20140818/9401.html http://blog.csdn.net/zhaoxy_thu/article/details/17277527 iOS 9 安装企业包 没有了信任按钮 需要手动设置为信任http://www.cocoachina.com/ios/20150703/12392.html

IOS渠道追踪方式

本文来自网易云社区 作者:马军 IOS,安卓渠道追踪的差异 Google Play国内不可用,国内的安卓 App 分发,都是依托几十个不同的应用市场或发行渠道,如百度.360.腾讯等互联网企业以及小米.华为.魅族等手机生产商.对于安卓 App 的渠道追踪,主要是围绕上面这些大的渠道来进行,并且这些渠道自己一般也会提供非常详尽和周全的数据分析给应用开发者. iOS 的发行渠道则与安卓有很大的不同,除了少数越狱的机器之外,大部分用户的 App 都是从 App Store 下载的.iOS 的"渠道&q

iOS代码加密常用加密方式

在今天的面试中,被问到了iOS是采用什么进行加密解密操作的,我的回答是这样的:AES,MD5,Base 64,然后是对这几种加密算法进行了一下简单的介绍和概述和几种算法之间的不同点和优缺点.然而,收到的回答是:这些都不是iOS的加密!我顿时就无语了,这不就是iOS加密所用到的方法么?然后向面试官请教了一下:MD5是一种摘要....什么叫加密呢?加密是客户端对数据加密和服务器端采用秘钥对数据进行解密处理,为了数据的安全考虑.要说加密应该是RSA.幸亏之前有了解过RSA,只是了解的不是很彻底和清楚.

iOS——常用加密方式

iOS代码加密常用加密方式,常见的iOS代码加密算法包括MD5加密.AES加密.BASE64加密. 三大算法iOS代码加密是如何进行加密的: /////////////////////////////////////////////////////////////////// MD5 iOS代码加密使用方法 /////////////////////////////////////////////////////////////////// //创建MD5类,代码如下 #import <Foun

iOS学习4_控制器的创建方式和控制器view的创建

UIScreen是与设备有关的物理屏幕 Window是一个窗口对应UIWindow类,继承自UIView,window要显示在Screen上必须设置为主窗口并且可见.接下来就可以往UIWindow上面添加一些控件了. 下图就是简单地层次关系 ViewController是用来组织和控制视图的,与上图不同的是这里使用了视图控制器ViewController,不需要直接将view指定给window,相反,只需要给window制定一个视图控制器,视图控制器会自动的将他的view添加给window.如下