Closed11

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

経緯
typescript製のNode.js用WebRTCのプロトコルスタックを実装している

現在、他のWebRTCスタック実装者さんたちと相互接続試験をすすめており、Bouncy Castle DTLSというライブラリを使用しているWebRTC実装とDTLSが疎通しない問題が発覚した。

https://github.com/sipsorcery/webrtc-echoes/issues/11#issuecomment-782823258

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

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

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

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

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

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

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

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

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

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

このスクラップは2021/02/23にクローズされました
ログインするとコメントできます