
Нативная реализация DTLS 1.2 и 1.3 на Go с обменом ключами ECDHE и PSK, AEAD-шифрами, идентификаторами соединений, возобновлением сессий, 0-RTT и Encrypted Client Hello.
Нативная реализация DTLS 1.2 и DTLS 1.3 на языке программирования Go.
Долгосрочная цель — профессиональный аудит безопасности и, возможно, включение в stdlib.
Pion DTLS поддерживает DTLS 1.2 и DTLS 1.3. Мы приветствуем вклад и исправления ошибок.
psk_ke и psk_dhe_ke, с поддержкой SHA-256 и SHA-384ResumeWithECH (RFC 9849)Conn.AddPath, Path.Probe и Path.SwitchConn.UpdateKeysБиблиотека по умолчанию включает DTLS 1.2 и DTLS 1.3, отдавая предпочтение DTLS 1.3.
Используйте WithMaxVersion(protocol.Version1_2), чтобы ограничить соединение DTLS 1.2,
или WithMinVersion(protocol.Version1_3), чтобы требовать DTLS 1.3.
Для DTLS-сервера, слушающего на 127.0.0.1:4444
go run examples/listen/selfsign/main.go
Для DTLS-клиента, который подключается к 127.0.0.1:4444
go run examples/dial/selfsign/main.go
Pion DTLS может подключаться к самому себе и к 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 поддерживает возобновление сеанса с помощью тикета сеанса с опциональными ранними данными 0-RTT.
Возобновление допускает только psk_dhe_ke (PSK с эфемерным ECDHE).
Пример возобновления демонстрирует первую аутентифицированную
сертификатом связь, шифрованное хранение сеанса и последующие соединения с возобновлением
и опциональными ранними данными. Инструкции по запуску и требование одноразового
Claim в хранилище сеансов для 0-RTT см. в его README.
API State/Resume также поддерживает восстановление установленных соединений DTLS 1.3
без нового рукопожатия. См. Resume.
DTLS 1.3 поддерживает внешние PSK с psk_ke (только PSK) и psk_dhe_ke
(PSK с эфемерным ECDHE), используя SHA-256 или SHA-384. Клиенты могут предлагать несколько
идентичностей PSK за одно рукопожатие, чтобы сервер мог выбрать из них.