我们如何告诉 CFStream 使用一组锚证书?

发布于 2024-10-11 18:42:23 字数 291 浏览 2 评论 0原文

我知道我们可以使用 SecTrustSetAnchorCertificates() 给定 SecTrustRef。但使用CFStreams,我们只有在握手后才能获得信任对象。一种解决方法似乎是使用 kCFStreamSSLValidatesCertificateChain 属性禁用 CFStream 上的证书链验证,然后使用 kCFStreamPropertySSLPeerCertificates 获取对等证书,从这些证书创建信任并自行评估信任。

但如果我们可以告诉 CFStream 使用一组证书作为锚点,那么事情会干净很多。我是不是希望太多了?

I know we can use SecTrustSetAnchorCertificates() given a SecTrustRef. But with CFStreams, we can get the trust object only after the hand shake. One workaround seems to be to disable certificate chain verification on the CFStream using the kCFStreamSSLValidatesCertificateChain property and then get the peer certificates using kCFStreamPropertySSLPeerCertificates, create a trust from those certificates and evaluate the trust ourselves.

But it would be a lot cleaner if we could just tell CFStream to use an array of certs as anchor. Am I hoping for too much?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

π浅易 2024-10-18 18:42:23

Apple Devforums 的 eskimo1 如此回答:

首先,使用 kCFStreamSSLValidatesCertificateChain 禁用自动信任评估。

其次,一旦流启动并运行(我通常在“可以接受字节”或“有可用字节”消息处理中执行此操作),使用 kCFStreamPropertySSLPeerTrust 从流中获取 SecTrust 对象并自行评估该信任。如果信任评估失败,则拆除该流。

eskimo1 from Apple Devforums answered this so:

First, disable automatic trust evaluation using kCFStreamSSLValidatesCertificateChain.

Second, once the stream is up and running (I typically do this in my 'can accept bytes' or 'has bytes available' message handling), get the SecTrust object from the stream using kCFStreamPropertySSLPeerTrust and evaluate that trust for yourself. If the trust evaluation fails, tear down the stream.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文