如何在iPhone钥匙串中建立SecIdentityRef?(没有.p12)

And*_*rew 12 iphone private key certificate keychain

如果1)您已经在钥匙串中拥有私钥并且2)您刚收到CA的证书,那么如何在iPhone钥匙串中创建SecIdentityRef?

除非有API从私钥和证书创建.p12,否则SecPKCS12Import在这种情况下没有帮助.

SecIdentityCreateWithCertificate将是Mac上的答案,但iPhone上不存在.

是否可以使用SecItemAdd? http://developer.apple.com/library/ios/#documentation/Security/Reference/keychainservices/Reference/reference.html

非常感谢,安德鲁

pmi*_*sev 19

好的,回答我自己的问题:

在iOS上,钥匙串会自动将证书绑定到私钥.这意味着你只需要:

  1. 生成密钥对
  2. 获取与私钥匹配的证书
  3. 将证书插入钥匙串.

在此之后,您应该能够获得证书/私钥的SecIdentityRef.

重要信息: SecItemAdd函数允许您直接插入证书数据(DER表示的NSData).这样您就可以获得有效的证书引用,但不能获得身份引用.插入证书
正确方法是首先在证书的DER字节上使用SecCertificateCreateWithData函数.这将返回一个SecCertificateRef对象,然后该对象应该用于使用SecItemAdd函数将证书保存到钥匙串中.

我希望这会让某人的生活更轻松;-)

问候,Pece

  • 我认为值得补充的是,没有办法使用第三方库(例如 openssl)生成密钥对并将它们添加到钥匙串中而不使用 pkcs12 作为在 SecPKCS12Import() 中使用的中间格式 (3认同)