缺lessPFX或证书+私钥

我已经将键设置为node.js,但仍然无法使其工作。 有人可以告诉我该怎么做,才能正常工作。 我需要使用https和node.js一起工作。 我得到以下错误。

`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)` 

她的我的代码

  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); }); } 

这里有两个问题:

  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. 再往下,你在https.Serverapp )实例上调用createServer() ,这是不正确的(你已经创build了一个服务器实例,实例没有这样的方法)。