Webrtc-security
WebRTC-セキュリティ
この章では、「WebRTCシグナリング」の章で作成したシグナリングサーバーにセキュリティ機能を追加します。 2つの機能強化があります-
- Redisデータベースを使用したユーザー認証
- セキュアソケット接続を有効にする
まず、Redisをインストールする必要があります。
- 最新の安定版リリースをhttp://redis.io/download(私の場合は3.05)からダウンロードします
- それを開梱する
- ダウンロードしたフォルダー内で_sudo make install_を実行します
- インストールが完了したら、_make test_を実行して、すべてが正常に機能しているかどうかを確認します。
Redisには2つの実行可能なコマンドがあります-
- redis-cli -Redisのコマンドラインインターフェイス(クライアント部分)
- redis-server -Redisデータストア
Redisサーバーを実行するには、ターミナルコンソールで_redis-server_と入力します。 次が表示されるはずです-
次に、新しいターミナルウィンドウを開き、_redis-cli_を実行してクライアントアプリケーションを開きます。
基本的に、Redisはキーと値のデータベースです。 文字列値でキーを作成するには、SETコマンドを使用する必要があります。 キー値を読み取るには、GETコマンドを使用する必要があります。 2人のユーザーとパスワードを追加しましょう。 キーはユーザー名になり、これらのキーの値は対応するパスワードになります。
ここで、ユーザー認証を追加するためにシグナリングサーバーを変更する必要があります。 _server.js_ファイルの先頭に次のコードを追加します-
上記のコードでは、Node.js用のRedisライブラリと、サーバー用のredisクライアントの作成が必要です。
認証を追加するには、接続オブジェクトの_message_ハンドラを変更します-
上記のコードでは、ユーザーがログインを試みた場合、Redisからパスワードを取得し、保存されているパスワードと一致するかどうかを確認し、成功した場合はサーバーにユーザー名を保存します。 また、接続に_isAuth_フラグを追加して、ユーザーが認証されているかどうかを確認します。 このコードに注意してください-
認証されていないユーザーがオファーを送信しようとしたり、接続を離れようとした場合、エラーが返されます。
次のステップは、セキュアソケット接続を有効にすることです。 WebRTCアプリケーションに強くお勧めします。 PKI(公開キー基盤)は、CA(認証局)からのデジタル署名です。 次に、ユーザーは、証明書の署名に使用される秘密キーがCAの証明書の公開キーと一致することを確認します。 開発目的のため。 自己署名セキュリティ証明書を使用します。
opensslを使用します。 SSL(Secure Sockets Layer)およびTLS(Transport Layer Security)プロトコルを実装するオープンソースのツールです。 多くの場合、デフォルトでUnixシステムにインストールされます。 _openssl version -a_を実行して、インストールされているかどうかを確認します。
公開および秘密のセキュリティ証明書キーを生成するには、以下に示す手順に従う必要があります-
- 一時サーバーパスワードキーを生成
- サーバー秘密鍵を生成
- 署名要求を生成します。 会社について追加の質問があります。 常に「Enter」ボタンを押すだけです。
- 証明書を生成
これで、証明書(server.crt)と秘密鍵(server.key)の2つのファイルができました。 それらをシグナリングサーバーのルートフォルダにコピーします。
セキュアソケット接続を有効にするには、シグナルサーバーを変更します。
上記のコードでは、プライベートキーと証明書を読み取るために_fs_ライブラリを必要とし、プライベートキーと証明書のバインディングポートとパスを使用して_cfg_オブジェクトを作成します。 次に、ポート9090でキーとWebSocketサーバーを使用してHTTPSサーバーを作成します。
Operaで [[1]] を開きます。 次が表示されるはずです-
[続行]ボタンをクリックします。 「OK」メッセージが表示されます。
安全な信号サーバーをテストするために、「WebRTC Text Demo」チュートリアルで作成したチャットアプリケーションを変更します。 パスワードフィールドを追加するだけです。 以下は_indexl_ファイル全体です-
この行を使用して、_client.js_ファイルでセキュアソケット接続を有効にする必要もあります_var conn = new WebSocket( 'wss://localhost:9090'); _ _wss_プロトコルに注意してください。 次に、ログインボタンハンドラは、ユーザー名とともにパスワードを送信するように変更する必要があります-
以下は_client.js_ファイル全体です-
ここで、_node server_を介して安全なシグナリングサーバーを実行します。 変更されたチャットデモフォルダー内で_node static_を実行します。 2つのブラウザタブで localhost:8080 を開きます。 ログインしてみてください。 「password1」を含む「user1」と「password2」を含む「user2」のみがログインできることを覚えておいてください。 次に、RTCPeerConnectionを確立し(別のユーザーを呼び出す)、メッセージの送信を試みます。
以下は私たちの安全な信号サーバーの全体のコードです-
概要
この章では、シグナリングサーバーにユーザー認証を追加しました。 また、自己署名SSL証明書を作成し、WebRTCアプリケーションの範囲でそれらを使用する方法も学びました。