C# зарегистрировать удаленный объект в консольном приложении с помощью подключения ssl
Мне нужно зарегистрировать удаленный объект в консольном приложении с ssl-соединением (сертификат сервера).
Теперь у меня есть это vb.net
код (консольное приложение) с tcp/ip channel
незащищенный:
Dim Chan As Channels.Tcp.TcpChannel
Dim iChan As Integer = 8888
Try
Chan = New Channels.Tcp.TcpChannel(iChan)
Channels.ChannelServices.RegisterChannel(Chan, False)
Catch ex As Exception
Console.WriteLine(" Error! ")
Console.WriteLine()
Return
End Try
RegisterWellKnownServiceType(Type.GetType(ObjType), ObjUri, ObjMode)
И мне нужно изменить это с Tcp.TcpChannel
в SSL channel
У меня есть этот рабочий пример C# для создания слушателя сервера SSL-соединения.
TcpListener server = new TcpListener(System.Net.IPAddress.Loopback, 4439);
server.Start();
TcpClient client = server.AcceptTcpClient();
SslStream stream = new SslStream(client.GetStream(), false, VerifyClientCertificate, null);
X509Certificate2 certificate = new X509Certificate2(ServerCertificateFile);
stream.AuthenticateAsServer(certificate, true, System.Security.Authentication.SslProtocols.Tls, false);
if (stream.RemoteCertificate != null)
System.Console.WriteLine(stream.RemoteCertificate.Subject);
else
System.Console.WriteLine("No client certificate.");
StreamReader reader = new StreamReader(stream);
StreamWriter writer = new StreamWriter(stream);
bool clientClose = false;
while (!System.Console.KeyAvailable)
{
System.Console.WriteLine("Waiting for data...");
string line = reader.ReadLine();
System.Console.WriteLine("Received: {0}", line);
if (line == "close")
{
clientClose = true;
break;
}
writer.WriteLine(line);
writer.Flush();
}
if (!clientClose) System.Console.ReadKey();
stream.Close();
server.Stop();
}
private static bool VerifyClientCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
switch (sslPolicyErrors)
{
case SslPolicyErrors.RemoteCertificateNameMismatch:
Console.WriteLine("Server name mismatch. End communication ...\n");
return false;
case SslPolicyErrors.RemoteCertificateNotAvailable:
Console.WriteLine("Server's certificate not available. End communication ...\n");
return false;
case SslPolicyErrors.RemoteCertificateChainErrors:
Console.WriteLine("Server's certificate validation failed. End communication ...\n");
return false;
}
Console.WriteLine("Server's authentication succeeded ...\n");
return true;
}
Как я могу изменить этот код так, чтобы я мог делать то, что в данный момент пишет код VB?