iOS证书深究

iOS的系列证书很令人头痛,但是也提供了完整的保护。

在开发过程中,遇到的基本的证书有Xcode真机调试或者打包用证书,也有消息推送证书等;每种证书分为开发版(development)和发布版(distribute)。除了证书,还有概要配置文件。众多的分类和配置,很容易混淆,接下来详细描述一番,并解释我的理解。

先看苹果开发者中心的证书界面。主要分类为:Certificate、AppID、Device、Provisioning Profile。

AppID是一切的开始,就如一个身份证,和每个人是唯一对应的;根据identifier生成不同类型的证书,都在Certificate列表里,证书之间都是平等关系,例如消息推送证书不是根据打包证书生成的,而同样是根据identifier产生的;Device列表管理测试用设备;Provisioning Profile是概要配置文件,是联系identifier、设备、证书的一个纽带,一般先选择AppID,然后指定证书和测试设备,进而产生作为纽带的配置文件。

除了上述对象,在产生部分文件过程中,还有一个证书签名请求文件(CSR),这是标识Mac OS系统的,上述文件要用在哪台Mac机上,就用该机钥匙串生成的CSR文件。

不然,会出现如下错误:将非本Mac机CSR文件支持产生的证书导入钥匙串,是找不到私钥的,这样就无法在Xcode中使用。

各种证书的生成方法和过程,想必不会太纠结,按照提示就可以了,关键在于使用过程中的关系。

证书生成好以后,下载下来,双击,就会自动加载到钥匙串的“登陆”项中,有私钥就说明添加成功了。概要配置文件也是双击,会自动加载到Xcode中。然后去Xcode的Target编译设置中,找到Code Signing项,对应debug、release、distribute三种模式,先选择相应的配置文件,然后在证书配置项里就可以看到跟配置文件关联的证书选项。

介绍一下推送证书。推送证书是根据AppID产生的,然后下载下来,格式为.cer,也可以先双击加入钥匙串,然后在钥匙串中导出p12格式的文件,也可以生产.pem格式,供不同推送程序直接加载使用。而推送证书跟应用的唯一关联关系,就存储于概要配置文件中,所以应该先生产推送证书,后生成概要配置文件。否则就会引发推送无效的问题。

再说一下Ad Hoc证书。这种证书跟发布版(distribute)类似,也就是说可以Archive成ipa安装包。但是不能上传到AppStore中。主要用于给远方合作的测试人员使用。这样既解决了远距离安装测试的问题,也避免了ipa包被他人传到AppStore中。

 

补充:

开发版和发布版证书会产生不同的deviceToken,但是只有前者才能在Xcode中log输出看到,因为后者只能Archive打包成ipa包,所以为了测试,可以show一个UIAlertView出来。

这就引申出消息推送的一个问题。在测试开发版和发布版app时候,同一台设备,会产生两个deviceToken,切记不要搞错了推送目标!

