web-dev-qa-db-ja.com

セキュア(TLS / SSL)Websocketサーバーを作成する方法

WS websocket node.jsのライブラリを使用しています。現在、wsサーバーを実行しています。今、私は安全な接続を使用して、つまりWSSプロトコルとライブラリサポートTLS接続を実装することにより、この接続を保護したいと思います。私は少し検索して、これを見つけました 安全であることがわかりました:wss そしてこれ 自己署名証明書付きのwss .

どちらもあまり詳細ではなく、2番目のリンクの記事では、自己署名証明書を使用したwssについて説明しています。自己署名証明書を作成して実稼働環境に展開するだけで十分な場合、またはHTTPSサーバーの作成中に行う必要がある証明書を購入する必要がある場合、知りたいのは何ですか?

36
sahil sethi

あなたの質問#1

セキュア(TLS/SSL)Websocketサーバーを作成する方法は?

セキュリティで保護された接続でWebソケットを機能させる方法についてのガイドをオンラインで検索しているときに、あなたの質問を見つけました。これが検索結果に出てきたので、このページにたどり着いたのは私だけではない可能性があります。すべての人(将来の私を含む)をいくらか救うために、ここに行きます。

問題

einaros/ws を搭載した単純なnode.js websocketサーバーがあり、保護されていない接続でポート80をリッスンしました。安全な接続に切り替える必要がありました。

ソリューション

基本的に、あなたが提供した2番目のリンクは、私が知る必要があるほとんどすべてをカバーしています。ただし、理解するまでに少し時間がかかったことがいくつかあります。

  • このために.pemファイルが必要でしたが、証明書プロバイダーから取得したのは単純な.crt/.certファイルであり、プライベート.keyもありました。最初の.csrリクエストを生成します。 変換方法クレジット から slf ):

    openssl rsa -in server.key -text > private.pem
    openssl x509 -inform PEM -in server.crt > public.pem
    
  • wsがセキュアな接続を使用する方法がわかりませんでした。 SSLを既存のアプリケーションに追加しようとしていたので、やり直さなくて済むようにしたかったのです。判明したのは、{port:80}パラメーターをhttpsインスタンスへの参照に置き換えることだけでした(初期化方法の詳細については、リンクを参照してください)。

    var ws = require('ws').Server;
    var wss = new ws({
        server: httpsServer
    });
    

参照資料

あなたの質問#2

私が知りたいのは、自己署名証明書を作成し、自分のproduction環境、またはHTTPSサーバーの作成中に行う必要がある証明書を購入する必要がありますか?

強調鉱山。はい、信頼できる機関から証明書を購入することをお勧めします。これにより、ユーザーがブラウザのセキュリティ警告を取得したり、何が問題なのかさえ知らずにただ離れたりすることがなくなります。

53
aexl