3

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

但是,我看不到如何获得更细粒度的信息;IE

  1. 检测从未见过的服务器/CA 证书 - 并将接受升级到用户。
  2. 根据狭窄的信任列表验证我连接到的服务器的证书(例如,在以前的连接期间了解的证书)。

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

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

谢谢,

德。

4

1 回答 1

1

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

具体来说,使用

SecTrustCreateWithCertificates

使用您从中获得的证书

CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates);

然后,您可以使用

SecTrustSetAnchorCertificates

最后打电话

SecTrustEvaluate
于 2011-01-23T04:49:06.830 回答