我正在构建一个 iPhone 应用程序,需要使用客户端证书通过 https 访问 Web 服务。如果我将客户端证书(pkcs12 格式)放入应用程序包中,我就可以将其加载到应用程序中并进行 https 调用(很大程度上要感谢 stackoverflow.com)。
但是,我需要一种无需任何证书即可分发应用程序的方法,并将其留给用户提供自己的证书。我想我只需指示用户在 iphone 的配置文件中导入证书(设置->常规->配置文件)即可做到这一点,这是通过在 Mail.app 中打开 .p12 文件获得的,然后我将访问该项目在我的应用程序中。我希望配置文件中的证书可以通过钥匙串 API 获得,但我想我错了。
1) 有没有办法访问我已经在我的应用程序的 iPhone 配置文件中加载的证书?
2) 在我的应用程序中加载用户指定的证书还有哪些其他选项?我唯一能想到的就是提供一些界面,用户可以在其中提供他的 .p12 证书的 URL,然后我可以将其加载到应用程序的钥匙串中以供以后使用,但这并不完全是用户友好的。我正在寻找允许用户将证书放在手机上(通过电子邮件发送给自己)然后将其加载到我的应用程序中的东西。
我尝试过这个:
NSString *thePath = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"p12"];
NSData *PKCS12Data = [[NSData alloc] initWithContentsOfFile:thePath];
CFDataRef inPKCS12Data = (CFDataRef)PKCS12Data;
CFStringRef password = CFSTR("pass");
const void *keys[] = { kSecImportExportPassphrase };
const void *values[] = { password };
CFDictionaryRef optionsDictionary = CFDictionaryCreate(NULL, keys, values, 1, NULL, NULL);
CFArrayRef items = CFArrayCreate(NULL, 0, 0, NULL);
SecPKCS12Import(inPKCS12Data, optionsDictionary, &items);
在PKCS12数据是正确的,但项目是空的。怎么了?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)