Closed11

WebRTC実装のDTLSにRFC 5746 Renegotiation Indication Extensionを実装する

shinshin

原因はBouncy Castle DTLS がRenegotiation Indication Extensionを必須としてるから

shinshin

sipsorceryというWebRTCスタック実装の作者さんがPionでRenegotiation Indication Extensionを実装したPRのリンクを紹介してくれてたのでそれを参考に実装してみる

https://github.com/pion/dtls/pull/314

shinshin

libwebrtcとだけ疎通すればいいのならOpenSSLと疎通するようにDTLSの実装をすればいいけど、その他の実装と疎通させたい場合はDTLSで互換性の問題が出ることを今回の出来事から学んだ。

というよりはOpenSSLがいろんな実装と疎通できるように頑張ってくれてるだけなんだろうけど....

shinshin

そもそもWebRTCでDTLSの再ネゴシエーションすることなんてあるんだろうか?

shinshin

PionのPRもExtensionしか実装していないから、Bouncy Castle DTLSのバリデーション?をバイパスできればそれで良い説

shinshin

とりあえず実装したものの、Bouncy Castle DTLSからFinished後にEncrypted Alertを返されて謎

shinshin

sipsorceryのDTLSと疎通した。結局、Renegotiation Indication Extensionと関係ないところで詰まってた。

Renegotiation Indication Extension自体はPionのアプローチと同じように単にExtensionを追加するだけでBouncy Castle DTLSの要求を満たせた

このスクラップは2021/02/24にクローズされました