从 sgcWebSockets 2022.8.0 起,服务器和客户端 UDP 组件支持 DTLS over UDP。这意味着您现在可以使用 UDP 发送加密消息(就像基于 TLS 运行的 WebSocket 或 HTTP 协议一样)。
维基百科介绍:数据报传输层安全(DTLS)是一种通信协议,通过允许数据报应用以防窃听、防篡改、防消息伪造的方式通信来为其提供安全保障。DTLS 协议基于面向流的传输层安全(TLS)协议,旨在提供类似的安全保障。
配置
配置方式与其他组件非常相似。新增了一个名为 DTLSOptions 的属性,您可以在此配置 DTLS 选项,例如证书文件、私钥、证书验证等。要启用 DTLS,只需在服务器启动前或客户端向服务器发送消息前将 DTLS 属性设置为 True。
证书必须为 PEM 格式,如果证书为其他格式,请先转换为 PEM。
DTLS 需要 OpenSSL 1.1+,因此 Rad Studio 当前自带的默认 Indy 版本不支持。仅 sgcWebSockets 企业版支持 DTLS(因为该版本附带支持 OpenSSL 1.1 和 3.0 的自定义 Indy 版本)。
服务器
// ... 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.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!!!');
演示
以下链接提供 DTLS over UDP 演示,展示如何在 Windows 上使用 sgcWebSockets 库实现该功能。
