如何通过代码获取iOS开发者证书

问题描述 投票:0回答:2

有没有办法知道应用程序是用哪个证书签名的?

我想保护应用程序免于使用另一个开发者证书退出。

假设我们有客户端-服务器应用程序。服务器保留与开发人员证书关联的唯一密钥

因此,每次向服务器发出请求时,我们都会传递此密钥,如果应用程序将使用另一个开发人员的证书重新组装,那么服务器就会知道这一点。

这可能吗?或者还有其他方法可以避免辞职吗?

ios security iphone-developer-program code-signing-certificate
2个回答
3
投票

您可以通过手动解析应用程序包中包含的

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 的苹果开发者帐户的凭据,或者如果有人“访问”您的证书和配置文件。

如果发生后者,我认为您应该从苹果开发者帐户中撤销该配置文件,并创建一个新的配置文件来解决安全漏洞。这样,只要您有权访问开发人员帐户,您就可以随时以这种方式踩踏此类安全漏洞,而不是在客户端和服务器之间编写代码来检查它。


0
投票

试试这个库,效果很好! https://cocoapods.org/pods/MobileProvision

© www.soinside.com 2019 - 2024. All rights reserved.