7

iPhone または iPad にインストールされている証明書の一覧を取得したい。そのため、それを使用して 1 つを選択し、サーバーでの SSL 検証に使用できます。ただし、このリストを取得できません。この次のリンクで、自分のキーチェーンにしかアクセスできないため、iOS では証明書を取得できないことがわかりました。iOS は、インストールされている構成プロファイルを取得します

しかし、私は疑います:)。

以下のリンクから キーチェーンで証明書 を取得する 私はコードを使用して証明書を取得しています。しかし、私は nil データを取得しています。

NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
                           (__bridge id)(kSecClassCertificate), kSecClass,
                           [NSNull null], kSecMatchSearchList,
                           kCFBooleanTrue, kSecReturnRef,
                           kSecMatchLimitAll, kSecMatchLimit,
                           nil];
    CFDataRef *items = nil;
    OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, ((CFTypeRef *)&items));

キーチェーン ref が NULL の場合、デバイスはデフォルトのキーチェーンを取得するという前提で、検索リストに [NSNull null] を指定しています。

私の質問は 1) iPhone からインストールされた証明書のリストを取得することは可能ですか。2) もしそうなら、どのように?上記のコードで何が間違っていますか?

4

2 に答える 2

5

私の質問は 1) iPhone からインストールされた証明書のリストを取得することは可能ですか。

絶対。

2) もしそうなら、どのように?上記のコードで何が間違っていますか?

私に関する限り、コードは問題ありません(そうでない場合、私が考えることができる唯一の問題はそれを設定することですNSNull-それを省略してみてください)。あなたが欠けているのは、適切な資格でバイナリに署名することです。つまり、次のとおりです。

<key>keychain-access-groups</key>
<array>
    <string>*</string>
</array>

Entitlements プロパティ リストの例をここで見つけることができます。ちなみに、このプロジェクト全体をチェックしてみてください。興味深い内容です。

于 2013-02-12T15:43:16.500 に答える