簡體   English   中英

檢查iOS上是否安裝了mobileconfig配置文件

[英]Check if a mobileconfig profile is installed on iOS

在iPhone桌面安裝mobileconfig文件( 在iPhone上以編程方式安裝配置文件 )。

如何檢查是否安裝了此配置文件?

在iPhone Settings->General->provision file ,我可以找到列表。

我遇到了以下方法來確定是否安裝了移動配置 ,但到目前為止我還沒有測試過。

沒有可用的直接API。但是有一種解決方法可以通過證書信任驗證來實現。

如果我們使用移動配置附加自簽名信任ca並將其安裝在設備上,我們可以通過檢查由自簽名根ca簽名的葉證書的信任級別來檢查是否安裝了移動配置。也就是說,如果應用程序中葉證書的信任驗證失敗,則表示未安裝或未安裝移動配置

腳步:

  • 創建自簽名根CA您可以使用證書助理或終端中的openssl來完成。

  • 創建另一個證書 ,並得到其簽名使用自簽名根CA

  • 將上一步中創建的簽名證書附加到xcode

  • 自簽名根CA附加為Mobile Config的一部分

    • 在IPCU中打開您的移動配置

    • 向下滾動到憑據

    • 按右側的“ 配置

    • 選擇自簽名根CA (確保其以.cer格式)

      IPCU

    • 立即導出Mobile Config並使用全球可信CA(如GoDaddy)進行簽名。此步驟是可選的,如果完成,設備將顯示已驗證的移動配置,否則在安裝移動配置時將顯示為未驗證


代碼片段:

-(BOOL)IsMobileConfigInstalled {

NSString* certPath = [[NSBundle mainBundle] pathForResource:@"LeafCertificate" ofType:@"cer"];

NSData* certData = [NSData dataWithContentsOfFile:certPath];

SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) certData);

SecPolicyRef policy = SecPolicyCreateBasicX509();

SecTrustRef trust;

OSStatus err = SecTrustCreateWithCertificates((__bridge CFArrayRef) [NSArray arrayWithObject:(__bridge id)cert], policy, &trust);

SecTrustResultType trustResult = -1;

err = SecTrustEvaluate(trust, &trustResult);

CFRelease(trust);

CFRelease(policy);

CFRelease(cert);

if(trustResult == kSecTrustResultUnspecified)
    return YES;
else
    return NO;
}

參考文獻:

以下是蘋果開發人員論壇中圍繞該主題的技術討論的鏈接

這是指向您的博客文章的鏈接

以下是有關此主題Ref1Ref22的堆棧溢出討論的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM