功能SecCertificateAddToKeychain()使我为测试创建的证书出错。
证书 - TestCert.p12:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
openssl pkcs12 -export -inkey key.pem -in cert.pem -out TestCert.p12
代码:
NSData *certData = [NSData dataWithContentsOfFile:path];
if (certData) {
SecCertificateRef newCert = SecCertificateCreateWithData (NULL, (CFDataRef)certData);
if (newCert) {
OSStatus addResult = SecCertificateAddToKeychain (newCert, NULL);
if (addResult) {
NSString *errStr = SecCopyErrorMessageString (addResult, NULL);
NSLog (@"Cannot add certificate to keychain: %@", errStr);
}
}
}
输出:无法将证书添加到钥匙串:导入时的格式未知。 有什么想法吗?
答案 0 :(得分:3)
SecCertificateCreateWithData仅针对X.509格式进行了描述,而不是针对PKCS#12。
对于P12,您需要SecPkcs12Import(默认导入默认钥匙串)或SecItemImport(除非您明确指定要导入私钥的钥匙串,否则不会导入私钥 - 例如SecKeychainCopyDefault)。