ios - 生成 P12 文件 Xcode?

标签 ios swift xcode security seckeyref

我知道有一个名为 SecPKCS12Import 的函数,它允许您从 p12 文件导入数据。然而,我想走相反的路。我有一个 SecCertificateRef 和一个公共(public)/私有(private) SecKeyRef,我想用它们来创建 P12 文件。有谁知道如何在 iPhone 上执行此操作?

谢谢

最佳答案

不幸的是,CommonCrypto 不提供任何导出 PKCS12 容器的方法,更不用说任何其他导出功能了(尽管它的 OSX 对应项可以做到这一点)。有多种方法可以从 key 链中提取 SecKeyRef 原始数据,但您仍然需要自己编写所有 PKCS12 包装。

我们面临类似的问题并选择了 OpenSSL。

编译适用于 iOS 的 OpenSSL

集成 OpenSSL 需要一些工作,因为您需要自己编译和链接 OpenSSL 源代码。幸运的是,有一些可用的构建脚本,因此您不必自己执行此操作,例如 https://github.com/x2on/OpenSSL-for-iPhone 。我建议你使用它们,因为你需要修补一些 Makefiles,这有点淡漠。这些构建脚本为 iOS 和 tvOS 生成静态链接库。您只需将它们链接到您的项目并相应地设置标题和库搜索路径。

CocoaPods

也可以使用官方OpenSSL CocoaPod 。这省去了您配置项目的麻烦。

导出 PKCS12

如您所知,OpenSSL 是 C library 。这意味着您可能希望将所有 C 函数封装到 Objective-C 或 Swift 包装器中。有一些开源包装器支持 im- 和导出 PKCS12 容器,但我还没有找到一个具有良好文档的开源包装器。不过,您应该能够从某些来源中获取相关片段。

https://github.com/microsec/MscX509Common/blob/master/src/MscPKCS12.m

你也可以看看这个例子http://fm4dd.com/openssl/pkcs12test.htm

希望有帮助!

关于ios - 生成 P12 文件 Xcode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38317727/

相关文章:

iOS 共享扩展在 Chrome 中不起作用

ios - Swift 嵌套类属性

iphone - 应用委托(delegate)对象

iOS 应用程序不会更改为 RTL 语言

ios - "instantiateViewControllerWithIdentifier"加载时间比推送时间

ios - 为什么在 id<NSCopying> 上保留会发出警告?

ios - 我需要在一个单元格和另一个单元格之间留出空间

ios - 从字符串 URL 数组下载图像并保存到文件?

swift - 我的类(class)没有成员属性

iphone - 有没有一种快速方法可以在不启动应用程序的情况下构建并安装到 iPhone(从 Xcode)?