Как мы можем сказать CFStream использовать набор якорных сертификатов?
Вопрос
Я знаю, что мы можем использовать SecTrustSetAnchorCertificates () с учетом секундера. Но с CFStreams мы можем получить объект доверия только после того, как ручная встряха. Один обходной путь, по -видимому, заключается в том, чтобы отключить проверку цепочки сертификатов на CFStream, используя свойство KCFStreamSslValidatesCertificateChain, а затем получить сертификаты одноранговых однозначных с использованием KCFStreamPropertySslpeerCertificates, создать доверие из этих сертификатов и оценить доверие сами.
Но было бы намного чище, если бы мы могли бы просто сказать CFStream использовать массив CERT в качестве якоря. Я надеюсь на слишком много?
Решение
Eskimo1 из Apple Devorums ответил на это:
Во -первых, отключить автоматическую оценку доверия с использованием kcfstreamsslvalidatescertificatechain.
Во -вторых, после того, как поток запущен и работает (я обычно делаю это в моем «может принять байты» или «иметь доступные байты»), получите объект SecTrust из потока, используя KCFStreamPropertySslpeerTrust и оцените это доверие для себя. Если оценка доверия не удается, снести поток.