
تطبيق أصلي بلغة Go لـ DTLS 1.2 و1.3 مع تبادل مفاتيح 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 مؤقت).
يوضح مثال الاستئناف اتصالًا أوليًا موثقًا بشهادة،
وتخزينًا مشفرًا للجلسة، واتصالات لاحقة مع الاستئناف
وبيانات مبكرة اختيارية. راجع ملف README الخاص به للحصول على تعليمات التشغيل ومتطلب
Claim أحادي الاستخدام في مخزن الجلسة لبيانات 0-RTT.
تدعم واجهة State/Resume أيضًا استعادة اتصالات DTLS 1.3
القائمة دون مصافحة جديدة. راجع Resume.
يدعم DTLS 1.3 مفاتيح PSK الخارجية مع psk_ke (PSK فقط) وpsk_dhe_ke
(PSK مع ECDHE مؤقت)، باستخدام SHA-256 أو SHA-384. يمكن للعملاء تقديم هويات
PSK متعددة لكل مصافحة ليختار منها الخادم.
تستخدم أمثلة PSK بروتوكول DTLS 1.3 افتراضيًا، مع TLS_AES_128_GCM_SHA256.
go run examples/listen/psk/main.go
go run examples/dial/psk/main.go
لاستخدام DTLS 1.2 مع TLS_PSK_WITH_AES_128_CCM_8، مرّر -dtls12 إلى كليهما:
go run examples/listen/psk/main.go -dtls12
go run examples/dial/psk/main.go -dtls12
شغّل مثال Pion مع -dtls12 عند استخدام أوامر OpenSSL DTLS 1.2 هذه.
// Use with examples/dial/psk/main.go -dtls12
openssl s_server -dtls1_2 -accept 4444 -nocert -psk abc123 -cipher PSK-AES128-CCM8