首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在iOS上访问苹果的根证书

在iOS上访问苹果的根证书
EN

Stack Overflow用户
提问于 2012-03-30 17:26:45
回答 2查看 6.8K关注 0票数 5

我找到了以下代码:https://github.com/roddi/ValidateStoreReceipt/blob/master/validatereceipt.m,它在MacOS上加载根证书('Apple‘)

我也在努力让它在iOS上运行。

我们的代码是用C++编写的,在使用SSL套接字时使用OpenSSL来验证远程对等端。

在其他平台上,我们使用X509_STORE_add_cert.加载根证书并将它们添加到上下文中。

然后使用SSL_get_peer_certificate并验证主机名。这些不是自签名证书,这就是为什么我们要使用设备的根证书。

我的问题是如何在iOS设备上获得根证书?

编辑:

我尝试了下面的查询,但是我一直得到-25300 (errSecItemNotFound)。

代码语言:javascript
复制
NSDictionary* query=[NSDictionary dictionaryWithObjectsAndKeys:
                     (__bridge id)kSecClassCertificate,kSecClass,
                     kCFBooleanTrue,kSecReturnRef,
                     kSecMatchLimitAll,kSecMatchLimit,
                     kCFBooleanTrue,kSecMatchTrustedOnly,
                     nil];
SecItemCopyMatching((__bridge CFDictionaryRef)query,&ref);
EN

Stack Overflow用户

回答已采纳

发布于 2012-04-08 01:27:47

你会想要这样的东西:

  • 使用SecItemCopyMatching()查找kSecMatchTrustedOnly设置为kCFBooleanTrue的证书。记住,这将是很多证书,而不仅仅是一个。
  • 然后用SecCertificateCopyData()将它们导出为DER格式。
  • 将它们导入OpenSSL
  • 利润

另外,你也可以走另一条路:

  • 使用OpenSSL将证书转换为DER
  • SecCertificateRef创建SecCertificateCreateWithData()
  • SecPolicyRef创建SecPolicyCreateSSL()
  • SecTrustRef创建SecTrustCreateWithCertificates()
  • SecTrustEvaluate()进行评价
  • 利润

当然,您也可以使用NSURLConnectionCFNetwork (直接在C++中可用)管理SSL连接,系统将自动为您完成一切。只要有可能,我建议不要在iOS上使用iOS,因为它会造成很大的复杂性。但是如果你需要的话,上面的这些应该可以帮你搭桥。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9947664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档