Как мы можем сказать CFStream использовать набор сертификатов привязки? - PullRequest
1 голос
/ 12 января 2011

Я знаю, что мы можем использовать SecTrustSetAnchorCertificates (), учитывая SecTrustRef. Но с CFStreams мы можем получить объект доверия только после рукопожатия. Похоже, что одним из обходных путей является отключение проверки цепочки сертификатов на CFStream с использованием свойства kCFStreamSSLValidatesCertificateChain, а затем получение сертификатов одноранговых узлов с использованием kCFStreamPropertySSLPeerCertificates, создание доверия из этих сертификатов и оценка доверия сами.

Но было бы намного чище, если бы мы просто указали CFStream использовать массив сертификатов в качестве якоря. Надеюсь ли я на слишком много?

1 Ответ

1 голос
/ 04 апреля 2012

eskimo1 от Apple Devforums ответил на это так:

Сначала отключите автоматическую оценку доверия, используя kCFStreamSSLValidatesCertificateChain.

Во-вторых, как только поток запущен и работает (я обычно делаю это в своей обработке сообщений «могу принимать байты» или «есть байты доступны»), получите объект SecTrust из потока с помощью kCFStreamPropertySSLPeerTrust и оцените это доверие для себя. Если оценка доверия не удалась, прервите поток.

...