SNI (индикация имени сервера) в OS X или iOS — NSURLSession CFNetwork

Мне нужно реализовать SNI (индикация имени сервера) на стороне клиента для iOS и OS X. Я пробовал об этом в Google, но не смог найти ничего полезного (только некоторые инструкции для openSSL). Ничего, связанного с NSURLSession или CFNetwork.

Мне нужно решение при использовании как NSURLSession, так и CFNetwork (CFStreamCreatePairWithSocketToHost - это используется в Socket Rocket).

Поддерживается ли он автоматически фреймворком Apple? Или мне нужно добавить дополнительный код, чтобы обеспечить его соблюдение? А может он вообще не поддерживается?


person Marek R    schedule 06.10.2015    source источник
comment
Если это поддерживается Safari, посмотрите на WebKit, как они это делают. Это совет, а не решение.   -  person Marek H    schedule 06.10.2015
comment
спасибо, это отправная точка. Я также буду использовать wireshark со своим приложением, чтобы узнать, поддерживается ли оно из коробки.   -  person Marek R    schedule 06.10.2015
comment
Я проверил свое приложение с помощью wireshark, и похоже, что SNI всегда активен бесплатно при использовании CFNetwork.   -  person Marek R    schedule 07.10.2015


Ответы (1)


SNI поддерживается на iOS. Если вы укажете значение kCFStreamSSLPeerName в kCFReadStreamPropertySSLSettings вашего CFReadStream, оно будет использоваться в качестве имени сервера во время рукопожатия TLS.

person Antonio    schedule 14.05.2018