Berkant KARDUMAN

Teknoloji günlüğü

SSL TCP Client

SSL Stream


Güvenli bir iletişim için SSL şart. Peki SSL sunucuları ile konuşabilecen bir .NET uygulaması nasıl yapılıyor?

Önce client nesnemizi oluşturmalıyız


 var client = new TcpClient(ServerIP, ServerPort);
Bu kod bağlanıtı yapıyor. Ancak iletişim yapabilmek için Authenticate olmamız gerekiyor. işte authenticate için yazılacak kod.
 var sslStream = new SslStream(
                client.GetStream(),
                false,
                new RemoteCertificateValidationCallback(ValidateServerCertificate),
                null
                );

try
            {
                var name = Dns.GetHostName();
                sslStream.AuthenticateAsClient(name);
            }
            catch (AuthenticationException e)
            {
                Console.WriteLine("Exception: {0}", e.Message);
                if (e.InnerException != null)
                {
                    Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
                }
                Console.WriteLine("Authentication failed - closing the connection.");
                client.Close();
                throw;
            }
Burda ValidateServerCertificate isimli methot client tarafında sertifikanın doğrulanması için gerekli fonksiyon. Sizin için önemsiz ise return true; yazarak geçebilirsiniz. Ben öyle yaptım :) Artık mesaj gönderip cevab almayı deneyebiliriz.
        byte[] msg = enc.GetBytes("Hello");
        sslStream.Write(msg);
        sslStream.Flush();

            byte[] buffer = new byte[2048];
            sslStream.ReadTimeout = 6000;
            int bytesReceived = sslStream.Read(buffer,0,buffer.Length);

Loading