Мне нужно открыть сокет-соединение CFStream с сервером с недоверенным корнем CA.У меня есть сертификат сервера, и я могу создать структуру SecCertificateRef
из него.Проблема в том, как настроить свойства потока.
Я думаю, мне следует установить для свойства kCFStreamPropertySSLSettings
значение CFDictionary
, которое, в свою очередь, содержит ключ kCFStreamSSLCertificates
.Этот ключ должен содержать «CFArray of SecCertificateRefs за исключением первого элемента в массиве, который является SecIdentityRef» в соответствии с документацией.Теперь я могу создать SecCertificateRef
из сертификата сервера, который я отправлю с приложением, но как получить SecIdentityRef
?Я предполагаю, что это должен быть идентификатор клиента, но я абсолютно не хочу аутентификацию на стороне клиента на данный момент.И я не могу найти способ подачи CFStream только с сертификатом сервера.
Обратите внимание, я не хочу добавлять ненадежный сертификат в цепочку для ключей и не отключать kCFStreamSSLValidatesCertificateChain в настройках.Мне нужно принять аутентификацию сервера, только если она основана на данных моего сертификата сервера, загруженных с диска, и только на этом CFStream.