14

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

SecPKCS12Import 在这种情况下没有帮助,除非有一个 API 可以从私钥和证书创建 .p12。

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

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

非常感谢,安德鲁

4

1 回答 1

22

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

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

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

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

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

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

问候,佩斯

于 2012-04-09T12:42:58.393 回答