搭建iOS应用OTA服务
2018-06-21 本文已影响164人
曼妙的汉子
安装Apache并配置https模块,如果已有具备管理权限的https服务器可以忽略这一步
OSX自带的有Apache,本文以部署在OSX上为例,其他操作系统请自行安装Apache
1. 生成自签名CA证书
openssl genres -des3 -out ota-ca.key 2048
openssl req -new -x509 -days 3650 -key ota-ca.key -out ota-ca.crt
2. 用上一步生成的CA证书为OTA服务颁发证书
openssl genrsa -des3 -out ota-server.key 2048
openssl req -new -key ota-server.key -out ota-server.csr
openssl x509 -req -in ota-server.csr -out ota-server.crt -sha1 -CA ota-ca.crt -CAkey ota-ca.key -CAcreateserial -days 3650
在生成csr的时候,命令行会提示输入证书相关信息,其中比较重要的为Common Name,必须与OTA服务的域名一致。在内网环境中,我们可以使用机器的IP地址(最好固定IP地址,不然IP地址更新后证书就失效了,要重新颁发)。如果对内网用户的DNS服务器有配置权限,也可以在DNS服务器上配置一条域名指向OTA服务所在主机的IP地址,这样方便记忆。
3. 移除OTA服务密钥的密码
openssl rsa -in ota-server.key -out ota-server-nopass.key
4. 加载Apache与https相关的模块,移除httpd.conf中下面两行配置的注释
LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
LoadModule ssl_module libexec/apache2/mod_ssl.so
5. 引入Apache的https配置文件,移除httpd.conf中下面一行配置的注释
Include /private/etc/apache2/extra/httpd-ssl.conf
6. 配置一个虚拟主机用于OTA的https服务
<VirtualHost *:443>
ServerName 192.168.1.112
DocumentRoot "/Library/WebServer/Documents"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /private/etc/apache2/ssl/ota-server.crt
SSLCertificateKeyFile /private/etc/apache2/ssl/ota-server-nopass.key
<Directory "/Library/WebServer/Documents">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
7. 在mime.types文件中配置ipa和plist文件的mime类型
application/octet-stream ipa
text/xml plist
生成ipa以及manifest.plist文件并上传至OTA的web服务目录下
以上面的虚拟主机配置为例,需要把文件上传至/Library/WebServer/Documents目录或者子目录下,本文的例子中将直接上传到该目录,manifest.plist中相关的url请正确填写
编辑用于安装CA证书以及安装ipa的html页面,例子如下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>应用名字</title>
</head>
<body>
<h1 style="font-size:40pt">iOS应用OTA安装<h1/>
<h1 style="font-size:40pt">
<a title="iPhone" href="itms-services://?action=download-manifest&url=https://192.168.1.112/manifest.plist">点击安装</a>
<h1/>
<a title="iPhone" href="http://192.168.1.112/ota-ca.crt">ssl 证书安装</a>
<h1/>
</body>
</html>
将html文件上传至/Library/WebServer/Documents
重启Apache
sudo apachectl restart