6

訪問iOS開發人員證書有沒有辦法知道哪個證書應用程序已簽名?如何從代碼

我想保護應用程序免於與其他開發人員證書一起辭職。

比方說,我們有客戶端服務器應用程序。並且服務器保持與開發者證書相關聯的唯一密鑰

因此,每次向服務器發送請求時,我們都會傳遞此密鑰,並且如果應用程序將與另一開發人員的證書重新組合,則服務器將知道這一點。

這可能嗎?或者可能有另一種防止辭職的方法?

回答

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開發人員帳戶的憑據,或者某人「訪問」了您的證書和供應配置文件。

如果後者發生,我認爲您應該從蘋果開發者帳戶中撤消該配置文件,並創建一個新的配置文件來解決安全漏洞。這種方式只要你有權訪問開發者賬戶,你總是可以通過這種安全漏洞來踐踏,而不是在客戶端和服務器之間編寫代碼來檢查它。

+0

[https://gist.github.com/RichardBronosky/2878446] – wiruzx

+0

我從來沒有使用過,但我不知道如何才能通過蘋果驗證和提交到商店,假設把它放在商店是目標。我一定有興趣知道這是否可能,或者是否有人親自以這種方式劫持了他們的應用程序。 – foggzilla