iOS程序开发流程的入门知识 IOS安全

桃汁 2017-12-12 7693

什么是证书

 

apple 官方颁发, 用以证明开发者身份的特殊文件, iOS 开发中主要用于代码签名, 保障 iOS 生态的健康安全, 分为开发者证书和发布者证书

 

什么时候需要证书

 

只有在本机模拟器调试时无需代码签名, App 需要在真机运行和发布时需要使用相应证书进行签名

 

证书如何获得

 

首先需要拥有相应权限的开发者帐号, 通过在本地生成配对的密钥, provisioning portal 提交公钥后换取, 后续证书在使用时会验证本地私钥

 

如何对代码进行签名

 

xcode , 使用描述文件(provision profile 包含调试者证书, 授权设备清单, 应用ID), Build Settings 中选择存于 Keychain Access 中的证书文件设置调试和发布任务时的代码签名

 

生成的私钥如何共享给团队成员

 

Keychain Access 中找到导入的证书, 右击导出为包含私钥的 Personal Information Exchange(.p12)文件(导出时可以创建密码), 团队成员再导入 p12 证书后就完整包含了证书和私钥

 

各流程中证书的需求情况

 

模拟器调试

 

不需要

 

真机调试

 

描述文件(Provisioning Profiles)

开发者证书(ios_development.cer)

 

打包和发布

 

描述文(Provisioning Profiles)

可用于发布的开发者证书(ios_distribution.cer)

 

消息推送后端服务

 

apns 证书

 

开发中常见的证书及相关文件介绍

 

CSR(certificate request) 文件

 

用于换取证书的公钥文件, 实际是在本地基于 RSA 加密得到配对的密钥, 私钥存于 Keychain Access 用于签名, 公钥作为换取证书的凭证

 

生成方法

 

OSX 系统自带的 Keychain Access

 

选择 "Request a Certificate From a Certificate Authority"

输入 email 等信息后保存为 .certSigningRequest 文件

 

命令行下使用 openssl 生成

 

$ openssl genrsa -out private.key 2048

$ openssl req -new -sha256 -key private.key -out my.certSigningRequest

 

开发者证书

 

apple 官方颁发, 用来证明开发者资格的证书文件, 分开发(ios_development.cer)和发布(ios_distribution.cer)两种

 

cer 证书跟开发机(私钥)绑定只能在拥有私钥的机器上使用, 如果要迁移机器需要导出为 p12 文件

 

生成方法

 

开发者中心 "certificates" 面板中添加 certificate 并上传刚刚生成的 CSR 文件, 获取 ios_development.cer

 

apns(Apple Push Notification Service) 证书

 

用于服务端消息推送, 类似 ssl 证书使用, App 端的开发打包没有关系

 

生成方法

 

开发者中心 "Identifiers" 面板中添加 App ID 并上传刚刚生成的 CSR 文件, 获取 aps_production.cer

 

p12(Personal Information Exchange) 证书

 

p12 证书实际是包含了 cer 证书及私钥信息, 可以分发给团队成员

 

生成方法

 

Keychain Access 中找到已经导入的 cer 证书, 点右键导出为 p12 格式

 

描述文件(Provisioning Profiles)

 

包含 certificate appID devices id 的文件用于在 xcode 调试打包时提供授权的配置信息

 

生成方法

 

开发者中心 "Provisioning Profiles" 面板中添加 iOS Provisioning Profiles 并上传刚刚生成的 CSR 文件, 获取 .mobileprovision 文件

 

xcode 登录开发者帐号后可以连接开发者中心获取

 

真机调试流程基本概念

 

真机调试指 mac 连上 iphone, xcode 可以直接以这台 iphone 设备为 build target, 能在 iphone 里执行编译结果

 

条件和流程

 

分为拥有独立开发者帐号(也包括公司帐号或企业帐号成员)和共享开发者帐号两种情况

 

拥有独立开发者帐号

 

1、在 provisioning portal 新建应用, 配置授权设备等

2、开发机上导入证书

3、在 xcode 上登录开发者帐号, 不需要准备描述文件, xcode 会自动生成(如果是公司帐号可以自动生成 iOS Team Provisioning Profile)

 

共享开发者帐号

 

如果无法在 xcode 登录一个开发者帐号, 也可以通过他人对你手机和应用 id 的授权, 得到 .mobileprovision 描述文件再导入其含私钥的证书(p12) 即可, 具体步骤如下:

 

1、获得手机的 udid (可以连上 mac, itunes 中查看)

2、告知对方 udid (用以设备授权) 和 应用 id

3、得到对方生成的证书和描述文件后, 先导入 p12 证书, 再双击 mobileprovision 文件

4、连接手机, xcode 中选择 build target 为已连接的手机

 

对刚入门的个人开发者而言, 可以在淘宝搜 iOS真机调试 花几元购买一份授权, 包含(p12 证书 和 .mobileprovision 描述文件)

 

内测发布流程基本概念

 

App 开发进行到一定程度, 需要更多的人参与测试, 需要谋求一种方式方便应用能安装进更多的设备中

 

实现条件

 

进行内测发布主要的关键点是:

 

1、是如何将应用打包为 .ipa

 

xcode6 以后, 个人/公司帐号无法对应用打包为 .ipa, 要么用 xcode5 打包要么拥有企业帐号级别的授权

 

2、设备需不需要授权

 

个人/公司帐号权限只有在 TestFlight / 越狱渠道下完成不授权安装; 企业帐号授权可以在 ad-hoc / in-house 渠道下分发, 完成不授权设备安装

 

几种常见的分发途径

 

ad-hoc

 

打包时必须在登录企业帐号(或其成员)并已导入证书和描述文件的情况下, 任何用户(未授权)都可以在手机上用浏览器访问一个url 完成安装

 

最大的问题是安装量有 100 的上限, 无法作为一个量很大的分发渠道

 

in-house

 

针对企业内部用户进行分发, 相比 ad-hoc 无安装量上限

 

iOS 8.1.3 开始不能企业证书 Iresign 方式重新签名的应用无法安装

 

TestFlight

 

仅支持 iOS8.0 以上, 不需要对设备 udid 进行授权, 适合个人 / 公司程序开发, 在应用发布前可以开启 TestFlight Beta 测试并添加测试者的 iTunes Connect 帐号, 需要待测用户拥有 iTunes Connect 帐号并在设备安装 TestFlight 客户端

 

这种方式非常便于推送应用更新和收集测试信息

 

导出 ipa , 越狱安装

 

如果测试设备都越狱了, 这种方式非常灵活简单, 只有能导出 ipa 包就能通过 itools 等第三方工具安装

 

最新回复 (0)
全部楼主
返回
发新帖