[Mono-list] SslStream + mono == error
Sebastien Pouliot
sebastien.pouliot at gmail.com
Mon Sep 13 13:48:22 EDT 2010
Simply google "mono ssl" - first link is the mono security faq
Sebastien
Le 2010-09-13 à 13:44, astromag <astromag4 at wp.pl> a écrit :
>
> Hi,
> I wrotea small application (test) of type client - server(Tcp/Ip, SSL).
> Unfortunately it doeas not work under linux (server on Linux - client on M$
> Windows), in M$ Windows it works.
> It turned out, that server stops on method AuthenticateAsServer of class
> SslStream.
>
> Server application:
> namespace ConsoleApplication1
> {
> class Program
> {
> static void Main(string[] args)
> {
> try
> {
> TcpListener listener = new TcpListener(IPAddress.Any, 7777);
> listener.Start();
>
> X509Certificate cert = new
> X509Certificate2("XServerCertificate.pfx", "0987654321");
>
> while (true)
> {
> TcpClient client = listener.AcceptTcpClient();
> SslStream sslStream = new SslStream(client.GetStream());
>
> sslStream.AuthenticateAsServer(cert, false,
> System.Security.Authentication.SslProtocols.Tls, false); // Aplikacja
> zatrzymuje się na działaniu tej metody
> BinaryWriter writer = new BinaryWriter(sslStream,
> System.Text.Encoding.UTF8);
> string s = "Witam :)";
> writer.Write(s);
> writer.Flush();
> sslStream.Flush();
> System.Threading.Thread.Sleep(500);
> writer.Close();
> }
> }
> catch (Exception e)
> {
> Console.WriteLine(e.Message);
> }
> }
> }
> }
>
> Client Application:
> namespace SslClient
> {
> class Program
> {
> static void Main(string[] args)
> {
> TcpClient client = new TcpClient();
> client.Connect(IPAddress.Parse("127.0.0.1"), 7777);
> SslStream sslStream = new SslStream(client.GetStream(), false,
> new RemoteCertificateValidationCallback(Program.CWC));
> X509Certificate cert1 = new X509Certificate2("MyCa.cer");
> X509Certificate cert2 = new
> X509Certificate2("XServerCertificate.cer");
> X509Certificate[] certs = new X509Certificate[2];
> certs[0] = cert1;
> certs[1] = cert2;
> X509CertificateCollection cc = new
> X509CertificateCollection(certs);
>
> sslStream.AuthenticateAsClient("XServerCertificate", cc,
> System.Security.Authentication.SslProtocols.Ssl3, false);
>
> System.IO.BinaryReader reader = new
> System.IO.BinaryReader(sslStream, System.Text.Encoding.UTF8);
>
> Console.WriteLine(reader.ReadString());
> reader.Close();
>
> Console.WriteLine("Koniec");
> Console.ReadKey(false);
>
> }
>
> static bool CWC(object sender, X509Certificate cert, X509Chain
> chain, SslPolicyErrors errors)
> {
> if (errors == SslPolicyErrors.None)
> {
> return true;
> }
> else
> {
> return false;
> }
> }
> }
> }
>
> I assume, that problem lies in interpretation of certificates under Linux (
> I have not problems, with the same certificates under M$ Windows).
>
> So far Google did not bring answer.
>
> Client's code started in mono 2.6.7 threw out an error.
> Unhandled Exception: System.IO.IOException: The authentication or decryption
> has
> failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate
> recei
> ved from server.
> at
> Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCe
> rtificates (Mono.Security.X509.X509CertificateCollection certificates)
> [0x00000]
> in <filename unknown>:0
> at
> Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsT
> ls1 () [0x00000] in <filename unknown>:0
> at
> Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsS
> sl3 () [0x00000] in <filename unknown>:0
> at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process ()
> [0x00000]
> in <filename unknown>:0
> at (wrapper remoting-invoke-with-check)
> Mono.Security.Protocol.Tls.Handshake.H
> andshakeMessage:Process ()
> at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage
> (Mo
> no.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in <filename
> unknown>:0
> at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback
> (IA
> syncResult asyncResult) [0x00000] in <filename unknown>:0
> --- End of inner exception stack trace ---
> at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback
> (IAsyncResu
> lt asyncResult) [0x00000] in <filename unknown>:0
>
> I ask for help.
> --
> View this message in context: http://mono.1490590.n4.nabble.com/SslStream-mono-error-tp2537849p2537849.html
> Sent from the Mono - General mailing list archive at Nabble.com.
> _______________________________________________
> Mono-list maillist - Mono-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
More information about the Mono-list
mailing list