在使用脚本xcodebuild自动打包的时候,会用到签名证书和描述文件,我在编译的时候搞了好长时间才搞明白,下面介绍如何得到正确配置。

  证书:证书是用来给应用程序签名的,只有经过签名的应用程序才能保证他的来源是可信任的,并且代码是完整的, 未经修改的。在Xcode Build Setting的Code Signing Identity中,你可以设置用于为代码签名的证书。

  .p12:因为直接从Apple下载的证书只有公钥,没有私钥。没办法证明这个证书是你的(没有办法证明你有这个权利)。而从本地钥匙串中导出的.p12文件是包含公钥和私钥的,也就是说可以把证书上描述的权利赋予他人。

  描述文件:描述文件里包含了App ID , Certificates (证书), Devices(设备)。 说明生成描述文件需要用到这些信息。我们要打包或者在真机上运行一个应用程序,首先需要证书来进行签名,用来标识这个应用程序是合法的、安全的、完整的等等。然后需要指明它的App ID,并且验证Bundle ID是否与其一致。再次,如果是真机调试,需要确认这台设备能否用来运行程序。而Provisioning Profile就把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用,这样我们只要在不同的情况下选择不同的profile文件就可以了。而且这个Provisioning Profile文件会在打包时嵌入.ipa的包里。

一、“手动管理证书”与“自动管理证书”

  在Xcode8以后苹果引入了自动管理证书(automatically manage signing),设置自动管理证书后xcode会根据账号证书和苹果开发者中心设置的内容,自动生成描述文件并下载到机器中使用。

  如果我们想手动管理证书,请将xcode中的“automatically manage signing”勾掉。

二、正确获得证书“常用名称”

  首先要安装证书或者直接安装到处的p12文件。其次要得到“常用名称”

1、打开“钥匙串访问”

  在“Launch”中搜索“钥匙串访问”

2、找到你的证书,单击鼠标右键,单击“显示简介”

3、其中常用名称就是证书名称copy待用

三、得到对应证书的描述文件

  得到证书名称还不够还需要得到描述文件(Provisioning Profiles)

  每个用户有其相应的Provisioning Profiles配置目录在当前用目录中,我的目录如下

cd /Users/rongshenglai/Library/MobileDevice/Provisioning Profiles

   其中就是我目前持有的描述文件。

 

1、登录“苹果开发者中心” https://developer.apple.com/

2、点击“Certificates, Identifiers & Profiles”

  这里就是我的描述文件,“Development”是开发者描述文件可以打包后在真机上安装,“Distribution”是发布描述文件如果要发布到appstore需要这个描述文件。

3、创建描述文件

a)单击“+”创建一个描述文件

b)选择开发者描述文件还是发布描述文件,选择后单击“continue”

c)选择appid(也就是设置此描述文件应用于那个app,如果你有多个app需要给每个app都配置一个描述文件),选择好后单击“continue”

d)选择那个证书可以使用此描述文件,不知道全选即可,单击“Continue”

e)选择打包后可以在那些设备上使用,选择好后单击“Continue”

f)在Profile Name中输入此描述文件的名字,单击“Continue”。

4、下载描述文件

  证书创建完成后需要把描述文件手动下载到本机

  找到你要使用的描述文件(开发者、发布)单击后显示如下内容,单击“Download”后保存到 “/Users/rongshenglai/Library/MobileDevice/Provisioning Profiles” 目录中注意每个人的个人目录不同根据情况修改。

  下载的文件名类似“XXXX.mobileprovision” 前边的XXXX记录下来它就是描述文件名,使用时不要带.mobileprovision

  注意:刚才制作描述文件时一定要选择你使用的证书。

四、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>。

参考文档:

  https://blog.csdn.net/potato512/article/details/52180916

  https://www.cnblogs.com/ym123/p/4292002.html

  https://blog.csdn.net/phunxm/article/details/42685597/

