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.
