iphone - iOS - 管理 SSL 连接上的可信根

标签 iphone ipad ios ssl x509

通过向 kCFStreamPropertySSLSettings 字典添加常用的 kCFStreamSSLValidatesCertificateChain、kCFStreamSSLAllowsAnyRoot 等 - 我可以使服务器和客户端身份验证工作。

但是我看不出如何才能得到更细粒度的;即

  1. 检测从未见过的服务器/CA 证书 - 并将接受度上报给用户。
  2. 根据一个狭窄的信任列表验证我所连接的服务器的证书(例如,在之前的连接中获悉的证书)。

即我正在寻找的是 1) MacOSX 上的 SSLSetTrustedRoots() 之类的东西和 2) kCFStreamErrorDomainSSL 中的错误/域回调之类的东西(例如 errSSLPeerCertUnknown)——在 ipad/iphone 4.2.1 上似乎没有定义/可访问。

或者我错过了什么?或者我需要对回调做一些明确的事情吗?欣赏示例(AdvancedURLConnections 示例不太适用 - 我有一个原始 (IRC) 套接字)。

谢谢,

数据。

最佳答案

将 kCFStreamSSLValidatesCertificateChain 设置为 kBooleanFalse 并使用 API 手动验证证书。

具体来说,使用

SecTrustCreateWithCertificates

通过您获得的证书

CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates);

然后,你可以使用

SecTrustSetAnchorCertificates

最后调用

SecTrustEvaluate

关于iphone - iOS - 管理 SSL 连接上的可信根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4418423/

相关文章:

iphone - ASIHTTPRequest 问题

iphone - 确定 iPhone 设备的型号

ios - 如何使用 UIAlertViewStylePlainTextInput 在 ios 7 中使用 textfieldname.text 和 textfield.placeholder?

iphone - UIView 内存释放

iphone - 如何隐藏 UITableView 标题然后让它重新出现?

iphone - iPhone/iPhone Retina/iPad/iPad Retina 的独立 Storyboard

ios - 如何在 swift 中使用 mvvm 合并两个数据源模型

iphone - iOS-覆盖UITextView方法?

iphone - "_OBJC_CLASS_$_ATReachability",引用自错误

ios - 使用 Mapbox iOS SDK 获取缩放时的 map 大小