ios证书_ios证书申请 - CSDN
精华内容
参与话题
  • 免费生成ios证书,利用Hbuilder打包ipa

    万次阅读 2018-04-24 10:57:35
    不过新技术来了,只需要普通免费的苹果账号无需付费成为开发者就可以申请ios证书打包ipa安装到自己手机测试,强大吧!这个神器就是Appuploader,ios app测试及上架辅助工具。Appuploader安装教程当然如果要上架App ...

    虽然xcode现在可以免证书进行测试了,但众多跨平台开发者,如果还没注册苹果开发者账号。

    想安装到自己非越狱手机测试是无能为力了。

    不过新技术来了,只需要普通免费的苹果账号无需付费成为开发者就可以申请ios证书打包ipa安装到自己手机测试,强大吧!

    这个神器就是Appuploader,ios app测试及上架辅助工具。

    Appuploader安装教程

    当然如果要上架App Store还是需要注册一个付费的苹果开发者账号。

    如果只是安装ios应用到自己手机测试,现在只需要注册一个普通的苹果账号就行了。

    下面进入教程

    申请ios证书打包ipa测试分五步进行

    1.申请一个苹果账号

    2.申请ios测试证书(p12)

    3.申请ios描述文件(mobileprovision)

    4.打包ipa

    5.安装ipa

    一、申请苹果账号

    也可以用我注册好的苹果账号体验下,新注册个也简单,1分钟搞定!

    账号:894418571@qq.com 密码:abc123456ABC

    1、点击苹果id注册地址,输入相关信息注册,如果已经有苹果账号了看第二步,还需要登录下苹果开发者中心,同意下协议,


    https://appleid.apple.com/account?localang=zh_CN





    2、注册成功了,或者有苹果账号了,登录苹果开发者中心

    https://developer.apple.com/account

     



    打钩同意协议,点击Submit提交。





    如此就可以登录Appuploader,创建ios测试证书了。



    二、申请ios测试证书(p12)



    1、打开Appuploader,用苹果账号登录

     



    如果出现这个提示说明还没在苹果开发者中心同意协议,先同意下,请看第一个大步骤的第二小步。

     



    2、登录上去有个提示不用管、叉掉,选择Certification






    3、点击右下角+ADD,选择第一项 ios App development,输入名称(英文随意)、邮箱(随意)、


    密码后面打包ipa时要用到,要记住,123之类密码的就行。


     



    4、点击p12 File下载保存.p12 证书文件


     


     


    三、申请ios描述文件(mobileprovision)


    1、返回软件,选择Profiles





    2、点击右下角+ADD,先选择添加Add appid 应用标识符、输入appid,格式是com.com.com这样子的,中间有两个点。


    像我开始输入的com.ceshi.ceshi出现错误提示,格式虽然没错,但有报错,尝试修改下不报错就行了。


    后面我改下如com.fen.tian,如此就ok,appid在打包ipa时要填写,记好。


     
     


    3、下一步添加用来测试的手机了,先获取UUID。


    使用 iPhone 或 iPad 扫码选择自带的浏览器safari浏览器打开二维码里的链接,即可快速获取 UDID


    或者连接苹果手机助手获取到。


    这个一长串的就是设备的UUID


    04bff1010f1656cde7d60g560d7d897e2821dc88

    转载自:https://blog.csdn.net/xxw888/article/details/76083152

    展开全文
  • iOS完整的证书申请和打包过程

    千次阅读 2017-05-22 11:45:03
    上面这个就是我们申请好证书后,下载到本地的.cer文件,也就是常说的开发证书与发布证书的样式。这.cer文件格式的证书是让开发者使用的设备(也就是你的Mac)有真机调试,发布APP的权限。 上面这个就是我们配置好...

    今天刚好客户定制的APP需要上架,也提供了新的开发者账号,所以就顺带把申请证书与发布流程写一遍。

    • 证书是什么?

          

    上面这个就是我们申请好证书后,下载到本地的.cer文件,也就是常说的开发证书与发布证书的样式。这.cer文件格式的证书是让开发者使用的设备(也就是你的Mac)有真机调试,发布APP的权限。

    上面这个就是我们配置好证书后,下载到本地的.mobileprovision文件,也就是配置文件的样式。这.mobileprovision文件格式的配置文件是让开发者的项目(APP)能有真机调试,发布的权限。

    • 申请流程。

      1. 申请钥匙串文件

        进入  (Launchpad),找到   (我的是在其他里面找到的),运行后再左上角

       

        

        

     

        

        存储在桌面就好了,然后就完成退出钥匙串工具就可以了。

     

      2.申请开发证书,发布证书

        打开苹果开发者中心(https://developer.apple.com)

       

     

     

     

        

        

     

        

     

     

        

        

        

     

        

      3.注册项目的Bundle ID

     

        

     

     

     

      

      

     

        

     

     

       到这里就算注册完成了 。

      4.添加测试设备

        

     

     

        

        

        填写完下一步就好了。 获取设备的UDID:设备连接Mac 打开iTunes 

     

        

     

     

     

        

     

         如果觉得麻烦,或则条件不允许可以选择蒲公英提供的方式(https://www.pgyer.com/doc/view/udid

     

      5.配置证书

        

     

     

        

       

     

     

        

        这里不用担心会选择错误,你配置开发证书,那这里就只有开发证书供你选择。配置发布证书,这里就只有发布证书供你选择。

     

       如果是配置开发证书,就还会需要你设置,在这个项目中添加哪些设备作为真机调试的设备

        

     

     

          

          完成创建后,只要下载这个配置文件,双击运行就可以了。然后退出网页。证书就已经申请好了,配置好了。你也可以真机调试,也能发布了。(Xcode7 以后不需要开发者账号也能真机调试,只要你在Xcode登陆 Apple ID 账号,不过发布还是需要开发者账号的)步骤:

        

     

     

        

        

        登陆成功后:

        

     

     

     

     

     

         然后下面会出现Fix Issue 按钮点击就好了,系统自动帮你调试好。(个人理解:这里的Bundle ID最好在后面加点后缀,不然你已经在网页注册过这个Bundle ID这里就会报错,或则你这里把Bundle ID注册了,你另外的账号就得换个Bundle ID了

         其实Xcode 7已经可以自动管理证书了,但是有时候还是有一些毛病。比如我已经创建好的证书,Xcode 还会自己去重新创建证书、也不能自定义命名。不过,据说 Xcode 8完善很多。具体能完善到什么程度,有待考证。

    • 发布流程。

      打开 iTunes Connect (https://itunesconnect.apple.com) 登陆账号;

     

     

       

        

         不懂填写什么,可以点问号都是中文的提示

        

     

        创建后就进入

     

        

     

     

     

      填写完了,右上 存储 按钮,保存下。然后继续:

     

        

      

          

          上传APP截图,最新的规定是只要上传5.5寸的截图就可以了;视频,看个人,好像是十几秒左右吧,我没上传过,图片、视频的内容要是APP中真实存在的;然后就是APP描述(描述的内容要与APP相符合),关键词(据说不能出现竞品的名字,没考证过),技术支持网址,营销网址(两个网址没有也可以用公司的网站);下面部分:

     

                    

     

        都填写完了,就存储下。然后检查有没有错误,或则写错的。 (填写过程中,最好填写完一些就存储下,防止网络出问题,白弄,特别是上传完截图)然后回到Xcode,打开你的项目:

        

      

        

      

        

     

        

     

         

        

        

     

     

          

     

        下面是导出ipa的提交方式:

     

          

        

        后面几步也是选择发布证书,检查发布配置文件(注:如果是导出到分发网站的ipa,发布的配置文件必须是 Ad-hoc 的,企业级账号还可以是 In-house ,详细参考:蒲公英的说明),然后选择保存路径。然后在Xcode里面打开:

     

        

     

          运行后,登陆开发者账号。把ipa文件添加进去,下一步 ,下一步,就可以提交到 iTunes Connect了。(提交到分发网站的请参考:https://www.pgyer.com/doc/view/app_upload)步骤差不多,就不详解了。提交过程的快慢跟网速有关,成功后就可以关闭Xcode了,回到 iTunes Connect。

     

      

     

     

         进入活动。查看项目是否构建状态;如果完成了,就继续:

     

        

    添加完构建版本,存储下,整个资料的填写提交差不多完成。然后设置:

     

     

     

    这个根据个人需求,设置价格,销售范围等等。完了检查下,看有没有错误的地方。没有就可以点击右上角的提交以供审核了。

    还有一个,你也可以添加APP在APPStore上的本地化,APPStore会根据你做的本地化,实现不同地区的账号看到你的APP显示的是本地化的语言,如果你没做本地化,那么显示就是你的APPStore主要语言

     

      

      

       最后就是这个页面了,还是一样有就有,没有就没有,选择提交。就是等待审核了。现在新提交应用,我个人测试 3个工作日上架了,更新迭代的应用是24个小时上架了。这个具体,看运气了。

     

      

    1.提交上去了,等待构建完成.突然发现在活动中看不到构建的版本:

      检查邮件,是不是因为权限问题,构建失败了,所以没有显示构建版本;


    展开全文
  • iOS-开发者相关的几种证书

    千次阅读 2016-11-01 14:45:54
    目录  ...证书的概念数字证书的概念iOS开发证书iOS开发证书的根证书申请证书CSRCertificate Signing Request 四供应配置文件Provisioning Profiles Provisioning Profile的概念Provisioning

    目录 

    1. 引言
    2. 写在前面
    3. 一App IDbundle identifier
    4. 二设备Device
    5. 三开发证书Certificates
      1. 证书的概念
      2. 数字证书的概念
      3. iOS开发证书
      4. iOS开发证书的根证书
      5. 申请证书CSRCertificate Signing Request
    6. 四供应配置文件Provisioning Profiles
      1. Provisioning Profile的概念
      2. Provisioning Profile的构成
    7. 五开发组供应配置文件Team Provisioning Profiles
      1. Team Provisioning Profile的概念
      2. Team Provisioning Profile生成更新时机
    8. 六App Group ID
      1. App Group的概念
      2. App Group的配置
    9. 七证书与签名Certificate Signature
      1. Code Signing Identity
      2. Code Signing
      3. Verify Code Signature with Certificate
    10. 八在多台机器上共享开发账户证书
      1. Xcode导出开发者账号developerprofile或PKCS12文件p12
      2. Keychain Access导出PKCS12文件p12
    11. 九证书配置常见错误
      1. no such provisioning profile was found
      2. No identities from profile
      3. Code Signing Entitlements file do not match profile
     

    引言

            关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾。对于一个iOS开发小白、半吊子(比如像我自己)抑或老兵,或多或少会有或曾有过以下不详、疑问、疑惑甚至困惑:

    1. 什么是App ID?Explicit/Wildcard App ID有何区别?什么是App Group ID?
    2. 什么是证书(Certificate)?如何申请?有啥用?
    3. 什么是Key Pair(公钥/私钥)?有啥用?与证书有何关联?
    4. 什么是签名(Signature)?如何签名(CodeSign)?怎样校验(Verify)?
    5. 什么是(Team)Provisioning Profiles?有啥用?
    6. Xcode如何配置才能使用iOS真机进行开发调试?
    7. 多台机器如何共享开发者账号或证书?
    8. 遇到证书配置问题怎么办?

    本文将围绕相关概念做个系统的梳理串烧。

    写在前面

    1.假设你使用过Apple设备(iMac/iPad/iPhone)且注册过Apple ID(Apple Account)。

    2.假设你或你所在的开发组已加入苹果开发者计划(Enroll in iOS Developer Program to become a member),即已注册开发者账号(Apple Developer Account)。

    • 只有拥有开发者账号,才可以申请开发/发布证书及相关配置授权文件,进而在iOS真机上开发调试Apps或发布到App Store。
    • 开发者账号分为Individual和Company/Organization两种类型。如无特别交代,下文基于$99/Year的普通个人开发者(Individual)账号展开。

    3.若要真机调试实践,你必须至少拥有一台装有Mac OS X/Xcode的Mac开发机(iMac or MacBook),其上自带原生的Keychain Access。

    .App ID(bundle identifier)

    App ID即Product ID,用于标识一个或者一组App。

    App ID应该和Xcode中的Bundle Identifier是一致(Explicit)的或匹配(Wildcard)的。

    App ID字符串通常以反域名(reverse-domain-name)格式的Company Identifier(Company ID)作为前缀(Prefix/Seed),一般不超过255个ASCII字符。

    App ID全名会被追加Application Identifier Prefix(一般为TeamID.),分为两类:

    • Explicit App ID:唯一的App ID,用于唯一标识一个应用程序。例如“com.apple.garageband”这个App ID,用于标识Bundle Identifier为“com.apple.garageband”的App。
    • Wildcard App ID:含有通配符的App ID,用于标识一组应用程序。例如“*”(实际上是Application Identifier Prefix)表示所有应用程序;而“com.apple.*”可以表示Bundle Identifier以“com.apple.”开头(苹果公司)的所有应用程序。
    用户可在Developer MemberCenter网站上注册(Register)或删除(Delete)已注册的App IDs。
    App ID被配置到【XcodeTarget|Info|Bundle Identifier】下;对于Wildcard App ID,只要bundle identifier包含其作为Prefix/Seed即可。

    二.设备(Device)

    Device就是运行iOS系统用于开发调试App的设备。每台Apple设备使用UDID来唯一标识。

    iOS设备连接Mac后,可通过iTunes->Summary或者Xcode->Window->Devices获取iPhone的UDID(identifier)。

    Apple Member Center网站个人账号下的Devices中包含了注册过的所有可用于开发和测试的设备,普通个人开发账号每年累计最多只能注册100个设备。

    • Apps signed by you or your team run only on designated development devices.
    • Apps run only on the test devices you specify.
    用户可在网站上注册或启用/禁用(Enable/Disable)已注册的Device。
    本文的Devices是指连接到Xcode被授权用于开发测试的iOS设备(iPhone/iPad)。

    三.开发证书(Certificates)

    1.证书的概念

    证书是由公证处或认证机关开具的证明资格或权力的证件,它是表明(或帮助断定)事理的一个凭证。证件或凭证的尾部通常会烙印公章

    每个中国人一生可能需要70多个证件,含15种身份证明。证件中“必需的”有30到40个。将这些证件按时间顺序铺开,那就是一个天朝子民的一生——持准生证许可落地,以户籍证明入籍,以身份证认证身份,持结婚证以合法同居,最终以死亡证明注销。

    2.数字证书的概念

    数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构——CA机构,又称为证书授权中心(Certificate Authority)发行的,人们可以在网上用它来识别对方的身份。
    • 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。
    • 数字证书还有一个重要的特征就是时效性:只在特定的时间段内有效。

    数字证书中的公开密钥(公钥)相当于公章。

    某一认证领域内的根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。

    为了防止GFW进行中间人攻击(MitM),例如篡改github证书,导致无法访问github网站等问题,可选择不信任CNNIC

     

    • 在[钥匙串-系统]中双击CNNIC ROOT,在【信任】|【使用此证书时】下拉选择【永不信任】。

     

    在天朝子民的一生中,户籍证明可理解为等效的根证书:有了户籍证明,才能办理身份证;有了上流的身份证,才能办理下游居住证、结婚证、计划生育证、驾驶执照等认证。

    3.iOS(开发)证书

    iOS证书是用来证明iOS App内容(executable code)的合法性和完整性的数字证书。对于想安装到真机或发布到AppStore的应用程序(App),只有经过签名验证(Signature Validated)才能确保来源可信,并且保证App内容是完整、未经篡改的。

    iOS证书分为两类:Development和Production(Distribution)。

    • Development证书用来开发和调试应用程序:A development certificate identifies you, as a team member, in a development provisioning profile that allows apps signed by you to launch on devices. 
    • Production主要用来分发应用程序(根据证书种类有不同作用):A distribution certificate identifies your team or organization in a distribution provisioning profile and allows you to submit  your app to the store. Only a team agent or an admin can create a distribution certificate.

    普通个人开发账号最多可注册iOS Development/Distribution证书各2个,用户可在网站上删除(Revoke)已注册的Certificate。

    下文主要针对iOS App开发调试过程中的开发证书(Certificate for Development)。

    4.iOS(开发)证书的根证书

    那么,iOS开发证书是谁颁发的呢?或者说我们是从哪个CA申请到用于Xcode开发调试App的证书呢?

    iOS以及Mac OS X系统(在安装Xcode时)将自动安装AppleWWDRCA.cer这个中间证书(Intermediate Certificates),它实际上就是iOS(开发)证书的证书,即根证书(Apple Root Certificate)。

    AppleWWDRCA(Apple Root CA)类似注册管理户籍的公安机关户政管理机构,AppleWWDRCA.cer之于iOS(开发)证书则好比户籍证之于身份证

    如果Mac Keychain Access证书助理在申请证书时尚未安装过该证书,请先下载安装(Signing requires that you have both the signing identity and the intermediate certificate installed in your keychain)。

    5.申请证书(CSR:Certificate Signing Request)

    可以在缺少证书时通过Xcode Fix Issue自动请求证书,这里通过Keychain证书助理从证书颁发机构请求证书:填写开发账号邮件和常用名称,勾选【存储到磁盘】。

    keychain将生成一个包含开发者身份信息的CSR(Certificate Signing Request)文件;同时,Keychain Access|Keys中将新增一对Public/Private Key Pair(This signing identity consists of a public-private key pair that Apple issues)。

    private key始终保存在Mac OS的Keychain Access中,用于签名(CodeSign)对外发布的App;public key一般随证书(随Provisioning Profile,随App)散布出去,对App签名进行校验认证。用户必须保护好本地Keychain中的private key,以防伪冒。

    • Keep a secure backup of your public-private key pair. If the private key is lost, you’ll have to create an entirely new identity to sign code. 
    • Worse, if someone else has your private key, that person may be able to impersonate you.

    在Apple开发网站上传该CSR文件来添加证书(Upload CSR file to generate your certificate):

     

    Apple证书颁发机构WWDRCA(Apple Worldwide Developer Relations Certification Authority)将使用private key对CSR中的public key和一些身份信息进行加密签名生成数字证书(ios_development.cer)并记录在案(Apple Member Center)。

    从Apple Member Center网站下载证书到Mac上双击即可安装(当然也可在Xcode中添加开发账号自动同步证书和[生成]配置文件)。证书安装成功后,在KeychainAccess|Keys中展开创建CSR时生成的Key Pair中的私钥前面的箭头,可以查看到包含其对应公钥的证书(Your requested certificate will be the public half of the key pair.);在Keychain Access|Certificates中展开安装的证书(ios_development.cer)前面的箭头,可以看到其对应的私钥。

     

    Certificate被配置到【Xcode Target|Build Settings|Code Signing|Code Signing Identity】下,下拉选择Identities from Profile "..."(一般先配置Provisioning Profile)。以下是Xcode配置示例:

    四.供应配置文件(Provisioning Profiles

    1.Provisioning Profile的概念

    Provisioning Profile文件包含了上述的所有内容:证书、App ID和设备

    一个Provisioning Profile对应一个Explicit App ID或Wildcard App ID(一组相同Prefix/Seed的App IDs)。在网站上手动创建一个Provisioning Profile时,需要依次指定App ID(单选)、证书(Certificates,可多选)和设备(Devices,可多选)。用户可在网站上删除(Delete)已注册的Provisioning Profiles。

    Provisioning Profile决定Xcode用哪个证书(公钥)/私钥组合(Key Pair/Signing Identity)来签署应用程序(Signing Product),将在应用程序打包时嵌入到.ipa包里。安装应用程序时,Provisioning Profile文件被拷贝到iOS设备中,运行该iOS App的设备也通过它来认证安装的程序。

    如果要打包或者在真机上运行一个APP,一般要经历以下三步:

    • 首先,需要指明它的App ID,并且验证Bundle ID是否与其一致;
    • 其次,需要证书对应的私钥来进行签名,用于标识这个APP是合法、安全、完整的;
    • 然后,如果是真机调试,需要确认这台设备是否授权运行该APP。

    Provisioning Profile把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用。这样,只要在不同的情况下选择不同的Provisioning Profile文件就可以了。

    Provisioning Profile也分为Development和Distribution两类,有效期同Certificate一样。Distribution版本的ProvisioningProfile主要用于提交App Store审核,其中不指定开发测试的Devices(0,unlimited)。App ID为Wildcard App ID(*)。App Store审核通过上架后,允许所有iOS设备(Deployment Target)上安装运行该App。

    Xcode将全部供应配置文件(包括用户手动下载安装的和Xcode自动创建的Team Provisioning Profile)放在目录~/Library/MobileDevice/Provisioning Profiles下。

    2.Provisioning Profile的构成

    以下为典型供应配置文件*.mobileprovision的构成简析

     

    (1)Name:该mobileprovision的文件名。

     

    (2)UUID:该mobileprovision文件的真实文件名。

     

    (3)TeamName:Apple ID账号名。

     

    (4)TeamIdentifier:Team Identity。

     

    (5)AppIDName:explicit/wildcard App ID name(ApplicationIdentifierPrefix)。

     

    (6)ApplicationIdentifierPrefix:完整App ID的前缀(TeamIdentifier.*)。

     

    (7)DeveloperCertificates:包含了可以为使用该配置文件应用签名的所有证书<data><array>。

     

    证书是基于Base64编码,符合PEM(PrivacyEnhanced Mail, RFC 1848)格式的,可使用OpenSSL来处理(opensslx509 -text -in file.pem)。

     

    从DeveloperCertificates提取<data></data>之间的内容到文件cert.cer(cert.perm):

     

    -----BEGIN CERTIFICATE-----

     

    将<data></data>之间的内容拷贝至此

     

    -----END CERTIFICATE-----`

     

    Mac下右键QuickLook查看cert.cer(cert.perm),在Keychain Access中右键Get Info查看对应证书ios_development.cer,正常情况(公私钥KeyPair配对)应吻合;Windows下没有足够信息(WWDRCA.cer),无法验证该证书。

    如果你用了一个不在这个列表中的证书进行签名,无论这个证书是否有效,这个应用都将CodeSign Fail。

     

    (8)Entitlements键<key>对应的<dict>:

     

    keychain-access-groups:$(AppIdentifierPrefix),参见Code Signing Entitlements(*.entitlements)。

     

    每个应用程序都有一个可以用于安全保存一些如密码、认证等信息的keychain,一般而言自己的程序只能访问自己的keychain。通过对应用签名时的一些设置,还可以利用keychain的方式实现同一开发者签证(就是相同bundle seed)下的不同应用之间共享信息的操作。比如你有一个开发者帐户,并开发了两个不同的应用A和B,然后通过对A和B的keychain access group这个东西指定共用的访问分组,就可以实现共享此keychain中的内容。

     

    application-identifier:带前缀的全名,例如$(AppIdentifierPrefix)com.apple.garageband。

     

    com.apple.security.application-groups:App Group ID(group. com.apple),参见Code Signing Entitlements(*.entitlements)。

     

    com.apple.developer.team-identifier:同Team Identifier。

     

    (9)ProvisionedDevices:该mobileprovision授权的开发设备的UDID <array>。

    Provisioning Profile被配置到【XcodeTarget|Build Settings|Code Signing|Provisioning Profile】下,然后在Code Signing Identity下拉可选择Identities from Profile "..."(即Provisioning Profile中包含的Certificates)。

    五.开发组供应配置文件(Team Provisioning Profiles

    1.Team Provisioning Profile的概念

    每个Apple开发者账号都对应一个唯一的Team ID,Xcode3.2.3预发布版本中加入了Team Provisioning Profile这项新功能。

    在Xcode中添加Apple Developer Account时,它将与Apple Member Center后台勾兑自动生成iOS Team Provisioning Profile(Managed by Xcode)。

    Team Provisioning Profile包含一个为Xcode iOS Wildcard App ID(*)生成的iOS Team Provisioning Profile:*(匹配所有应用程序),账户里所有的Development Certificates和Devices都可以使用它在这个team注册的所有设备上调试所有的应用程序(不管bundle identifier是什么)。同时,它还会为开发者自己创建的Wildcard/Explicit App IDs创建对应的iOS Team Provisioning Profile。

    2.Team Provisioning Profile生成/更新时机

    • Add an Apple ID account to Xcode
    • Fix issue "No Provisioning Profiles with a valid signing identity" in Xcode
    • Assign Your App to a Team in Xcode project settings of General|Identity
    • Register new device on the apple development website or Xcode detected new device connected

    利用Xcode生成和管理的iOS Team Provisioning Profile来进行开发非常方便,可以不需要上网站手动生成下载Provisioning Profile。

    Team Provisioning Profile同Provisioning Profile,只不过是由Xcode自动生成的,也被配置到【XcodeTarget|Build Settings|Code Signing|Provisioning Profile】下。

    六.App Group (ID)

    1.App Group的概念

    WWDC14除了发布了OS X v10.10和switf外,iOS 8.0也开始变得更加开放了。说到开放,当然要数应用扩展(App Extension)了。顾名思义,应用扩展允许开发者扩展应用的自定义功能和内容,能够让用户在使用其他应用程序时使用该项功能,从而实现各个应用程序间的功能和资源共享。可以将扩展理解为一个轻量级(nimble and lightweight)的分身。

    扩展和其Containing App各自拥有自己的沙盒,虽然扩展以插件形式内嵌在Containing App中,但是它们是独立的二进制包,不可以互访彼此的沙盒。为了实现Containing App与扩展的数据共享,苹果在iOS 8中引入了一个新的概念——App Group,它主要用于同一Group下的APP实现数据共享,具体来说是通过以App Group ID标识的共享资源区——App Group Container。

    App Group ID同App ID一样,一般不超过255个ASCII字符。用户可在网站上编辑Explicit App IDs的App Group Assignment;可以删除(Delete)已注册的AppGroup (ID)。

    2.App Group的配置

    Containing App与Extension的Explicit App ID必须Assign到同一App Group下才能实现数据共享,并且Containing App与Extension的App ID命名必须符合规范:

    1. 置于同一App Group下的App IDs必须是唯一的(Explicit,not Wildcard)
    2. Extension App ID以Containing App ID为Prefix/Seed

    假如Garageband这个App ID为“com.apple.garageband”,则支持从语音备忘录导入到Garageband应用的插件的App ID可能形如“com.apple.garageband.extImportRecording”。

     

     

    App(ex)

     

    App Group ID

    Provisioning Profile

    Code Signing Identity

    (Certificate Key Pair)

    App ID

    (bundle identifier)

    Devices

    (test)

    GarageBand

    置于同一分组:

    group.com.apple

    (1)共用同一证书:ios_development.cer

    (2)共用证书Key Pair中的Private Key进行CodeSign

    com.apple.garageband

    授权开发测试设备的UDIDs

    GarageBand扩展插件

    com.apple.garageband.extImportRecording

     

    关于Provisioning Profile,可以使用自己手动生成的,也可以使用Xcode自动生成的Team Provisioning Profile。

    App Group会被配置到【Xcode Target|Build Settings|Code Signing|Code Signing Entitlements】文件(*.entitlements)的键com.apple.security.application-groups下,不影响Provisioning Profile生成流程。

    七.证书与签名(Certificate& Signature)

    1.Code Signing Identity

     

    Xcode中配置的Code Signing Identity(entitlements、certificate)必须与Provisioning Profile匹配,并且配置的Certificate必须在本机Keychain Access中存在对应Public/Private Key Pair,否则编译会报错。

    Xcode所在的Mac设备(系统)使用CA证书(WWDRCA.cer)来判断Code Signing Identity中Certificate的合法性:

    • 若用WWDRCA公钥能成功解密出证书并得到公钥(Public Key)和内容摘要(Signature),证明此证书确乃AppleWWDRCA发布,即证书来源可信;
    • 再对证书本身使用哈希算法计算摘要,若与上一步得到的摘要一致,则证明此证书未被篡改过,即证书完整。

    2.Code Signing

    每个证书(其实是公钥)对应Key Pair中的私钥会被用来对内容(executable code,resources such as images and nib files aren’t signed)进行数字签名(CodeSign)——使用哈希算法生成内容摘要(digest)。

    Xcode使用指定证书配套的私钥进行签名时需要授权,选择【始终允许】后,以后使用该私钥进行签名便不会再弹出授权确认窗口。

    3.Verify Code Signature with Certificate

    上面已经提到,公钥被包含在数字证书里,数字证书又被包含在描述文件(Provisioning File)中,描述文件在应用被安装的时候会被拷贝到iOS设备中。

    第一步,App在Mac/iOS真机上启动时,需要对配置的bundle ID、entitlements和certificate与Provisioning Profile进行匹配校验:

    第二步,iOS/Mac真机上的ios_development.cer被AppleWWDRCA.cer中的 public key解密校验合法后,获取每个开发证书中可信任的公钥对App的可靠性和完整性进行校验。

    iOS/Mac设备(系统)使用App Provisioning Profile(Code Signing Identity)中的开发证书来判断App的合法性:

    • 若用证书公钥能成功解密出App(executable code)的内容摘要(Signature),证明此App确乃认证开发者发布,即来源可信;
    • 再对App(executable code)本身使用哈希算法计算摘要,若与上一步得到的摘要一致,则证明此App(executable code)未被篡改过,即内容完整。
    小结:
    • 基于Provisioning Profile校验了CodeSign的一致性;
    • 基于Certificate校验App的可靠性和完整性;
    • 启动时,真机的device ID(UUID)必须在Provisioning Profile的ProvisionedDevices授权之列。
     

    八.在多台机器上共享开发账户/证书

    1.Xcode导出开发者账号(*.developerprofile)或PKCS12文件(*.p12)

    进入Xcode Preferences|Accounts:

    • 选中Apple IDs列表中对应Account的的Email,点击+-之后的☸|Export Accounts,可导出包含account/code signing identity/provisioning profiles信息的*.developerprofile(Exporting a Developer Profile)文件供其他机器上的Xcode开发使用(Import该Account)。
    选中右下列表中某行Account Name条目|ViewDetails,可以查看Signing Identities和Provisioning Profiles。
    • 选中欲导出的Signing Identity条目,点击栏底+之后的☸|Export,必须输入密码,并需授权export key "privateKey" from keychain,将导出Certificates.p12
    点击左下角的刷新按钮可从Member Center同步该账号下所有的Provisioning Profile到本地。
    选中右击列表中某个Provisioning Profile可以【Show in Finder】到[~/Library/MobileDevice/Provisioning\ Profiles]目录,其中Provisioning Profile的真实名称为$(UUID).mobileprovision,名如"2488109f-ff65-442e-9774-fd50bd6bc827.mobileprovision",其中<key>Name</key>中为Xcode中看到的描述性别名。

    2.Keychain Access导出PKCS12文件(*.p12)

    在Keychain Access|Certificates中选中欲导出的certificate或其下private key,右键Export或者通过菜单File|Export Items导出Certificates.p12——PKCS12 file holds the private key and certificate。

    其他Mac机器上双击Certificates.p12(如有密码需输入密码)即可安装该共享证书。有了共享证书之后,在开发者网站上将欲调试的iOS设备注册到该开发者账号名下,并下载对应证书授权了iOS调试设备的Provisioning Profile文件,方可在iOS真机设备上开发调试。

    九.证书配置常见错误

    1.no such provisioning profile was found

    Xcode Target|Genera|Identity Team下提示"Your build settings specify a provisioning profile with the UUID "xxx",howerver, no such provisioning profile was found."

    Xcode Target|BuildSettings|Code Signing|当前配置的指定UDID的provisioning profile在本地不存在,此时需要更改Provisioning Profile。必要时手动去网站下载或重新生成Provisioning Profile或直接在Xcode中Fix issue予以解决(可能自动生成iOS Team ProvisioningProfile)!

    2.No identities from profile

    Build Settings|CodeSigning的Provisioning Profile中选择了本地安装的provisioning profile之后,Code Signing Identity中下拉提示No identities from profile “…”or No identities from keychain.

    Xcode配置指定UDID的provisioning profile中的DeveloperCertificates在本地KeyChain中不存在(No identities are available)或不一致(KeyPair中的Private Key丢失),此时需去网站检查ProvisioningProfile中的App ID-Certificate-Device配置是否正确。如果是别人提供的共享账号(*.developerprofile)或共享证书(*.p12),请确保导出了对应Key Pair中的Private Key。必要时也直接在Xcode中Fix issue予以解决(可能自动生成iOS Team ProvisioningProfile)。

    3.Code Signing Entitlements file do not match profile

    "Invalid application-identifier Entitlement" or "Code Signing Entitlements file do not match those specified in your provisioning profile.(0xE8008016)."

    (1)检查对应版本(Debug)指定的*.entitlements文件中的“Keychain Access Groups”键值是否与ProvisioningProfile中的Entitlements项相吻合(后者一般为前者的Prefix/Seed)。

    (2)也可以将Build Settings|Code Signing的Provisioning Profile中对应版本(Debug)的Entitlements置空。

    4.Xcode配置反应有时候不那么及时,可刷新、重置相关配置项开关(若有)或重启Xcode试试。

     

     

    参考:

     

    iPhone真机调试应用程序》《iOS Developer:真机测试

    iOS Development--Certificates, Provisioning Profiles

    关于Certificate、Provisioning Profile、App ID的介绍及其关系

     

    数字签名和数字证书》《iOS keyChain 研究

    苹果开发者账号那些事儿》《iOS關於Provisioning Profiles這些事

    iOS Code Signing 学习笔记》《代码签名探析/Inside Code Signing

    iOS Code Signing: 解惑/iOS Code Signing: Under The Hood

     

    iOS行货自动打包》《解决Xcode无法生成Archive的问题》《iOS发布遇到的一些问题

    Xcode打包ipa包》《iOS程序生成ipa进行真机测试


    展开全文
  • iOS打包证书

    2020-07-30 23:30:07
    iOS开发打包证书与描述文件的配置。用于打包测试开发力量
  • iOS申请证书教程

    千次阅读 2017-12-23 14:49:17
    工具  mac系统电脑  hbuilder打包工具 ...   1. 在mac钥匙串申请CSR(CertificateSigningRequest)文件,后续申请发布证书要用到。...2. 左侧导航依次是 证书,钥匙串,id号(每个app有且只有一个a

    工具 

    mac系统电脑 

    hbuilder打包工具

    苹果开发者账号

     

    1. 在mac钥匙串申请CSR(CertificateSigningRequest)文件,后续申请发布证书要用到。

    登陆苹果开发者中心(https://developer.apple.com/)登陆账号 出现以下界面选择第二个


    2. 左侧导航依次是 证书,钥匙串,id号(每个app有且只有一个appid也就是bundleID),设备,证书的描述文件。

    1)证书

       分两种开发证书专供开发者使用(Development)这里不过多做介绍。第二种发布证书也就是上架App Store要用到的(production).




    2)        appid  首先创建id 这个id要与发布证书关联每个发布证书只有一个id,反之如此(切记APPID 不能已.app为结尾)。

    3)        设备   这个设备需要你的iphone或者ipad 或者mac系统的电脑的唯一序列号。自己百度。

    4) 描述文件   穿件描述文件首先要绑定一个证书,开发和发布都可以。然后要绑定appid。这个证书的作用就是把这个APPID和证书绑定在一起。

     提交申请,这个打包文件的所有文件,不能有以app为结尾的名称。




    这里的APPID必须跟你证书的APPID一致,profile文件就是上面提到的描述文件,证书就是发布证书。重点说下密码这个参数,我们申请的发布证书下载之后是一个cer文件 这里需要用到mac的钥匙串把cer证书转换成p12文件。

    登录苹果开发者中心提交版本的审核信息。这里重点说ipa的构建版本的问题。如果是mac系统直接用X-code 或者Application Loader。如果是window系统可以使用AppUploader 提交构建版本。提交成功之后最多10分钟会给你发邮件成功或失败,失败也有失败原因根据邮件内容做修改。如果安装包没问题 提交审核的页面的构建版本栏会出现刚提交的ipa安装包 直接提交等待官方对APP的最后审核(2-5天)。最后烧香拜佛祈祷一次就过吧!




    展开全文
  • IOS证书申请流程

    千次阅读 2019-06-06 18:16:37
    第一步,需要苹果开发者账号 一般来说是公司会给账号,毕竟设计账号缴费之类的,我这里也是公司的账号,... 第二步,进入苹果开发者网站 ... 第三步,登录并创建标识符 ...在登录成功后,左侧会出现如下界面: ...Profile...
  • iOS开发者证书介绍与总结

    千次阅读 2018-08-16 13:34:28
    一、认识各种证书及其作用  1、开发者证书分为 开发 和 发布 两种,类型为ios ...这里要着重说一下,开发和发布是两个独立的一套证书,所以要申请两个证书,开发的时候用iosDevelopment证书,上线的时候...
  • 申请ios证书并发布uniapp软件

    千次阅读 2019-12-30 18:39:37
    3.申请证书和描述文件之前需要先申请AppID和证书请求文件 4. 申请开发(Development)证书和描述文件(用户开发者开发和测试) 5. 申请发布(Distribution)证书和描述文件 6.使用Hbuilder X在线云打包 1.准备环境 ...
  • 发布证书 测试证书 推送证书 还有什么证书?真机测试用什么证书
  • iOS证书可以删除吗,到期怎么更新

    千次阅读 2019-08-27 14:44:56
    很多刚开始接触iOS证书的开发者可能不是很了解iOS证书的类型功能和概念。 下面对iOS证书的几个方面进行介绍。 iOS证书的类型和作用 1、iOS开发证书 iOS开发证书是用于测试APP,在开发过程中安装到苹果手机...
  • 如果还没申请iOS证书,请看下面的教程先申请!证书申请及打包流程APICloud在线打包1、进入开发控制台,选择要打包的应用,选择证书,在ios证书那里,上传申请的iOS证书文件再输入APP ids(应用id、包名,跟证书使用...
  • IOS证书申请和打包流程

    千次阅读 2019-08-26 14:13:26
    IOS证书申请和打包流程 参考资料: iOS 证书申请和使用详解 iOS完整的证书申请和打包过程 iOS开发证书与配置文件的使用 iOS 证书详解 iOS导出4个ipa包的含义 苹果开发者账号中,测试机器列表达到100台上限,想要...
  • 先介绍下证书类型很多刚开始接触iOS证书的开发者可能不是很了解iOS证书的类型功能和概念。下面对iOS证书的几个方面进行介绍。iOS证书的类型和作用1、iOS开发证书iOS开发证书是用于测试APP,在开发过程中安装到苹果...
  • iOS证书描述文件说明

    千次阅读 2016-04-20 12:05:22
    iOS证书分类说明? 开发者证书:(分为开发和发布两种,类型为ios Development,ios Distribution),这个是最基础的,不论是真机调试,还是上传到appstore都是需要的,是一个基证书,用来证明自己开发者身份的。...
  • 先讲一下如何在极光上申请android和ios证书,下一篇文章讲解具体在react native上配置运行极光推送。 一、首先打开极光推送的官网https://www.jiguang.cn/,然后注册账号,登录进去 二、创建应用 2.1、一看需要...
  • iOS证书的名字区分

    千次阅读 2017-02-11 14:03:54
    iOS证书的名字区分 iOS Development iPhone Developer: Team Member Name Used to run an iOS, tvOS, or watchOS app on devices and use certain app services during development. iOS Distribution ...
  • Appuploader软件可以辅助在Windows电脑直接申请iOS证书,并且可以上传ipa到App Store审核! 对于没有Mac电脑的开发者,是一个很好的iOS上架辅助工具 下面介绍申请一套iOS开发证书的详细流程 一、下载安装iOS...
  • iOS证书

    2016-03-02 18:16:26
    众所周知,开发iOS应用必须要有iOS证书(Certificates)和配置文件(Provisioning Profiles),那么问题来了: 1.什么是iOS证书,它是如何与app应用关联的? 2.iOS开发证书和生产证书有何区别,如何使用的? 3....
  • 关于IOS证书过期的问题

    万次阅读 2017-11-14 18:57:11
    第一次接触IOS,老板让我把过期的证书问题解决掉。。。 且不说熟练度的问题,我根本一脸懵好吗! 没办法,任务下来了,只能上了。 下面开始讲解一下我的辛苦历程,也是一个第一次接触IOS的心灵路程。 因为问题...
  • HBuilder在线打包流程,打包需要用到p12文件及配置文件....打包过程很简便,主要是申请iOS证书复杂点! 1、打开HBuilder工具,选择开发好的项目,点击发行,选择发行为原生安装包。 2、选择iOS打包...
1 2 3 4 5 ... 20
收藏数 39,954
精华内容 15,981
关键字:

ios证书