多个产品的证书和配置文件组织

2024-03-06

在我的工作场所,我们已经完成了一个 iOS 应用程序的开发,即将开始第二个应用程序的开发。

在此之前,我想澄清一些有关证书和配置文件以及构建环境的事情:

问题 1:我认为一个 Apple 帐户只能有一个分发证书,因此这将在两个应用程序中使用,这种想法是否正确? (通过它出现在配置文件中,我将创建一组新的配置文件,其中包含新应用程序的新应用程序 ID)。

问题 2:由于安装到钥匙串中的是证书而不是配置文件,因此我假设新应用程序应该仅在当前为当前应用程序设置的构建计算机上构建。

问题 3:与问题 2 相关,我想知道是否有必要或好主意,通过将当前应用程序和新应用程序的构建放在不同的物理构建机器上(或将构建机器分区为虚拟机)来分离它们。如果这两个应用程序使用不同的证书,我认为这是必要的(或者至少分区钥匙串)。 我担心出现证书和钥匙串问题。 但是,如果问题 1 的答案是只有一个分发证书,那么理论上应该不需要为每个应用程序拥有单独的构建机器?

Q4:两个应用程序都使用推送通知,可以为两者使用相同的推送证书(当然在不同的配置文件中)吗?

TIA


证书和配置可能是一个棘手的话题,因此在无意中给自己带来一些痛苦之前先询问一下无疑是个好主意!

Q1:每个账户只能有一张分发证书吗?

是的,个人和公司帐户每个会员年度仅限于一个有效的分发证书,但是如果个人或公司认为有必要,可以随时撤销并重新颁发该证书(公钥/私钥泄露、解雇员工可以访问私钥等)。我最近回答了一个问题“什么是代码签名身份?” https://stackoverflow.com/questions/15996468/what-are-code-signing-identities/16070915#16070915这可能有助于提供一些有关编码到配置文件中的信息以及 Xcode 在执行设备构建时如何查找此信息的额外上下文。请记住,根据所使用的配置文件类型(开发与分发),将改变配置配置文件中编码的证书和测试设备的数量和类型。

您也是完全正确的,因为您将使用一组全新的配置文件重用现有的分发证书,这些配置文件是使用您准备/正在编写的第二个应用程序的应用程序 ID/捆绑包 ID 进行编码的。

问题 2:在钥匙串中安装的是证书而不是配置文件,对吗?构建机器会受到什么影响?

是的,这是正确的。您的开发证书和分发证书都会安装到钥匙串中,而配置文件则安装到 Xcode 中的特殊目录中以用于代码签名操作。

假设您已经设置了构建机器并正在为您的第一个应用程序工作,那么您已经完成了很多艰苦的工作。您仍然需要做的事情的高级列表:

  • 使用现有证书为新 AppId 生成一组配置文件
  • 在构建环境中安装配置文件
  • 确保 Xcode 项目的“代码签名身份”构建设置配置为使用新创建的配置文件,或者更理想的是使用“自动配置文件选择器”(如果您的项目配置允许)。
  • 配置您的构建系统以实际创建新应用程序。

这些高级任务的具体 HOWTO 在某种程度上取决于您如何设置项目和构建系统,但通常应遵循构建第一个应用程序时使用的相同工作流程。

问题 3:将构建环境分区到不同的机器上是否有必要/好主意?

至于这个问题的“必要”部分,不,您不需要物理或虚拟地分离构建环境才能并行构建这些应用程序,但是您可以could如果您的业务需求需要基于每个应用程序的专用构建环境,请选择这样做。

从技术角度来看,配置文件提供了并行构建所需的 99% 的分区。唯一一次您遇到可能需要物理或虚拟分区的情况是,如果您是两个或多个 iOS 开发计划的成员,并且每个团队颁发的证书上的“通用名称”相匹配(例如, “iPhone Distribution: MyCompany”是 Team1 颁发的证书的通用名称,与 Team2 颁发的证书完全相同)。如果出现这种情况,您会在 Xcode 中看到如下警告和错误:

代码签名错误:证书身份“iPhone Distribution: MyName”在钥匙串中出现多次。协同设计工具只需要一个。

在所有其他情况下,假设您安装了证书和配置文件,并且代码签名身份值设置正确,则代码签名可以自行处理。

Q4:两个应用程序可以重复使用相同的推送证书吗?

