最近在为公司开发一款企业级app,为图省时省力选择了第三方众测托管,经测试可以正常安装与使用。于是放心大胆的拿去给用户演示,结果喜闻乐见的事情发生了:在演示过程中出现了app无法下载的情况……
偷懒是不对的,问题是需要解决的:企业级app的发布需要Safari浏览器解析.plist文件,通过itms-services协议来下载并安装.ipa到iDevice上。而从iOS7.1开始,.plist文件就必须存放在https路径下,且该路径需要受信任的证书。
我想到了以下三种方案来解决这个问题:
方案一,将.plist文件托管在诸如dropbox、七牛这类https文件托管服务器上:考虑到“墙”的存在,以及对第三方服务的不信任,方案一pass;
方案二,搭建服务器并使用OpenSSL自签名:需要在iDevice上安装自签名证书,显然只能用于测试;
方案三,搭建服务器并申请SSL认证:最优解。
看起来方案三无误了,但不经历风雨,怎么见彩虹……领导要求必须在测试环境下验证通过才能在正式服务器上实施,而我们的测试环境是局域网,无法申请SSL认证。
所以先用方案二验证可行性,服务器是iis7。使用OpenSSL创建自签名证书过程:
因为Mac自带OpenSSL命令行工具,所以打开终端直接输入命令即可。
第一步,生成SSL证书:
openssl genrsa -out iis.key 2048
openssl req -new -x509 -key iis.key -out iis.cer -days 365 -subj /CN=HOSTNAME
openssl pkcs12 -export -out iis.pfx -inkey signed.key -in iis.cer
最终生成的iis.pfx文件需要导入iis服务器
第二步,生成CA证书:
openssl genrsa -out CA.key 2048
openssl req -x509 -new -key CA.key -out CA.cer -days 365 -subj /CN="CA"
最终生成的CA.cer文件可以通过邮件附件的方式发送到iDevice并安装;
第三步:创建服务器证书:
openssl genrsa -out cert.key 2048
openssl req -new -out cert.req -key cert.key -subj /CN=HOSTNAME
openssl x509 -req -in cert.req -out cert.cer -CAkey CA.key -CA CA.cer -days 365 -CAcreateserial -CAserial serial
最终生成的cert.cer需要安装到iis服务器
注意:为iis服务器添加对.ipa和.plist文件的MIME类型支持 application/octet-stream
在下载页面添加如下链接即可实现点击安装:
<a href =“itms-services://?action=download-manifest&url=.plist文件路径”>点击安装</a>
点击下载后成功安装,在发布服务器上实施方案三,申请SSL证书:
我是在startssl申请的免费SSL认证,网址:www.startssl.com
第一步,获取个人操作证书:
首先注册一个账号,填写真实有效的邮箱,会有验证码发到注册邮箱里;
获取验证码之后填写到页面上并continue,会向注册邮箱内发送审核结果;如果审核通过就按照邮件内的提示下载个人操作证书。
注意:这个证书就是你登录startssl的唯一凭证,一定要妥善保管;
第二步,域名管理员验证:
证书安装后回到startssl,点击Authenticate登录,选择Validations Wizard,在Type中选择Domain Name validation;continue后输入申请SSL认证的域名;
continue后选择域名管理员的邮箱,startssl会向该邮箱发送验证码;
填入验证码后continue,验证域管理员成功;
第三步,SSL验证:
接下来点击 Certificates Wizard,Certificate Target选择 Web Server SSL;
continue后按照要求为私钥提供一个密码,注意这个密码在生成pfx文件时会用到;
continue后按照提示保存私钥,注意私钥在生成pfx文件时会用到;
最后需要输入待绑定的二级域名。没错,免费的认证只能绑定一个二级域名。
第四步:pfx证书文件获取:
进入Tool Box,点击Create PKCS#12 File,输入私钥和私钥密码,生成pfx文件,导入iis服务器即可~别忘了添加MIME类型支持。
注意:这个证书的有效期是一年,一年后可以通过个人操作证书登陆并续期。