
Implementación nativa en Go de DTLS 1.2 y 1.3 con intercambio de claves ECDHE y PSK, cifrados AEAD, IDs de conexión, reanudación de sesión, 0-RTT y Encrypted Client Hello.
Implementación nativa de DTLS 1.2 y DTLS 1.3 en el lenguaje de programación Go.
Un objetivo a largo plazo es una revisión de seguridad profesional, y tal vez una inclusión en la stdlib.
Pion DTLS es compatible con DTLS 1.2 y DTLS 1.3. Damos la bienvenida a contribuciones y correcciones de errores.
psk_ke y psk_dhe_ke, compatible con SHA-256 y SHA-384ResumeWithECH (RFC 9849)Conn.AddPath, Path.Probe y Path.SwitchConn.UpdateKeysLa biblioteca habilita DTLS 1.2 y DTLS 1.3 de forma predeterminada, dando preferencia a DTLS 1.3.
Use WithMaxVersion(protocol.Version1_2) para restringir una conexión a DTLS 1.2,
o WithMinVersion(protocol.Version1_3) para exigir DTLS 1.3.
Para un servidor DTLS que escucha en 127.0.0.1:4444
go run examples/listen/selfsign/main.go
Para un cliente DTLS que se conecta a 127.0.0.1:4444
go run examples/dial/selfsign/main.go
Pion DTLS puede conectarse consigo mismo y con OpenSSL.
// 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 admite la reanudación mediante ticket de sesión con datos tempranos 0-RTT opcionales.
La reanudación solo permite psk_dhe_ke (PSK con ECDHE efímero).
El ejemplo de reanudación demuestra una primera conexión autenticada por certificado,
almacenamiento de sesión cifrado y conexiones posteriores con reanudación
y datos tempranos opcionales. Consulte su README para las instrucciones de ejecución y el requisito
de Claim de un solo uso del almacén de sesiones para 0-RTT.
La API State/Resume también admite la restauración de conexiones DTLS 1.3 establecidas
sin un nuevo handshake. Consulte Resume.