这是一个坚定的“不”。每个应用程序 ID 都有自己的一组配置文件,并附有一组权利,其中一个是推送通知。使用推送通知权利构建新的配置文件时,系统会要求您生成新的推送证书 - 没有机会向 Apple 提供现有证书。这样做是为了确保推送通知“提供程序”(创建发送到 Apple 推送网关的推送通知有效负载的服务器)以类似于 iOS 生态系统中的方式进行沙箱处理 - 每个 AppId 一个提供程序...一个每个 AppId 的沙箱。

从安全角度来看,这可以防止攻击者只需在 Apple 的推送网关上提供有效的推送令牌和有效负载即可向您的用户发送垃圾推送通知。设置提供商代码的第二个实例并使用在创建新的配置文件时生成的推送证书,或者更新现有提供商以跟踪每个应用程序级别的推送通知令牌,并在发送推送通知负载时使用正确的证书到苹果。不幸的是,只有您(或您的同事)可以做出此决定,因为该决定将取决于您现有提供商的技术能力以及您/您的公司愿意在同一提供商实例上采取统一推送通知的风险程度。

其他人可能会在这里提出一些关于他们如何设置自己的提供程序的额外见解,但我使用了完全独立的实例,以防止出现一个应用程序的推送通知更新可能会破坏另一个完全不同的应用程序的推送通知的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个产品的证书和配置文件组织 的相关文章

  • 在 UIAlertController 的文本字段中选择文本

    我需要在 UIAlertController 出现后立即选择文本字段的文本 但是 我在标准 UITextField 中选择文本的方式在这里不起作用 这就是我尝试过的 但我似乎无法让它发挥作用 let ac UIAlertController
  • 为什么我的唯一设备 ID 发生了变化?

    我已经使用以下方法大约一个月了 没有任何问题 即使卸载应用程序后 设备 ID 仍保持不变 最近我注意到我的设备 ID 发生了变化 我最近在 Xcode6 上做了很多应用程序的构建 这可能是一个原因吗 我希望我确切地知道它什么时候发生变化 这
  • 如何创建粗体 UIFont

    我正在我的表格视图中进行一些自动换行 因为某些值太大 以至于超出了屏幕边缘 但是 字体 大小和粗体与表视图的默认设置不匹配 希望有人能帮助我解决这个问题 这就是我正在做的设置字段的操作 CGFloat tableView UITableVi
  • 如何在 Swift 中显示框架(SDK)中的视图控制器?

    我在 Objective C 中有自己生成的框架 SDK 它在我的 Swift iOS 项目中使用 我想调用我的初始控制器CCInitViewController 请参阅第一张图片 从我的 SDK 单击按钮 位于 App Controlle
  • 自定义 UISearchController 动画

    底线问题 如何覆盖取消属于 UISearchController 的 searchBar 的默认动画 标准搜索控制器行为 好的 我正在尝试为附加到 UISearchController 的 UISearchBar 变为活动状态时创建自定义动
  • 如何在 Objective-C + Cocoa 中创建自定义无边框 NSWindow?

    首先我要说的是 这是我的第一个真正的 Cocoa 应用程序 这是一个简单的应用程序 几乎在无边框窗口中显示我的网站 我目前创建无边框窗口的方式使用以下内容 void awakeFromNib window setStyleMask NSBo
  • 在 macOS 中获取用户首选的温度设置

    我正在尝试读取温度单位 摄氏度 华氏度 的用户设置系统首选项 我试图使用 NSLocale 获取此数据 但我找不到任何温度设置的证据 甚至可以读取这些数据吗 Thanks 官方 API 记录在首选项 实用程序 https developer
  • 哪里可以找到关于 swift Alert (UIAlertController) 的明确解释?

    对此找不到清晰且信息丰富的解释 在某个主题上搜索了一段时间后 我没有 找到清晰的解释 即使在它的类参考中UIAlertController 参考 https developer apple com library ios documenta
  • iOS 中特定字符串的 SHA1

    根据我的要求 输入字符串必须转换为字节值 string 的每个字符都是 16 位值 必须转换为低 8 位 然后在字节数组上计算 Sha1 生成的 SHA 1 将转换为 40 个字符的字符串 我知道如何将字符串转换为 SHA1 但其余部分对我
  • RestKit RKObjectMapping Swift 可选

    我有一个名为Activity可以选择有一个coordinate附于其上 import MapKit class Activity NSObject var coordinate CLLocationCoordinate2D class fu
  • 快速 Firebase 在异步任务中返回

    我在 swift 2 中遇到了适用于 iOS 的 Firebase SDK 的问题 我正在尝试将图片设置为从 Firebase 存储下载 当我调用该函数时 它返回 nil 我认为这是因为 Firebase sdk 提供的下载任务是异步的 因
  • 使用 Core Audio 忽略 __cxa_throw 是否安全?

    一个相似的question https stackoverflow com questions 12861748 how do i know when safe to ignore cxa throw on an all exception
  • 导航栏的横向视图问题

    默认导航栏高度为 64 但更改后 其横向导航栏高度的方向更改为 28 我想设置修复所有方向的导航栏大小 您可以添加方向观察者 NotificationCenter default addObserver self selector sele
  • 在 Swift 中上传带有其他参数的多张图片

    现在 我通过下面给出的代码仅将一张图像上传到服务器端脚本上的服务器 现在我有一个数组UIImage 我想知道如何使用UIImageJPEGRepresentation myImageView image 0 1 将所有图像发布到UIImag
  • Swift - 集成 GameCenter 以使用排行榜

    我正在用 Swift 制作一个游戏 我希望能够使用 GameCenter 发布用户的分数 以便可以看到所有用户的分数 然而 我花了一天的时间试图弄清楚如何做到这一点 但我没有找到任何有用的说明 我对 iOS 编程和 Swift 还很陌生 关
  • 如何以编程方式检查 UILabel 是否具有属性文本或普通文本?

    有什么方法可以判断 UILabel 是否使用其文本设置label attributedText or label text财产 问题是当你设置attributedText text也会更新 反之亦然 因此无法检查这些属性是否为 nil 受
  • Cocoa 应用程序未在 High Sierra 上加载视图或运行代码

    我在 Mac AppStore 上有一个应用程序 许多用户最近写信说它无法在 High Sierra 上运行 可能是 10 13 6 很难从中提取具体信息 我设法在朋友的设备上重现了该问题 但是我无法使用该设备通过 Xcode 等进行构建
  • 如何在 UIButton 中创建边框?

    我在名为 addButton 的应用程序中使用自定义按钮 我想用白色边框它 如何在自定义按钮周围获得白色边框 您可以通过访问按钮的图层属性来设置 CALayer 上的边框属性 首先 添加石英 import
  • IOS - 委托与通知

    想听听您对以下架构的看法 在我的应用程序中 我有一个处理异步登录的静态类 LoginManager 登录阶段完成后 应用程序应该做出响应并转换到另一个状态 我有2条实施建议 使用委托 import Foundation protocol L
  • 迭代 NSDictionary 时保持顺序

    我有一个 NSDictionary 它正在迭代并将数据保存到核心数据 如下所示 NSDictionary details valueDict objectForKey shipment master for NSDictionary res

