DTLS over UDP on Server and Client Components

· Funktionen

Ab sgcWebSockets 2022.8.0 wird DTLS über UDP von den Server- und Client-UDP-Komponenten unterstützt. Das bedeutet, dass du nun verschlüsselte Nachrichten über UDP senden kannst (ähnlich wie WebSocket oder HTTP, die über TLS arbeiten).

Aus Wikipedia: Datagram Transport Layer Security (DTLS) ist ein Kommunikationsprotokoll, das Anwendungen auf Datagrammbasis Sicherheit bietet, indem es ihnen eine Kommunikation ermöglicht, die so konzipiert ist[1][2], dass Abhören, Manipulation oder Nachrichtenfälschung verhindert werden. Das DTLS-Protokoll basiert auf dem stream-orientierten Transport Layer Security (TLS)-Protokoll und soll ähnliche Sicherheitsgarantien bieten.


Konfiguration 

Die Konfiguration ist anderen Komponenten sehr ähnlich. Es gibt eine neue Eigenschaft namens DTLSOptions, in der du die DTLS-Optionen wie Zertifikatsdatei, privater Schlüssel, Zertifikatsprüfung... konfigurieren kannst. Um DTLS zu aktivieren, setze einfach die DTLS-Eigenschaft auf True, bevor der Server startet oder bevor eine Nachricht vom Client an den Server gesendet wird.

Das Zertifikat muss im PEM-Format vorliegen. Hat das Zertifikat ein anderes Format, konvertiere es zuerst in PEM.

DTLS erfordert openSSL 1.1+. Daher unterstützt die Standard-Indy-Version, die mit Rad Studio ausgeliefert wird, dies derzeit nicht. Nur die sgcWebSockets Enterprise-Version unterstützt DTLS (da diese Version mit einer benutzerdefinierten Indy-Version ausgeliefert wird, die openSSL 1.1 und 3.0 unterstützt).

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

Unten findest du einen Link zu einer DTLS-über-UDP-Demo, die zeigt, wie es unter Windows mit der sgcWebSockets-Bibliothek funktioniert.