2017-11-20 12 views
0

私は安全なwebsocketプロキシをTCPサービスに対して実行しています。 http.createServer()のオプションとエラーハンドラの引数を:あなたは私たちがすでにhilariously undocumented facilitiesを使用している、見ることができるように実行中のノードhttp.Serverに新しいSSL証明書とキーを注入するにはどうすればよいですか?

var webserver = http.createServer(                   
    {                          
     key: fs.readFileSync(srv.ssl_key),                 
     cert: fs.readFileSync(srv.ssl_cert),                 
    },                          
    function(request, response) {                   
     response.writeHead(404);                    
     response.end();                      
    },                          
    function(err) {                       
     srv.log(err);                      
    }                          
); 

:これは、次のように設定し、標準http.Serverを使用しています。

SSLキーと証明書は、LetsEncrypt certbotによって定期的に再生成されます。これが起こると、新しい鍵と証明書を再生成せずにWebサーバに挿入したい、あるいはWebSocketを再初期化する必要があります。

これ以上の文書化されていない機能が私にこれを可能にしますか?あなたがする必要が

答えて

0

  1. webserver.close()
  2. と現在のウェブサーバを閉じますが、あなたの新しい鍵と証明書を使用して新しいWebサーバインスタンスを作成します(あなたが変更に使うことができると思うかもしれませんそれに.setOptions()方法がありますkeyおよびのオプションがありますが、インスタンス化後に新しいTLSクレデンシャルを生成する方法はありません)
  3. ウェブサーバーをwebsocketServer.mount(websocketOptions)でマウントします。ここで、websocketOptions.httpServerは新しいサーバーインスタンス

これは、実行中の接続を妨げず、うまく動作します。

関連する問題