随机推荐

  • 如何检查使用堆栈安装的软件包版本?

    在我的项目的 cabal 文件中 我有以下内容executable部分 executable ArchPkgstatsScraper hs source dirs app main is Main hs ghc options thread
  • Selenium 启动的 ChromeDriver 在后台保持运行

    I am not able to completely delete a project because the chromedriver instance is running in the background even when th
  • UWP Composition Api 是否支持颜色替换?

    我一直在尝试寻找与颜色替换相关的示例 这是一个使用 Photoshop 的示例 例如 它可以采用蓝色阴影并将其替换为红色阴影 BEFORE AFTER 使用最新版本的 Composition Api 中的 Composition Effec
  • 关于在线HTML5视频系统离线模式的解决方案

    我们有在线网站系统 具有很多功能 例如播放视频等 目的是我们想要为iPad制作具有UIWebView支持的离线模式应用程序 两种选择 使用HTML5清单实现离线模式 here http blog cubeanywhere com 2010
  • JAVA中类的引用大小

    Java中类的引用大小是多少 对于特定的 JVM 和操作系统 它是否恒定 与引用的类无关 Class A Class B Class C A a B b C c 尺寸是a b and c无论大小都相同A B and C课程 是的 所有引用都
  • 使用 ADODB 记录集在 Excel VBA 中查询非常慢的查询以获得先前值

    我在 Access 中有这个查询 它的工作速度非常快并且具有出色的性能 但是 当我想使用 ADODB REORDSET 在 Excel 中使用此查询时 通过复制记录集信息大约需要 15 分钟Range CopyFromRecordset S
  • 使用 NewSequentialID 有什么缺点吗?

    正如问题所述 使用 NewSequentialID 作为表的默认值与 NewID 相比有何缺点 明显的优点是它不会使我们的索引碎片太多 是否担心序列会被最大化 我不认为字段上的默认值真的会成为一个缺点 如果您想在插入某些记录之前控制它们的
  • 如何正确验证 AngularJS 客户端到服务器的身份

    我正在构建一个使用 RESTful API Jersey 的 AngularJS Web 应用程序 在服务器端 我使用 Java 应用程序服务器 具体为 Glassfish 4 我的设置如下 AngularJS webapp 作为单个 wa
  • Xamarin iOS 内存泄漏无处不在

    过去 8 个月我们一直在使用 Xamarin iOS 并开发了一款具有许多屏幕 功能和嵌套控件的不平凡的企业应用程序 我们已经按照 推荐 完成了自己的 MVVM 架构 跨平台 BLL 和 DAL 我们在 Android 之间共享代码 甚至我
  • 我应该使用 while(true) 从 Socket 接收数据吗?

    请参考我之前的问题获取代码示例套接字 有时 很少 数据包在接收过程中丢失 https stackoverflow com questions 9826194 sockets sometimes rarely packets are lost
  • 如何使用 x'abc' 二进制字符串文字语法显示 blob 值?

    您可以使用 x abc 语法轻松输入 blob 值 但是是否也可以以这种方式显示它 如下所示 直接选择或使用连接隐式转换为字符串不起作用 并且显示垃圾 此处为 Windows DOS 提示符 sqlite gt create table b
  • 多重使用块c#

    我正在开发需要访问数据库的应用程序 使用 using 语句很好 因为 using statement is to ensure that the object is always disposed correctly and it does
  • 我想删除所有花芹菜历史/日志,但它不起作用

    我不知道如何删除花的任务相关数据 我需要清除我的 Flower 数据以进行调试 但我不知道该怎么做 我的花和芹菜在泊坞窗上运行 即使我删除了泊坞窗及其相应的卷 我的花和芹菜历史数据中仍然有数据 我的 docker compose 配置 ce
  • 是否可以使用JS检查哪个浏览器支持哪个视频/音频“编解码器”?

    更准确地说 我想检查可以在浏览器中对 HTML5 中的视频 音频元素使用哪些编解码器 例如 Safari 支持 H 264 但我也想知道我可以使用哪些编解码器 由于规范随着时间的推移而变化 我想以某种方式自动完成它 而不是基于浏览器编解码器
  • Python 计算列表长度的方法

    我想知道 len 是如何工作的 每次我调用 len 时 它是否从列表的开头到结尾进行计数 或者 由于 list 也是一个类 len 是否只返回列表对象中记录列表长度的变量 另外 我希望有人能告诉我在哪里可以找到 len map 等内置函数的
  • 查找向量矩阵的最频繁行或众数 - Python / NumPy

    我有一个形状 n 的 numpy 数组 表示 n 维向量的向量 我想找到最频繁的行 到目前为止 最好的方法似乎是迭代所有条目并存储计数 但 numpy 或 scipy 没有内置的东西来执行此任务 这似乎很淫秽 这是一种使用的方法NumPy
  • 我的应用程序启动颠倒

    我已经开发了一段时间并发布了游戏的引擎现在正在颠倒地启动我当前的项目 并立即按预期的方式旋转 UIView 我用代码创建了界面 它的外观如下 BOOL application UIApplication application didFin
  • 按类别列出项目

    我有3张桌子 类别doesnt matter 项目2猫 itemID catID item id name desc 我想列出给定类别中的项目 但我不知道如何以简单的方式做到这一点 使用 PHP 和 MySQL 我需要这个表结构 因为我想要
  • CSS 属性选择器在 href 中不起作用

    我需要使用 css 中的属性选择器来更改不同颜色和图像上的链接 但它不起作用 我有这个html a href manual pdf A PDF File a 还有这个CSS a display block height 25px paddi
  • 多个产品的证书和配置文件组织

    在我的工作场所 我们已经完成了一个 iOS 应用程序的开发 即将开始第二个应用程序的开发 在此之前 我想澄清一些有关证书和配置文件以及构建环境的事情 问题 1 我认为一个 Apple 帐户只能有一个分发证书 因此这将在两个应用程序中使用 这