Вот Ошибка:
Эта операция допустима только при использовании контекста, подлинность которого успешно подтверждена.
Вот Код Сервера:
using System.Net.Security;
internal static SslStream sslStream;
tcpListener = new TcpListener(IPAddress.Any, 8000);
tcpListener.Start();
TcpClient сlient = tcpListener.AcceptTcpClient();
Stream = client.GetStream();
sslStream = new SslStream(Stream);
string message = Console.ReadLine();
byte[] data = Encoding.Unicode.GetBytes(message);
sslStream.Write(data, 0, data.Length);
Код Клиента:
using System.Net.Security;
internal static SslStream sslStream;
client = new TcpClient();
client.Connect("127.0.0.1", 8000);
stream = client.GetStream();
sslStream = new SslStream(stream);
sslStream.AuthenticateAsClient("127.0.0.1");
string message = userName;
byte[] data = new byte[1024];
sslStream.Read(data, 0, data.Length);
Console.WriteLine(Encoding.Unicode.GetString(data, 0, bytes));
Нельзя просто начать читать/писать с SslStream
, предварительно нужно вызвать один из методов: AuthenticateAsClient
/AuthenticateAsServer
. На стороне сервера вы не вызываете ничего, поэтому получаете ошибку.
Что бы всё работало, вам нужно создать/получить сертификат.
Минимальный рабочий пример:
static void Main(string[] args)
{
var serverThread = new Thread(() =>
{
var server = new TcpListener(IPAddress.Any, 12345);
server.Start();
var client = server.AcceptTcpClient();
var ssl = new SslStream(client.GetStream());
var cert = new X509Certificate2(@"rsa-4096.pfx", "hh87$-Jqo");
ssl.AuthenticateAsServer(cert);
ssl.Write(Encoding.ASCII.GetBytes("Hello world"), 0, 11);
ssl.Flush();
ssl.Close();
server.Stop();
});
var clientThread = new Thread(() =>
{
var client = new TcpClient();
client.Connect(IPAddress.Loopback, 12345);
// последний параметр отключает проверку серверного сертификата
var ssl = new SslStream(client.GetStream(), false, (a, b, c, d) => true);
ssl.AuthenticateAsClient("localhost");
using (var sr = new StreamReader(ssl, Encoding.ASCII))
{
string recivedText = sr.ReadToEnd();
Console.WriteLine(recivedText);
}
});
serverThread.Start();
clientThread.Start();
serverThread.Join();
clientThread.Join();
}
Сертификат для примера: https://github.com/Zergatul/ZergatulLib/blob/master/ConsoleTest/rsa-4096.pfx
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Проблема с потокамиПытаюсь изменить UI часть путем добавления сообщения к textView5
подскажите почему не пишет в консоль что попалвот скрипт ` void Update() {
Всем привет, есть задача, разделить текст на предложения, а их на слова и потом преобразовать всё в нижний регистрИ все условия вроде выполнены,...
Требуется убрать повторяющийся список в самом низу страницы - ссылка: shop