从iOS设备获取证书列表

sri*_*evi 7 macos ssl certificate keychain ios

我想获得iPhone或iPad上安装的证书列表.所以我可以使用它来选择一个并在服务器上用于ssl验证.但是我无法获得此列表.我在下面的链接中看到,在iOS中无法获取证书,因为只能访问自己的钥匙串.iOS获取已安装的配置文件

不过我怀疑:).

从以下链接 获取钥匙串中的证书 我使用代码获取证书.但是我得到的数据是零.

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));
Run Code Online (Sandbox Code Playgroud)

我给搜索列表[NSNull null]假设如果keychain ref为NULL,则设备采用默认的keychain.

我的问题是1)是否可以从iPhone获取已安装证书的列表.2)如果是这样如何?上面的代码有什么问题?

小智 5

我的问题是1)是否可以从iPhone获取已安装证书的列表.

当然.

2)如果是这样如何?上面的代码有什么问题?

该代码是好的,就我而言,(如果没有,我能想到的唯一的问题是设置的是NSNull-您忽略了它).您缺少的是使用适当的权利签署您的二进制文件,即:

<key>keychain-access-groups</key>
<array>
    <string>*</string>
</array>
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到一个示例Entitlements属性列表- 顺便说一下,查看整个项目,这很有趣.