当使用未包含在配置文件中的证书签名时,应用程序仍然可以安装吗?

Posted

技术标签:

【中文标题】当使用未包含在配置文件中的证书签名时,应用程序仍然可以安装吗?【英文标题】:When signed with a certificate which is not included in the provisioning profile, still app is able to install how? 【发布时间】:2017-05-10 06:08:51 【问题描述】:

当使用未包含在配置文件中的证书进行签名时,应用仍然能够在设备上成功安装,如何?

我有两个通配符签名身份 一种 乙

我使用签名身份 A 创建了配置文件

现在我从命令行使用相同的配置文件将其与 B 签约。

应用安装成功,如何?

【问题讨论】:

首先,如果不在配置文件中包含证书,就无法在您的设备上安装应用程序。可能是您为您创建的 xcode 证书。 因为您使用的是通配符签名身份,如果配置文件中包含该通配符签名身份,则有可能在设备上安装 @SivajeeBattina 它不是来自 Xcode 而是来自命令行 我创建了一个配置文件,其中我故意包含了一些其他通配符签名身份 我应该在设备日志中遇到什么错误? @SivajeeBattina 从技术上讲,您不需要在应用程序中包含配置文件。 ios 唯一关心的是设备上是否存在该签名身份的有效配置文件。通常,这是通过将配置文件与应用程序打包到 embedded.mobileprovision 文件中作为捆绑包的一部分来完成的。但是,还有其他方法可以在设备上获取有效的配置文件,例如以前的安装(尤其是在使用通配符 id 时),或者让 MDM 将配置文件推送到受管设备。 【参考方案1】:

您需要了解,要在 iOS 设备上运行应用程序,您只需要一个有效的配置文件。

您有两个通配符配置文件,因此从技术上讲,两者都可以工作。但是,您声明您的配置文件是使用签名身份 A 创建的。首先,确认您的配置文件仅选择了身份 A 的证书。从技术上讲,一个配置文件可以对多个证书有效。

如果您确认您的个人资料没有与用于签署身份的证书相关联,这意味着如果您使用身份 B 签署了应用程序,则该个人资料应该无效,另一个可能的原因是您已经安装了该应用程序(或其他一些应用程序)使用配置文件和签名身份 A。如果是这种情况,则设备上有一个有效的配置文件,表明您的应用程序应该被允许运行。我在this post 中发布了有关与应用程序打包的配置文件可能无效/过期等情况的更多详细信息,但应用程序仍将在设备上运行。

如果您希望使用代码签名/配置文件来阻止应用成功安装,那么您的配置文件中应该有一个专用的、明确的捆绑 ID,以及一个专门用于该应用 ID 的证书。然后,当您需要阻止应用程序在设备上运行时,您可以使配置文件过期并撤销证书。

编辑:要检查这是否是由于现有的配置文件,打开 Xcode,转到Window->Devices 右键单击​​有问题的设备并选择“配置文件”,如下所示:

如果您想试用,可以从设备中删除所有配置文件并尝试重新安装。如果您真的只有一个配置文件被配置为接受签名身份 A,并且您使用签名身份 B 对二进制文件进行签名,那么它应该不起作用。

【讨论】:

以上是关于当使用未包含在配置文件中的证书签名时,应用程序仍然可以安装吗?的主要内容,如果未能解决你的问题,请参考以下文章

未找到签名证书“​​iOS Distribution”

应用程序必须包含配置文件/配置文件不包含选定的签名证书

应用程序失败的协同设计验证警告

当 pdf 由假名证书进行数字签名时,签名信息未正确显示

Ad-Hoc 分布式应用程序未安装在设备上

了解 iOS 中的 Provisioning 配置文件和证书