sgcWebSockets 2022.8.0 より、サーバーおよびクライアント UDP コンポーネントで DTLS over UDP がサポートされました。これにより、UDP を使用して暗号化されたメッセージを送信できるようになりました(TLS 上で動作する WebSocket や HTTP プロトコルと同様です)。
Wikipedia より: Datagram Transport Layer Security(DTLS)は、データグラムベースのアプリケーションにセキュリティを提供する通信プロトコルです。盗聴、改ざん、メッセージの偽造を防ぐよう設計された方式でアプリケーションが通信できるようにします。DTLS プロトコルはストリーム指向の Transport Layer Security(TLS)プロトコルをベースとしており、同様のセキュリティ保証を提供することを目的としています。
設定
設定は他のコンポーネントと非常によく似ています。DTLSOptions という新しいプロパティで、ファイル証明書、秘密鍵、証明書の検証などの DTLS オプションを設定できます。DTLS を有効にするには、サーバーの起動前またはクライアントからサーバーへのメッセージ送信前に DTLS プロパティを True に設定してください。
証明書は PEM 形式である必要があります。異なる形式の場合は、まず PEM に変換してください。
DTLS は openSSL 1.1 以降を必要とします。そのため、Rad Studio に付属するデフォルトの Indy バージョンは現時点でサポートしていません。DTLS をサポートするのは sgcWebSockets Enterprise バージョンのみです(このバージョンには 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!!!');
デモ
sgcWebSockets ライブラリを使用して Windows 上での動作を示す DTLS over UDP デモへのリンクを以下に掲載します。
