2011-01-12 3 views
1

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

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

+0

Это может быть связано с этим вопросом: http://stackoverflow.com/questions/4755499/kcfstreampropertysocketsecuritylevel-to-kcfstreamsocketsecuritylevelnegotiatedssl –

ответ

1

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

Во-первых, отключить автоматическую оценку доверия с помощью kCFStreamSSLValidatesCertificateChain.

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

+0

Пожалуйста, добавьте ссылку на 'форуме сообщение eskimo1' в вашем ответе. –