DTLS over UDP op server- en client-componenten

· Functies

Vanaf sgcWebSockets 2022.8.0 wordt DTLS over UDP ondersteund door de UDP-server- en -client-componenten. Dit betekent dat je nu versleutelde berichten kunt versturen via UDP (net zoals WebSocket of het HTTP-protocol die over TLS werken).

Van Wikipedia: Datagram Transport Layer Security (DTLS) is een communicatieprotocol dat beveiliging biedt aan datagram-gebaseerde toepassingen door ze te laten communiceren op een manier die is ontworpen[1][2] om afluisteren, manipulatie of vervalsing van berichten te voorkomen. Het DTLS-protocol is gebaseerd op het stream-georienteerde Transport Layer Security (TLS)-protocol en is bedoeld om vergelijkbare beveiligingsgaranties te bieden.


Configuratie 

De configuratie lijkt erg op die van andere componenten. Er is een nieuwe eigenschap genaamd DTLSOptions waarmee je de DTLS-opties kunt configureren zoals certificaatbestand, privé-sleutel, certificaatverificatie... Om DTLS in te schakelen, zet je de eigenschap DTLS op True voordat de server start of voordat een client een bericht naar de server stuurt.

Het certificaat moet in PEM-formaat zijn, dus als het certificaat een ander formaat heeft, converteer het dan eerst naar PEM.

DTLS vereist openSSL 1.1+, dus de standaard Indy-versie die met RAD Studio meekomt ondersteunt dit momenteel niet. Alleen de sgcWebSockets Enterprise-versie ondersteunt DTLS (omdat deze versie wordt geleverd met een aangepaste Indy-versie die openSSL 1.1 en 3.0 ondersteunt).

Server 

  // ... 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;

Client 

    // ... 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

Hieronder vind je een link naar een DTLS-over-UDP-demo die laat zien hoe het werkt op Windows met de sgcWebSockets-bibliotheek.