2017-11-13 4 views
-1

OpenSSLを使用してSSL証明書とウェブサイトの鍵を作成しました。私はそれらをサーバ上のフォルダにアップロードしました。サーバーを起動するときにエラーは発生しません。SSLを使用したNode.js Webサイトで「接続が拒否されました」というエラーが表示される

ただし、https://を使用してブラウザでWebサイトを読み込もうとすると、「接続が拒否されました」というエラーが表示されます。

var app = require('../app'); 
    var debug = require('debug')('gameserver:server'); 
    const https = require('https'); 
    const fs = require('fs'); 

    const options = { 
     port: normalizePort(process.env.PORT || '80'), 
     key: fs.readFileSync('../keys/key.key'), 
     cert: fs.readFileSync('../keys/cert.crt') 
    }; 

    var server = https.createServer(options); 
    require('../config/socket')(server); 

    server.listen(port); 
    server.on('error', onError); 
    server.on('listening', onListening); 

    function normalizePort(val) { 
     var port = parseInt(val, 10); 

     if (isNaN(port)) { 
      return val; 
     } 

     if (port >= 0) { 
      return port; 
     } 

     return false; 
    } 

    function onError(error) { 
     if (error.syscall !== 'listen') { 
      throw error; 
     } 

     var bind = typeof port === 'string' 
      ? 'Pipe ' + port 
      : 'Port ' + port; 

     switch (error.code) { 
      case 'EACCES': 
       console.error(bind + ' requires elevated privileges'); 
       process.exit(1); 
       break; 
      case 'EADDRINUSE': 
       console.error(bind + ' is already in use'); 
       process.exit(1); 
       break; 
      default: 
       throw error; 
     } 
    } 

    function onListening() { 
     var addr = server.address(); 
     var bind = typeof addr === 'string' 
      ? 'pipe ' + addr 
      : 'port ' + addr.port; 
     debug('Listening on ' + bind); 
    } 

任意の提案:ここ

コードは、私は、HTTPSサーバを作成するために使用していますか?

+1

ポート443で実行できますか?安全でない証明書を使用してブラウザで処理しますか? – Theo

+0

既に同じ結果を試しました – Bobonik

答えて

0

あなたのキー/証明書は有効ですか?

次のコマンドは、同じ結果が表示されます:

openssl rsa -noout -modulus -in mykey.key | openssl md5 ; openssl x509 -noout -modulus -in mykey.crt | openssl md5 ; 

それともノードの代わりに.PEMを使用し、単に.KEYと.PEMで.CRT CONCAT、唯一の.pemキーファイルを管理します.KEY:

openssl verify -CAfile server.pem server.crt; 
0

私はこの問題を解決するために管理:

cat server.crt server.key > server.pem 

その後、PEMを確認します。実際、ポート443が必要でした。また、createServer関数では、パラメータとしてappを渡すのを忘れていました。実際の例を示します。

var app = require('../app'); 
var debug = require('debug')('gameserver:server'); 
const https = require('https'); 
const fs = require('fs'); 

const options = { 
    port: normalizePort(process.env.PORT || '80'), 
    key: fs.readFileSync('../keys/key.key'), 
    cert: fs.readFileSync('../keys/cert.crt') 
}; 

    var server = https.createServer(options, app).listen(443, function() { 
    console.log("Express server listening on port 443"); 
}); 
require('../config/socket')(server); 

server.listen(port); 
server.on('error', onError); 
server.on('listening', onListening); 

function normalizePort(val) { 
    var port = parseInt(val, 10); 

    if (isNaN(port)) { 
     return val; 
    } 

    if (port >= 0) { 
     return port; 
    } 

    return false; 
} 

function onError(error) { 
    if (error.syscall !== 'listen') { 
     throw error; 
    } 

    var bind = typeof port === 'string' 
     ? 'Pipe ' + port 
     : 'Port ' + port; 

    switch (error.code) { 
     case 'EACCES': 
      console.error(bind + ' requires elevated privileges'); 
      process.exit(1); 
      break; 
     case 'EADDRINUSE': 
      console.error(bind + ' is already in use'); 
      process.exit(1); 
      break; 
     default: 
      throw error; 
    } 
} 

function onListening() { 
    var addr = server.address(); 
    var bind = typeof addr === 'string' 
     ? 'pipe ' + addr 
     : 'port ' + addr.port; 
    debug('Listening on ' + bind); 
} 
+0

また、1024以下のポートで非特権ユーザ(ルートではない)がリスニングソケットを開くことができません。 https://stackoverflow.com/questions/9164915/node-js-eacces-エラー時にほとんどのポートをリッスンする – Theo

+0

そしておそらくあなたは少なくともポート443を示唆するためにコメントをupvoteできますか? – Theo

関連する問題