url:http://www.myexception.cn/operating-system/1525825.html
使用IOS企业版证书发布应用

        苹果的企业开发证书,可以不经app store,直接发布到自己的网站上。其他人可以直接下载安装。但前提要用苹果自带的浏览器(safari)才能下载,其他浏览器不能识别该协议。

        一、制作证书

       打开Keychain Access工具,把Keychain的配置改为如下图:


并从菜单中选择Keycahin Access->Certificate Assistant->Request a Certificate From a Certificate Authority...如下图所示:


 填写必要的信息,生成证书保存在桌面或其他地方,等会要用到:




 
 二、生成并安装证书

        用企业版的apple id登陆苹果开发者中心: https://developer.apple.com, 登陆后选择对应的选项,上传之前生成的证书文件,如下图:


 

 生成证书文件后,下载下来,双击打开即安装。

三、增加APP ID

四、生成Profiles文件

在开发中心点击Provisioning Profiles中的Distribution, 点击“+”,增加Profiles。APP ID选择刚才增加的。如图
 

添加好之后,就可以下载下来,把它拖到Xcode中。或是拖到Organizer中。如图:



 

五、发布应用

在XCode的Targets中选择签名:



 在XCode的菜单Product->Archive中选择打包。打包时要把iPad或是iphone接到电脑上,并选择目标是iPad或是iphone才能成功。



 

 



Required的信息填写即可,save,则会同时生成ipa和plist 文件,如下

 

apple文档地址:http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html


以无线方式安装应用程序

iOS 支持以无线方式安装企业级应用程序,这可让您在不使用 iTunes 的情况下将内部软件分发给用户。

要求

  • 已鉴定的用户可访问的安全 Web 服务器

  • .ipa 格式的 iOS 应用程序,经构建用于发布/生产(使用了企业级预置描述文件)

  • 本文稿中稍后描述的 XML 清单文件

  • 可让设备访问 Apple iTunes 服务器的网络配置

安装应用程序很简单。用户可以将清单文件从您的网站上下载到他们的 iOS 设备上。该清单文件会指示设备下载和安装该清单文件中所引用的应用程序。

您可以分发 URL 以便通过短信或电子邮件来下载清单文件,也可以将它嵌入您所创建的其他企业级应用程序中。

由您设计和主管用于分发应用程序的网站。确定用户已被鉴定(可能是使用基本鉴定或基于目录的鉴定),并确定网站可通过内联网或互联网进行访问。您可以将应用程序和清单文件放入隐藏的目录中,或任何可使用 HTTP 或 HTTPS 来读取的其他位置中。

准备企业级应用程序进行无线分发

若要准备企业级应用程序进行无线分发,您应该构建归档的版本(.ipa 文件),以及构建清单文件以启用应用程序的无线分发和安装。

使用 Xcode 来创建应用程序归档。使用您的分发证书给应用程序签名并在归档中包括您的企业级开发预置描述文件。有关清单文件的信息,请参阅以下内容。有关构建和归档应用程序的更多信息,请访问 iOS Dev Center(iOS 开发中心)或参阅《Xcode User Guide》(Xcode 使用手册),可通过 Xcode 中的“Help”(帮助)菜单来访问该使用手册。

关于无线清单文件

清单文件是 XML plist 格式的。iOS 设备使用它在 Web 服务器上查找应用程序,以及从 Web 服务器上下载和安装应用程序。清单文件是由 Xcode 创建的,使用您在共享归档的应用程序以进行企业级分发时所提供的信息。请参阅上一节准备应用程序进行分发

以下栏是必填的:

项目

描述

URL

应用程序 (.ipa) 文件的完整合格的 HTTP 或 HTTPS URL。

display-image

下载和安装过程中显示的 57 x 57 像素 PNG 图像。指定图像的完整合格的 URL。

full-size-image

用来在 iTunes 中表示应用程序的 512 x 512 像素 PNG 图像。

bundle-identifier

您应用程序的包标识符,与 Xcode 项目中指定的完全一样。

bundle-version

您应用程序的包版本,在 Xcode 项目中指定。

title

下载和安装过程中显示的应用程序的名称。

仅对于“报刊杂志”应用程序,需要填写以下栏位:

项目

描述

newsstand-image

完整大小的 PNG 图像,用于显示在“报刊杂志”书架上。

UINewsstandBindingEdge

UINewsstandBindingType

这些键必须与“报刊杂志”应用程序中的 info.plist 中的键相符。

UINewsstandApp

指示该应用程序是“报刊杂志”应用程序。

您可以使用的一些可选键如示例清单文件所述。例如,如果应用程序文件太大并且您想要在执行错误检验(TCP 通信通常会执行该操作)的基础上确保下载的完整性,则可以使用 MD5 键。

您可以使用单个清单文件安装多个应用程序,方法是指定 items 数组的附加成员。

本文稿末尾列出了示例清单文件。

构建网站

将这些项目上传到您网站上已鉴定的用户可以访问的区域:

  • 应用程序 (.ipa) 文件

  • 清单 (.plist) 文件

您的网站设计可以像用来链接到清单文件的单个页面那么简单。当用户轻按 Web 链接时,清单文件会被下载,并触发它所描述的应用程序的下载和安装。

以下是一个示例链接:

<a href="itms-services://?action=download-manifest&url=http://example.com/
manifest.plist">Install App</a>

请勿添加归档的应用程序 (.ipa) 的 Web 链接。载入清单文件时,设备会下载该 .ipa。虽然 URL 的协议部分是 itms-services,但 iTunes Store 并不参与此过程。

设定服务器 MIME 类型

您可能需要配置您的 Web 服务器以便正确地传输清单文件和应用程序文件。

对于 OS X Server,将以下 MIME 类型添加到 Web 服务的“MIME Types”(MIME 类型)设置中:

application/octet-stream ipa

text/xml plist

对于 IIS,使用 IIS Manager 在服务器的“属性”页面中添加 MIME 类型:

.ipa application/octet-stream

.plist text/xml

openssl使用的是macos系统自带的版本,关键点是不同直接使用ios设备打开https的链接,需要将证书发到系统的mail里,安装到设备,
如果命令执行不成功,用sudo执行。

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
将ca.crt文件通过邮件发送到ios设备的Mail上,进行证书的安装
nginx https配置:

 

 

    server {

        listen       443;
        server_name  ios.xxx.com;
        error_log  /dev/null;
        ssl                  on;
        ssl_certificate      server.crt;
        ssl_certificate_key  server.key;
        ssl_session_timeout  5m;
        #ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_protocols  SSLv3 TLSv1;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;
        root   /workspace/ios;
        #add_header Content-Disposition: 'attachment;';
    }