Двусторонняя аутентификация, вероятно, означает, что им требуется сертификат клиента. Это означает, что во время рукопожатия клиентская сторона также должна представить сертификат серверу. Наиболее распространенным поведением SSL является то, что только серверная часть представляет сертификат, например, когда вы переходите на обычный сайт, использующий HTTPS.
Что касается SslStream, он довольно прост в использовании. Чтобы иметь возможность представить сертификат клиента, вам необходимо иметь сертификат в хранилище сертификатов или файл pfx, который вы можете загрузить в память во время выполнения.
Я нашел этот образец , который кажется достаточно хорошим. Вот еще один . Второй не использует клиентские сертификаты, но вы можете добавить их в качестве параметра к вызову AuthenticateAsClient.
Если TcpClient отказывается видеть адрес хоста, то это, скорее всего, какая-то проблема с подключением, не связанная с фактической реализацией SSL.