证书(Certificate)与描述文件(Provisioning Profiles)的更多相关文章

  1. 【Abode Air程序开发】iOS证书(.p12)和描述文件(.mobileprovision)申请

    iOS证书(.p12)和描述文件(.mobileprovision)申请 5+App开发 Apple证书 iOS证书 iOS有两种证书和描述文件: 证书类型 使用场景 开发(Development)证 ...

  2. iOS 证书(.p12)和描述文件(.mobileprovision)的导出和使用方法

    为什么要导出.p12文件 当我们用大于三个mac设备开发应用时,想要申请新的证书,如果在我们的证书里,包含了3个发布证书,2个开发证书,可以发现再也申请不了开发证书和发布证书了(一般在我们的证书界面中 ...

  3. iOS证书(.p12)和描述文件(.mobileprovision)生成制作教程 By h.l

    iOS证书(.p12)和描述文件(.mobileprovision)制作 证书类型分为2种,开发证书和发布证书 1.开发证书(iOS Certificates (Development))(用于真机调 ...

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

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

  5. iOS证书(.p12)和描述文件(.mobileprovision)申请

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

  6. [转]iOS证书(.p12)和描述文件(.mobileprovision)申请

    转载于:http://ask.dcloud.net.cn/article/152 iOS有两种证书和描述文件: 证书类型 使用场景 开发(Development)证书和描述文件 用于开发测试,在HBu ...

  7. 苹果证书p12和描述文件的创建方法

    在2020年之前,我们在使用香蕉云编创建苹果证书的时候,只需要注册苹果开发者账号,但不需要缴费成为开发者. 在2020年之后,需要先缴费成为苹果开发者. 假如你还没有注册苹果开发者账号,可以先参考下下 ...

  8. 更新证书错误:No matching provisioning profiles found

    在Xcode中当你在更新了你得证书而再重新编译你的程序,真机调试会出现“Your build settings specify a provisioning profile with the UUID ...

  9. iOS证书和描述文件

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

随机推荐

  1. OneZero第四周第一次站立会议(2016.4.11)

    1. 时间: 15:10--15:25  共计15分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...

  2. day3——关于<s:if/>和文件上传

    一个小的注意点 <s:if test='#backyear==#yearatd'>selected="selected"</s:if> <s:if t ...

  3. MT【96】一道三角恒等变换题

    设$a,b,c$是正数,且$(a+b)(b+c)(c+a)=8$,证明不等式:$\frac{a+b+c}{3}≥[\frac{a^3+b^3+c^3}{3}]^{\frac{1}{27}}$ 评:记住 ...

  4. 【刷题】洛谷 P1966 火柴排队

    题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示 ...

  5. 学习Spring Boot:(十)使用hibernate validation完成数据后端校验

    前言 后台数据的校验也是开发中比较注重的一点,用来校验数据的正确性,以免一些非法的数据破坏系统,或者进入数据库,造成数据污染,由于数据检验可能应用到很多层面,所以系统对数据校验要求比较严格且追求可变性 ...

  6. 【BZOJ1898】[ZJOI2005]沼泽鳄鱼(矩阵快速幂,动态规划)

    [BZOJ1898][ZJOI2005]沼泽鳄鱼(矩阵快速幂,动态规划) 题面 BZOJ 洛谷 题解 先吐槽,说好了的鳄鱼呢,题面里面全是食人鱼 看到数据范围一眼想到矩乘. 先不考虑食人鱼的问题,直接 ...

  7. HGOI20180813 (NOIP2018 提高组 Day2 模拟试题)

    省常中省选提高Day2 继续 第一题就考了贪心,正解95pts的贪心策略第一印象是想到的,但是被自己否定掉了qwq,然后打了 不是正解的贪心,样例5没过(可怜)思路如下:先找出每个门对应可以通过的人数 ...

  8. 洛谷 P5108 仰望半月的夜空 解题报告

    P5108 仰望半月的夜空 题目描述 半月的夜空中,寄托了多少人与人之间的思念啊 曦月知道,这些思念会汇集成一个字符串\(S(n = |S|)\) 由于思念汇集的过于复杂,因此曦月希望提炼出所有的思念 ...

  9. 【洛谷P3916】图的遍历

    题目大意:给定一个 N 个点,M 条边的有向图,求每个点能够到达的节点的最大编号是多少. 题解:因为题中所给图不一定是一个 DAG,因此无法进行按照拓扑序来动态规划,需要另辟蹊径.由于求的是每个节点能 ...

  10. Spark记录-SparkSQL

    Spark SQL的一个用途是执行SQL查询.Spark SQL也可以用来从现有的Hive安装中读取数据.有关如何配置此功能的更多信息,请参阅Hive表部分.从另一种编程语言中运行SQL时,结果将作为 ...