如何从代码中获取 iOS 开发者证书
Posted
技术标签:
【中文标题】如何从代码中获取 iOS 开发者证书【英文标题】:How to get access to iOS Developer Certificate from code 【发布时间】:2014-03-03 21:50:40 【问题描述】:有没有办法知道使用哪个证书应用程序签名?
我想保护应用免于使用另一个开发者证书退出。
假设我们有客户端-服务器应用程序。服务器保留与开发者证书相关联的唯一密钥。
所以对于服务器的每个请求,我们都会传递这个密钥,如果应用程序将与另一个开发者的证书重新组合,那么服务器就会知道这一点。
这可能吗?或者可能有其他方法可以防止辞职?
【问题讨论】:
【参考方案1】:您可以通过手动解析应用程序包中包含的embedded.mobileprovision
文件中的数据来了解用于签署应用程序的证书和配置文件。如果您查看该文件,您将看到有关证书和配置文件的信息。
以下是如何以编程方式从您的应用中获取嵌入式配置文件数据的示例:
NSString* bundleDirectory = [[NSBundle mainBundle] bundlePath];
NSString* db = [NSString stringWithFormat:@"%@/embedded.mobileprovision", bundleDirectory];
NSData* data = [NSData dataWithContentsOfFile:db];
// parse through the data to get your provisioning profile info. I'd recommend opening up the profile that is inside your .app to see how it is structured.
但是:
我不确定您为什么需要这样做,因为没有人可以重新签署您的应用,除非他们拥有正确的证书来匹配为您的应用捆绑 ID 制作的配置文件。
获得它的唯一方法是拥有拥有捆绑 ID 的 Apple 开发者帐户的凭据,或者如果有人“获得”您的证书和配置文件的访问权限。
如果发生后者,我认为您应该从苹果开发者帐户中撤消该配置文件并创建一个新的配置文件来解决安全漏洞。这样,只要您有权访问开发者帐户,您就可以随时阻止这种安全漏洞,而不是在客户端和服务器之间编写代码来检查它。
【讨论】:
我从未使用过它,但我不确定它如何通过 Apple 的验证和提交到商店,假设将它放在商店是目标。我肯定很想知道这是否可能,或者是否有人以这种方式直接劫持了他们的应用程序。 我找不到“embedded.mobileprovision”。它适用于开发还是仅适用于分发? @foggzilla 通常,它与 Enterprise 或 Ad Hoc 发行版有关。以上是关于如何从代码中获取 iOS 开发者证书的主要内容,如果未能解决你的问题,请参考以下文章