在iOS上查找证书

在iOS上查找证书,ios,certificate,keychain,Ios,Certificate,Keychain,注:这个问题是在2001年提出的。事情变了 我有一个iOS设备需要访问Junos VPN。来自Junos管理员的不透明指令说,我必须检索使用Apple IPCU提供给设备的证书。我知道证书在设备上(我可以在设置中看到),我可以通过邮件、Safari和Junos应用程序访问VPN 苹果文档声明,每个应用程序都有自己的密钥链,但这三个应用程序都可以看到证书。Jusos可以访问IPCU提供的证书这一事实意味着任何应用程序都可以访问该证书。但是,当我试图找到它时: CFTypeRef cer

注:这个问题是在2001年提出的。事情变了

我有一个iOS设备需要访问Junos VPN。来自Junos管理员的不透明指令说,我必须检索使用Apple IPCU提供给设备的证书。我知道证书在设备上(我可以在设置中看到),我可以通过邮件、Safari和Junos应用程序访问VPN

苹果文档声明,每个应用程序都有自己的密钥链,但这三个应用程序都可以看到证书。Jusos可以访问IPCU提供的证书这一事实意味着任何应用程序都可以访问该证书。但是,当我试图找到它时:

    CFTypeRef   certificateRef = NULL;                                                  // will hold a ref to the cert we're trying to retrieve
const char *certLabelString = "myCertificateName";                                      // c string of the certificate we're searching for.
CFStringRef certLabel = CFStringCreateWithCString( NULL, certLabelString, kCFStringEncodingUTF8); // the search we need - a string match for a UTF8 String.

const void *keys[] =   { kSecClass, kSecAttrLabel, kSecReturnRef };
const void *values[] = { kSecClassCertificate, certLabel, kCFBooleanTrue };
CFDictionaryRef dict = CFDictionaryCreate(NULL, keys, values, 3, NULL, NULL);       // set up a search to retrieve this certificate.
OSStatus status = SecItemCopyMatching(dict, &certificateRef);                               // Search the keychain, returning in dict

if(status != errSecSuccess)
    NSLog(@"keychain find returned %ld", status);

if(dict)
    CFRelease(dict);
它失败了。我的问题是:

  • 这个代码正确吗?其实我知道 不是因为
    SecItemCopyMatching
    返回
    errSecItemNotFound

  • 我应该使用什么值
    certLabelString
    -我假设 中显示的人类可读名称 设置

在“设置”中,证书看起来是这样的(令人遗憾的是,它被完全混淆了)。我指定的搜索文本正是“设置”中显示的文本


交叉发布到

,因此答案(在上)是mail.app和Safari.app共享Apple密钥链标识符,这是您可以使用Apple MDM工具将证书推送到的唯一密钥链。为了鼓励苹果做正确的事情,任何其他人都应该这样做。

自2015年年中以来,现在有了
Safari服务框架
(除了
WKWebView
UIWebView
,我们现在有了
SFSafariViewController
SFSafariViewController
能够访问苹果钥匙链,因此可以使用所有身份:)非常好


我需要向钥匙链申请证书,你拿到了吗?。非常感谢你!现在可以在SFSafariViewController(Safari服务框架)中使用ios身份。请注意,此答案可能已经过时。有关此Apple技术说明的更多信息: