2015-12-20 7 views
4

Я установил ключи на node.js, но все же я не могу заставить его работать. Может кто-нибудь сказать мне, что я должен сделать, чтобы он работал правильно. Мне нужно работать с https с node.js. Я получаю следующую ошибку.Отсутствует PFX или сертификат + закрытый ключ

`tls.js:1127 
    throw new Error('Missing PFX or certificate + private key.'); 
     ^
    Error: Missing PFX or certificate + private key. 
    at Server (tls.js:1127:11) 
    at new Server (https.js:35:14) 
    at Object.exports.createServer (https.js:54:10) 
    at Object.<anonymous> (/var/www/html/fusionmate/nodejs/server.js:4:36) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16)` 

Hers мой код

var 
    app   = require('https').createServer(handler), 
    io   = require('socket.io')(app), 
    redis  = require('redis'), 
    fs   = require('fs'), 
    redisClient = redis.createClient(); 


    var options = { 
    key: fs.readFileSync('/etc/apache2/ssl/apache.key'), 
    cert: fs.readFileSync('/etc/apache2/ssl/apache.crt') 
    }; 
     app.createServer(options); 
     app.listen(3000); 

     console.log('Realtime Chat Server running at http://127.0.0.1:3000/'); 

     function handler (req, res) { 
     fs.readFile(__dirname + '/index.html', function(err, data) { 
     if(err) { 
      res.writeHead(500); 
      return res.end('Error loading index.html'); 
     } 
     res.writeHead(200); 
     res.end(data); 
     }); 
     } 

ответ

4

Есть две проблемы:

  1. options должно быть передано в https.createServer() в качестве первого аргумента (с handler является необязательным вторым аргументом) , но вы просто передаете функцию обработчика запросов. Например:

    var fs = require('fs'); 
    var options = { 
        key: fs.readFileSync('/etc/apache2/ssl/apache.key'), 
        cert: fs.readFileSync('/etc/apache2/ssl/apache.crt') 
    }; 
    var app = require('https').createServer(options, handler); 
    // ... 
    
  2. Далее вниз, вы звоните createServer() на https.Server (app), например, что не является правильным (вы уже создали экземпляр сервера и экземпляры не имеют такой метод).

+0

Спасибо. Оно работает. –

Смежные вопросы