`

iOS签名总结

阅读更多
摘自:http://www.devdiv.com/iOS签名总结-weblog-6399-9907.html 
 
    绝大多数iPhone Developer/Distribution 的代码签名生成错误是因为证书和Provisioning profiles没有在开发系统上正确安装引起的。本文描述在开发 iPhone OS 应用程序时所需要的文件以及如何安装它们。这个技术说明为“Program User Guide”提供支持,Program User Guide 可以在 Portal Resources 下的 iPhone Developer Program Provisioning Portal 找到。如果你对 iPhone 开发刚入门,请先阅读 Program User Guide.

需要什么
  所有 iPhone 应用程序在iPhone OS设备上运行之前必须用合法的 signing identity 进行签名。
为了在自己的iPhone OS设备开发而做应用程序签名,需要:
私钥
iPhone 开发者证书
Development Provisioning profile
上 App Store 需要:
私钥
iPhone Distribution 证书
App Store Distribution Provisioning profile
要用在 Ad Hoc 上需要:
私钥
iPhone Distribution 证书
Ad Hoc Distribution Provisioning profile

  私钥是在生成认证签名请求(CSR)时创建的,在CSR提交和通过之后,可以在 iPhone Developer Program Provisioning Portal 里创建和下载证书以及provisioning profiles。

  注意:为了更好的区分不同的provisioning profile,在创建的时候注意命名,例如 "wild card dev profile", "MyApp Push distribution profile", “Ad Hoc Testers profile” 等等。

这些东西的作用
  Signing identity 由私有加密key和数字证书组成。在iPhone OS开发中,Xcode 用私钥来签署程序,这样程序就可以在iPhone OS开发设备上运行或者提交到app store。
  公钥包含 iPhone开发者/发布商证书,用来认证已签名的程序。
  Provisioning pfofiles 用来告知Xcode用哪个证书/私钥组合来签署程序。开发设备也通过它来决定如何认证安装在设备上的程序。

证书 - 安装/校验
  下载 iPhone Development 证书或者 iPhone Distribution 证书之后,双击下载的 .cer 文件启动 Keychain Access并安装证书。如果询问将证书安装到哪,请选择 "login" keychain。
  要确定证书是否正确安装,选择 "login" keychain 并且选择 "My Certificates" 类别。如果想要部署到你的开发设备,选择以"iPhone Developer Certificate"为标题开头的证书。如果要发布程序,选择以"iPhone Distribution Certificate"标题开头的证书。在 Information view 里应该有一个带选中标志的绿圈告诉你证书合法,意思就是 WWDR Intermediate Certificate 已经安装在系统里,并且证书已校验。要是看不见绿圈就应该从 iPhone Developer Program Provisioning Portal 下载 WWDR Intermediate Certificate 并且像安装iPhone Developer 或者 Distribution Certificate那样给它装上。选中的证书旁有个小三角,点击它会显示证书关联的私钥。要是没有,看看你是不是在“My Certificates”类别下。要对程序进行签名必须需要私钥,要是当前确实在"My Certificates"下并且还是没有小三角,需要作废旧证书并且创建并提交一个新的CSR来创建新的私钥和证书。

  注意:如果创建了新私钥或者证书,关联到旧证书的配置文件就失效了,需要重新生成新 pfofiles。最好在拷贝新证书之前把旧的从开发机器和设备上删除掉,这样可避免新旧证书/配置文件混淆。这么做不影响已经在app store里的程序。
  警告:安装 iPhone 证书后不要改动默认的 "Use System Defaults" 信任设置。如果信任设置不是'Use System Defaults',在生成应用程序的时候会得到一个 CSSMERR_TP_NOT_TRUSTED 签名错误。
Provisioning Profiles - 安装/校验
  要把从iPhone Developer Program Provisioning Portal下载回来的Provisioning Profile安装到开发机器,首先需要启动 Xcode然后点击"Window > Organizer"来打开Organizer。把provisioning profile拖到标记为"Provisioning Profiles"的区域内即可。
  如果是为了开发而安装 Provisioning Profile,还需要把它装在开发设备上。在 iPhone OS 设备已经插到电脑上的时候,在 Devices 三角下选择设备,然后在Organizer里把开发provisioning profile拖进去。这就把 Provisioning profile装到 iPhone OS设备里了。
  注意:确保安装在开发设备和Mac里的 Development Provisioning完全相同对成功生成并安装测试程序是非常重要的。
  注意:跟 Development Provisioning Profiles不同,App Store Distribution Provisioning Profiles不能安装在iPhone OS设备里。用App Store Distribution Provisioning生成的程序是用来通过 iTunes Connect上传到App Store的。
  要告诉 Xcode 使用哪个 Provisioning profile,打开 Xcode 项目,打开 Target build settings,滚动到 Code Signing。在 Code Signing 区域有个带小三角的 Code Signing Identity。确定设置是为任何 iPhone OS 设备,之后在Value列点击弹出菜单并且选择要使用的 Provisioning Profile。为了开发,建议选择 "iPhone Developer",要发布,建议选择"iPhone Distribution"。这些都在弹出菜单的"Auto matic Profile Selector"区域里,这样就可以使 Xcode来为你找到正确的Provisioning Profile。
  注意:要是丢失了 iPhone devloper/Distribution证书的私钥,就无法选择证书关联到的 Provisioning Profile。从备份中导入 iPhone developer/Distribution 证书的私钥可以解决这个问题。如果丢了或者删了私钥,就得生成一个新的CSR并且下载新的 iPhone Developer/Distribution 证书和Provisioning Profile。
  程序的 Bundle Identifier 必须跟Provisioning profiles的Bundle Identifier APP ID匹配。要编辑程序的 Bundle Identifier,打开 target's properties settings,在 Identifier 栏输入 Bundle Identifier。如果在 App id的bundle identifier里使用星号通配符,就可以替换为反向DNS格式的字符。
  下面有一些可以输入到 Identifier 框的例子。
  如果AppID是 A1B2C3D4E5.com.domainname.applicationname。输入com.domainname.applicationname 作为 Bundle Identifier
  AppID是 A1B2C3D4E5.*,输入反向DNS格式的字符串作为 Bundle Identifier。

关于 Profiles 和 App IDs
  创建 Provisioning Profiles 时可以关联两种类型的 App ID。第一个类型叫做通用App ID(Wildcard App ID)。推荐大多数iPhone OS开发用通用App ID的Provisioning Profiles,因为这样单个通用App ID可以用来生成和安装大多数程序,包括 iPhone Reference Libary 里的示例代码。通用App ID通过在  Identifier 里输入星号创建。星号必须是App ID字符串的最后一个字符。如果使用通用App ID,记着在Xcode项目里输入Bundle Identifier时把星号替换为反向DNS格式。
假设有 App ID ABCDE12345.*:
ABCDE12345是Bundle种子ID(由Apple生成)
*是App ID的Bundle Identifier。在xcode里输入bundle identifier时需要把星号替换为反向DNS格式。
假设有 App ID: ABCDE12345.com.yourcompany.*
ABCDE12345是Bundle种子ID(由Apple生成)
com.yourcompany.* 是App ID的Bundle Identifier。并且xcode项目里的bundle identifier必须以'com.yourcompany.'开头,星号可以替换成任意字串。
  第二类 App ID 称作固定AppID(Explicit App ID)。这类 APP ID限定了一个provisioning profile只允许一个程序安装。启用iPhone OS 3.0特性需要固定 App ID,例如 In App Purchase或者 App Push Notification 服务。固定ID通过输入指定字串创建。推荐做法是用反向DNS格式。
  重要:一个避免将来可能产生问题的提示:修改 yourcompany 为真正的名字。

Ad Hoc
为 Ad Hoc发布生成应用程序跟生成App Store程序类似,只是多了两步。第一,需要用 iPhone Developer Program Provisioning Portal 创建一个 Ad Hoc Distribution provisioning Profile并添加发布目标设备的 UDID。第二,创建一个代码签名Entitlements file。关于如何创建Entitlements file请阅读 iPhone 开发者指南的 Managing Application Entitlements部分。创建完 Entitlements file并把它添加到 Code Signing Entitlements build settings之后,打开EntitleMents File并且田间或编辑 get-task-allo把它设为false。
分享到:
评论

相关推荐

    iReSign.app,ios签名工具下载

    总结来说,iReSign.app作为一款强大的iOS签名工具,极大地便利了开发者在不越狱设备上的应用测试和部署。通过理解iOS签名的基本原理和iReSign.app的使用方法,开发者可以更有效地管理自己的应用生命周期,并确保应用...

    ios苹果签名工具含免费证书亲测可用(源代码下载).zip

    在iOS签名过程中,证书用于证明应用的来源和开发者身份。 5. `ausign_runtime` 和 `jre`:这两个文件夹可能包含了签名工具运行所需的运行时环境和Java运行环境(JRE),因为许多开发工具依赖于特定的运行时库来执行...

    App Singer(iOS重签名工具)

    **App Singer:iOS重签名工具详解** 在iOS应用开发领域,App Singer是一个强大的工具,它专为已经打包的iOS应用程序提供重新签名的功能。这使得开发者和测试者能够在不经过Apple官方审核的情况下,对.app、.ipa和....

    iOS 重签名工具

    在这段描述中就用“工具”这个名字来直接代表重签名工具 使用方法: 1.打开终端 2.将“工具”拖入终端,敲击空格 3.将需要重签名的程序包(一般在 payload 文件夹中)拖入终端,...总结格式: 工具 程序包 输出文件名

    ios-电子签名.zip

    总结来说,"ios-电子签名.zip"提供了一个具备横竖屏适配、可移植和易扩展性的电子签名解决方案,对于iOS开发者来说,无论是学习还是实际应用,都是一个宝贵的资源。通过深入研究和实践,可以提升在移动应用开发中的...

    iOS超级签名.zip

    总结起来,iOS超级签名是一种绕过App Store官方审核的分发方式,它依赖于个人开发者账号的签名机制。通过这个压缩包,用户可以学习并实践这一技术,提高iOS应用的内部测试和部署效率。但同时,也要谨慎操作,遵循...

    IOS 批量打包工具

    在iOS开发过程中,批量打包是一项常见且重要的任务,特别是在企业级应用分发或者频繁更新时。批量打包工具能够显著提高开发效率,减少手动操作的繁琐和出错的可能性。本篇文章将详细探讨iOS批量打包的原理、步骤以及...

    ios开发--Objective-C 基础总结-(重点已标识)

    Objective-C 是 iOS 开发的基础,本篇文章主要对 Objective-C 的基础知识进行了总结,特别标注了重点内容,适合初学者快速入门并转向 iOS 平台开发。 首先,我们要理解面向对象编程的基本概念。在 Objective-C 中,...

    IOS实现RSA2签名与验签

    总结来说,iOS中实现RSA2签名与验签涉及加载密钥、数据哈希、签名生成与验证等步骤。在实践中,需要利用如Security框架和CommonCrypto库提供的功能,结合自定义的工具类,以确保数据安全和签名的正确性。

    iOS-App-签名流程.doc

    总结起来,iOS应用签名流程涉及到多个步骤,包括CSR文件的创建、证书的申请与安装、AppID的配置、设备注册、签名文件的生成以及最终的签名与打包过程。每一步都需要仔细操作,确保无误,这样才能顺利地完成应用的...

    IOS分发流程.docx

    iOS 分发流程主要涉及到两种签名方式:...总结来说,iOS的超级签名机制是一种创新的分发方式,解决了企业签名的不稳定性和频繁掉签问题,为开发者提供了更可靠的应用分发渠道,同时也给用户带来了更顺畅的安装体验。

    ios开发证书申请(详细图文介绍)

    总结,iOS开发证书和签名的申请是开发者必须掌握的基本技能,只有正确配置了这些证书,才能确保应用在开发阶段能正常运行,并在最终发布时符合Apple的审核要求。本文提供的详细步骤和图文指南,将有助于ios新手快速...

    iOS Cydia Impactor 撞击器 0.9.51

    这个工具的主要功能是允许用户将未签名的应用程序(IPA文件)安装到他们的iOS设备上,而无需通过Apple的官方App Store。这对于开发者在发布应用前进行测试,或者对于那些希望运行非官方或越狱应用的用户来说非常有用...

    ios试题总结

    ### iOS试题总结:Objective-C中的多继承替代方案 #### 一、引言 在iOS开发过程中,面试官经常会在技术面试环节中询问关于Objective-C语言的一些特性,特别是那些与Java或C++等其他面向对象语言不同的地方。其中一...

    详解IOS微信上Vue单页面应用JSSDK签名失败解决方案

    总结而言,为了解决iOS微信平台上单页面应用使用JSSDK签名失败的问题,开发者需要特别注意签名URL的处理策略。通过合理利用vuex缓存和路由守卫,可以有效解决这一问题,从而提高用户体验和应用的稳定性。

    iOS 10 适配知识点总结 - 简书1

    iOS 10 适配知识点总结 iOS 10 适配知识点总结是指在 iOS 10 系统中,开发者需要注意的一些关键点,以确保 App 的正常运行和适配。下面是 iOS 10 适配知识点总结: 1. Xcode 8.0 的使用 在 iOS 10 中,Xcode 8.0...

    ios15.7真机调试包

    总结来说,"ios15.7真机调试包"是iOS开发者进行应用测试和调试的重要工具,它确保了应用在不同设备和系统版本上的兼容性和性能。通过合理的使用和配合Xcode等开发工具,开发者可以高效地优化他们的iOS应用程序,为...

    完美iOSapp免签程序.rar

    总结来说,"完美iOS app免签程序.rar"提供了一种方法,使开发者能够绕过传统签名流程,通过个人证书实现iOS应用的免签分发。这在测试、内部部署或小范围分享应用时非常有用。同时,它可能包含了Web封装技术,使得...

    IOS联真机签名解决方案.docx

    ### IOS联真机签名解决方案 #### 一、目标与背景 在移动开发领域,特别是针对iOS平台的应用开发过程中,签名机制对于确保应用的安全性和合法性至关重要。本文档旨在介绍一种适用于iOS设备的真实机签名解决方案,该...

Global site tag (gtag.js) - Google Analytics