Sunucu ve İstemci Bileşenlerinde UDP üzerinden DTLS

· Özellikler

sgcWebSockets 2022.8.0 sürümünden itibaren DTLS over UDP, Sunucu ve İstemci UDP bileşenleri tarafından desteklenmektedir. Bu, artık UDP kullanarak şifreli mesajlar gönderebileceğiniz anlamına gelir (TLS üzerinden çalışan WebSocket veya HTTP protokolü gibi).

Wikipedia'dan: Datagram Transport Layer Security (DTLS), datagram tabanlı uygulamalara güvenlik sağlayan bir iletişim protokolüdür ve bu uygulamaların gizli dinlemeyi, kurcalamayı veya mesaj sahteciliğini önleyecek şekilde tasarlanmış[1][2] bir biçimde iletişim kurmasına olanak tanır. DTLS protokolü, akış odaklı Transport Layer Security (TLS) protokolüne dayanır ve benzer güvenlik garantileri sağlamayı amaçlar.


Yapılandırma 

Yapılandırma diğer bileşenlere çok benzer. Dosya sertifikası, özel anahtar, sertifika doğrulaması gibi DTLS seçeneklerini yapılandırabileceğiniz DTLSOptions adlı yeni bir özellik vardır. DTLS'yi etkinleştirmek için, sunucu başlamadan önce veya bir istemciden sunucuya mesaj göndermeden önce DTLS özelliğini True olarak ayarlamanız yeterlidir.

Sertifika PEM biçiminde olmalıdır, bu nedenle sertifika farklı bir biçimdeyse önce PEM'e dönüştürün.

DTLS, openSSL 1.1+ gerektirir; bu nedenle RAD Studio ile birlikte gelen varsayılan Indy sürümü şu anda bunu desteklemez. Yalnızca sgcWebSockets Enterprise sürümü DTLS'yi destekler (çünkü bu sürüm, openSSL 1.1 ve 3.0'ı destekleyen özel bir indy sürümüyle gelir).

Sunucu 

  // ... server
  server := TsgcUDPServer.Create(nil);
  server.Port := StrToInt(txtDefaultPort.Text);
  server.Bindings.Clear;
  With server.Bindings.Add do
  begin
    IP := '127.0.0.1';
    Port := 5430;
  end;
  // ... dtls
  server.DTLS := True;
  server.DTLSOptions.CertFile := 'certificate.pem';
  server.DTLSOptions.KeyFile := 'privatekey.pem';
  // ... active
  server.Active := True; 

İstemci 

    // ... client
    client.Host := '127.0.0.1';
    client.Port := 5430;
    client.DTLS := True;
    client.DTLSOptions.CertFile := 'certificate.pem';
    client.DTLSOptions.KeyFile := 'privatekey.pem';
    client.WriteData('Hello from sgcWebSockets!!!'); 

Demo

Aşağıda, sgcWebSockets kütüphanesini kullanarak windows üzerinde nasıl çalıştığını gösteren bir DTLS over UDP demosuna bağlantı bulabilirsiniz.