4

構成プロファイルが iPhone に存在するかどうかを確認しようとしています。その方法に関する次のチュートリアルを見つけました

私にとって、これは次のコードに変換されます。

NSString * certPath = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"mobileconfig"];
    SecTrustRef trust;
    NSData * certData = [NSData dataWithContentsOfFile:certPath];
    SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) certData);
    SecPolicyRef policy = SecPolicyCreateBasicX509();
    OSStatus err = SecTrustCreateWithCertificates((__bridge CFArrayRef) [NSArray arrayWithObject:(__bridge id)cert],policy, &trust);

    SecTrustResultType  trustResult = -1;
    err = SecTrustEvaluate(trust, &trustResult);


    if (trustResult ==4) {
        label.text=@"Profile installed";
    }
    else{
        label.text=@"Profile not installed";
    }

アプリケーションが次の行でクラッシュします。

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

certまた、この段階ではメモリが割り当てられていないことにも気付きました。

なにが問題ですか?これは正しい手順ですか?そうでない場合、より有益な別のチュートリアルはありますか?

ありがとう!

4

2 に答える 2

0

コードでこれを行う理由がわかりません。すでにこれを行っている Mac OSx アプリがあります。コードを必要としない場合は、このApple リンクからiPhone Configuration Utilityという Mac アプリをダウンロードできます。iPhone にインストールされているプロファイルの構成/表示/etc を含む多くの機能を備えています。

于 2013-03-12T18:30:28.047 に答える
0

私は最近、あなたが抱えているのと同じ問題を解決しました。投稿したコードとリンクからのアドバイスは、実際に構成プロファイルの存在を確認するために使用できます。ヒットした障害は、間違いなく証明書の問題です。

ShiningLight による win32 の openSSL を使用して証明書のペアを作成しました。それを行う方法の完全な手順は、http ://www.dylanbeattie.net/docs/openssl_iis_ssl_howto.html にあります。

ただし、いくつかの落とし穴があることに注意してください。

  1. ルート証明書を作成するときは、構成ファイルの basicconstraints=CA 設定を TRUE に設定する必要があります (他の証明書には FALSE が必要です)。

  2. IO がそれらを読み取れるようにするには、両方の証明書が DER を使用してエンコードされている必要があります。openssl を使用してこれを行うには、 openssl x509 -in certs/cert.cer -out certs/certDER.cer -outform DERのようなコマンドを両方の証明書で実行する必要があります。あなたのコードをクラッシュさせているのは間違ったエンコーディングだと強く思います。

于 2013-12-11T11:25:20.150 に答える