我想获取安装在iPhone或iPad上的证书列表。因此,我可以使用它来挑选一个,并在服务器上用于ssl验证。然而,我不能得到这个列表。我在下面的链接中看到,在iOS中不可能获得证书,因为用户只能访问自己的密钥链。iOS get Configuration Profiles that are installed
然而,我很怀疑:)。
从下面的链接Get Certificates in Keychain,我使用代码来获取证书。然而,我没有得到任何数据。
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));我给搜索列表设置了NSNull null,假设如果keychain ref是NULL,那么设备将采用默认的keychain。
我的问题是1)是否可以从iPhone获取已安装证书的列表。2)如果是这样,是如何实现的?上面的代码有什么问题?
发布于 2013-02-12 23:43:17
我的问题是1)是否可以从iPhone获取已安装证书的列表。
一定。
2)如果是这样,是如何实现的?上面的代码有什么问题?
就我而言,代码很好(如果不是这样,我能想到的唯一问题就是设置NSNull --试着省略它)。您缺少的是使用适当的授权对您的二进制文件进行签名,即:
<key>keychain-access-groups</key>
<array>
<string>*</string>
</array>您可以找到一个示例授权属性列表here -顺便说一句,查看整个项目,它很有趣。
发布于 2013-02-13 07:45:03
请参阅"GenericKeychain“的苹果示例代码-可从”SecItemCopyMatching“文档访问。“在钥匙链中查找证书”文档包括查找命名证书的详细代码-这将基于kSecAttrLabel密钥/值对为您提供一个证书。
https://stackoverflow.com/questions/14776972
复制相似问题