我已经设置了 node.js 的 key ,但我仍然无法让它工作。 谁能告诉我我应该怎么做才能让它正常工作。 我需要使用 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);
});
}
最佳答案
这里有两个问题:
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); // ...
进一步,您在
https.Server
(app
) 实例上调用createServer()
,这不是不正确(您已经创建了一个服务器实例,而实例没有这样的方法)。
关于node.js - 缺少 PFX 或证书 + 私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34377919/