
Native Go-Implementierung von DTLS 1.2 und 1.3 mit ECDHE- und PSK-Schlüsselaustausch, AEAD-Verschlüsselungsverfahren, Verbindungs-IDs, Sitzungswiederaufnahme, 0-RTT und Encrypted Client Hello.
Native DTLS 1.2- und DTLS 1.3-Implementierung in der Programmiersprache Go.
Ein langfristiges Ziel ist eine professionelle Sicherheitsüberprüfung und möglicherweise eine Aufnahme in die Standardbibliothek.
Pion DTLS unterstützt DTLS 1.2 und DTLS 1.3. Wir freuen uns über Beiträge und Fehlerbehebungen.
psk_ke und psk_dhe_ke, mit Unterstützung für SHA-256 und SHA-384ResumeWithECH (RFC 9849)Conn.AddPath, Path.Probe und Path.SwitchConn.UpdateKeysDie Bibliothek aktiviert standardmäßig DTLS 1.2 und DTLS 1.3, wobei DTLS 1.3 bevorzugt wird.
Verwenden Sie WithMaxVersion(protocol.Version1_2), um eine Verbindung auf DTLS 1.2 zu beschränken,
oder WithMinVersion(protocol.Version1_3), um DTLS 1.3 zu erzwingen.
Für einen DTLS-Server, der auf 127.0.0.1:4444 lauscht
go run examples/listen/selfsign/main.go
Für einen DTLS-Client, der sich mit 127.0.0.1:4444 verbindet
go run examples/dial/selfsign/main.go
Pion DTLS kann sich mit sich selbst und mit OpenSSL verbinden.
// Generate a certificate
openssl ecparam -out key.pem -name prime256v1 -genkey
openssl req -new -sha256 -key key.pem -out server.csr
openssl x509 -req -sha256 -days 365 -in server.csr -signkey key.pem -out cert.pem
// Use with examples/dial/selfsign/main.go
openssl s_server -dtls1_2 -cert cert.pem -key key.pem -accept 4444
// Use with examples/listen/selfsign/main.go
openssl s_client -dtls1_2 -connect 127.0.0.1:4444 -debug -cert cert.pem -key key.pem
DTLS 1.3 unterstützt Session-Ticket-Resumption mit optionalen 0-RTT-Early-Data.
Resumption erlaubt nur psk_dhe_ke (PSK mit ephemerem ECDHE).
Das Resumption-Beispiel demonstriert eine zertifikatsauthentifizierte
erste Verbindung, verschlüsselte Session-Speicherung und nachfolgende Verbindungen mit Resumption
und optionalen Early Data. Siehe dessen README für Ausführungsanweisungen und die
Einmalverwendung von Claim im Session-Store für 0-RTT.
Die State/Resume-API unterstützt außerdem das Wiederherstellen etablierter DTLS 1.3-
Verbindungen ohne neuen Handshake. Siehe Resume.