WebRTC SFU が利用する証明書を動的に生成するようにした

WebRTC では DTLS を利用します。DTLS はデータグラム向け TLS です。WebRTC の DTLS は通信経路の暗号化と、証明書検証に利用します。ちなみに証明書の検証は SDP の a=fingerprint を利用するためDTLS から少し離れています。

Chrome や Firefox は WebRTC 利用時にほぼ毎回証明書を動的に生成しています。たしか30 日間くらい有効な証明書だった気がします。つまり使い捨てな証明書生成です。

基本的には RSA 2048 を利用しています。ただ RTCPeerConnection.generateCertificate() を利用すれば ECDSA を利用したりもできます。

自社製品のWebRTC SFU の証明書は ECDSA なのですが、自社が最初から入っているデフォルトを使うか、OpenSSL を利用して生成して使ってもらうということをしていました。

ただ、本来はブラウザ側同様動的に証明書を生成したいという気持ちがありました。ただ自社製品の開発に利用している Erlang で証明書の動的生成を行う方法がほとんど情報がなく、諦めていました。

しかし、先日 Erlang/OTP のコードをダラダラ眺めていたら、動的な証明書生成ができそうなことがわかりました。

Erlang を利用し、 OpenSSL から生成する証明書とほぼほぼ同一のものが生成できるようになりました。これで自社製品では WebRTC に利用する証明書をセットしたりする必要がなくなりました。

起動時に自動生成し、その後は一定間隔で証明書を動的に生成し更新していく仕組みを導入しました。おかげで証明書の設定が2つ設定項目から減りました。

小さな改善ですが、設定ファイルの設定が減るというのは大きいことです。理想がゼロコンフィギュレーションということもあり、今後も減らしていければと思います。

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store