我找到了以下代码: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)。
NSDictionary* query=[NSDictionary dictionaryWithObjectsAndKeys:
(__bridge id)kSecClassCertificate,kSecClass,
kCFBooleanTrue,kSecReturnRef,
kSecMatchLimitAll,kSecMatchLimit,
kCFBooleanTrue,kSecMatchTrustedOnly,
nil];
SecItemCopyMatching((__bridge CFDictionaryRef)query,&ref);发布于 2012-04-08 01:27:47
你会想要这样的东西:
SecItemCopyMatching()查找kSecMatchTrustedOnly设置为kCFBooleanTrue的证书。记住,这将是很多证书,而不仅仅是一个。SecCertificateCopyData()将它们导出为DER格式。另外,你也可以走另一条路:
SecCertificateRef创建SecCertificateCreateWithData()SecPolicyRef创建SecPolicyCreateSSL()SecTrustRef创建SecTrustCreateWithCertificates()SecTrustEvaluate()进行评价当然,您也可以使用NSURLConnection或CFNetwork (直接在C++中可用)管理SSL连接,系统将自动为您完成一切。只要有可能,我建议不要在iOS上使用iOS,因为它会造成很大的复杂性。但是如果你需要的话,上面的这些应该可以帮你搭桥。
发布于 2012-04-06 04:38:19
有几种分发证书的方法。使用电子邮件发送证书作为附件,点击它将启动安装过程.或者使用浏览器-导航Safari到承载您的证书的页面,下载并安装。您还可以使用配置配置文件来简化部署。
在商务iPad中阅读更多关于它的内容,向下滚动到Distributing and Installing Certificates部分。
编辑:证书查找
要查找密钥链项,可以使用SecItemCopyMatching提供kSecClassCertificate和kSecAttrLabel。结帐在密钥链中查找证书中的iOS的证书、密钥和信任服务任务
https://stackoverflow.com/questions/9947664
复制相似问题