iOS证书深究的更多相关文章

  1. iOS证书失效

    iOS证书突然失效 今早上班打包直接报错,错误如图 根据错误信息到“钥匙串”里面看了一下证书,证书都莫名其妙的失效了,昨天还是好好的. 重新去钥匙串从证颁发中心获取证书,然后登陆开发者账号重新申请证书 ...

  2. IOS证书/私钥/代码签名/描述文件

    1.   相关资源 (1)   钥匙串程序(常用工具->钥匙串),用于创建证书请求.安装证书.导出私钥等 (2)   IOS开发中心:https://developer.apple.com/de ...

  3. ios证书

    内容提要: 安装app时提示 “无法下载应用,此时无法安装“XXX””.我遇到过多次是由于ios的app出现证书问题.本篇文章讲解用ios证书制作过程,以及每个步骤的解释. 正文: Xcode签名至少 ...

  4. iOS证书申请详细流程

    一.事前准备 1.1 准备苹果帐号 首先您需要有一个苹果的开发者帐号,一个mac系统.如果没有帐号可以打开申请加入苹果的开发者计划.如何申请网上有详细的介绍,在此不多做介绍. 如果您已经有了一个帐号, ...

  5. iOS 证书申请和使用详解(详细版)

    对于iOS开发者来说,apple开发者账号肯定不会陌生.在开发中我们离不开它.下面我简单的为大家分享一下关于iOS开发中所用的证书相关知识. 第一部分:成员介绍 1.Certification(证书) ...

  6. iOS 证书调试的理解(Personal)

    证书签名 证书:众所周知,我们申请一个Certificate之前,需要先申请一个Certificate Signing Request (CSR) 文件,而这个过程中实际上是生成了一对公钥和私钥,保存 ...

  7. 阐明iOS证书和provision文件

    译:阐明iOS证书和provision文件 许多iOS开发人员都会和你说在iOS开发很困惑的问题之一,将app真正运行在真实的设备(iPhone iPad而不是模拟器),因为所有的这些都会涉及从苹果获 ...

  8. 真机测试---iOS证书(.p12)和描述文件(.mobileprovision)

    iOS证书和描述文件: 证书类型 使用场景 开发(Development)证书和描述文件 用于开发测试,在starain中打包后可在真机环境通过Safari调试 发布(Distribution)证书和 ...

  9. (转)iOS 证书、密钥及信任服务

    iOS 证书.密钥及信任服务 ——翻译自Apple Reference<Certificate,Key,and Trust Services Programming Guide> 本章描述 ...

随机推荐

  1. js中frame的操作问题

    这里以图为例,在这里把frame之间的互相操作简单列为:1变量2方法3页面之间元素的互相获取. A  首先从 父(frameABC)------->子(frameA,frameB,frameC) ...

  2. Unobtrusive JavaScript 是什么?

    Unobtrusive JavaScript 是什么? <!--以下是常规Javascript下写出来的Ajax--><div id="test">< ...

  3. 杭电1162Eddy&#39;s picture

    Eddy's picture Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tota ...

  4. 使用Json让Java和C#沟通的方法

    原文:使用Json让Java和C#沟通的方法 最近很忙啊,新项目下来了,都没时间写博客了.频率降低点,但不能不总结跟大家分享啊. 我们在项目里经常要涉及到各模块间的通信,这其中又不可避免要碰到各类语言 ...

  5. MapReduce 编程模型

    一.简单介绍 1.MapReduce 应用广泛的原因之中的一个在于它的易用性.它提供了一个因高度抽象化而变得异常简单的编程模型. 2.从MapReduce 自身的命名特点能够看出,MapReduce ...

  6. 在线预览Excel

    遇到的问题各种多 <system.web>        <identity impersonate="true" userName="Administ ...

  7. 《全体育&#183;瑜伽》

    今天出去吃饭,本来是想买<印象>创刊号的,结果没找着,看到一本<瑜伽>创刊号.作为一个伪瑜伽爱好者,我掏了20元大洋买了一本,你知道如今的时尚杂志都非常坏,用塑料膜封着,不能翻 ...

  8. Oracle在rownum使用结果集排序

    Oracle在rownum使用结果集排序    对于 Oracle 的 rownum 问题,非常多资料都说不支持>,>=,=,between...and,仅仅能用以上符号(<.< ...

  9. lua迭代器和仿制药for

    不管是什么样的结构,你只需要同意遍历集合可以称为迭代器的所有元素.lua常用来形容叙事功能迭代器.个元素.每个迭代器都须要保存一些状态来知道当前处于什么位置和怎样进行下一次迭代. 对于这种任务.闭包提 ...

  10. flash导入图片缩放后出现毛边、失真、锯齿、文字模糊不清晰的情况

    原因: 1.flash的性能非常差,这就不得不让它做大量的优化. 2.图片缩放,目前业界有多种算法,画质越好的算法,计算量越大. 3.flash优化了图片缩放,使用了质量非常低的缩放算法.这个做法,保 ...