我知道有一个名为 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/