我们使用的多平台应用程序应在 Windows 和 Mac 上运行。我们的应用程序基于 OpenSSL 作为 SSL 和相关内容的供应商。它使用客户端证书建立安全连接并识别最终用户。
我们希望使用Windows和Mac本机证书存储来确保最大的安全性。 Openssl 有一个与 Windows 证书存储交互的引擎(CAPI 引擎)。然而,我们并没有为 Mac 的 Keychain 找到这样的解决方案。
OpenSSL 和 Apple 的 Keychain 之间有集成吗?
如果没有,你有什么建议?
我认为“最简单”的解决方案是为CSSM(CDSA的API,Mac OS X使用的安全架构)编写一个OpenSSL引擎。您应该在 openssl-dev 邮件列表上询问是否有人有兴趣提供帮助(并且可能已经开始)。
为此,您必须向 OpenSSL 提供回调,该回调使用 Mac OS X 安全框架来验证服务器证书。使用 OpenSSL 函数
SSL_CTX_set_cert_verify_callback
设置自定义证书验证回调。您的回调必须将 OpenSSL 证书转换为
SecCertificateRef
,为 SSL 连接创建
SecPolicyRef
,创建
SecTrustRef
并对其进行评估。有关更多详细信息,请参阅证书、密钥和信任服务参考。