Express: OpenSSL error: _tls_common.js:129 c.context.setCert



我想做的是将HTTPS与OpenSSL和HTTPS核心模块一起使用,这是我的代码:

App.js:

const url = config.mongoUrl;
const connect = mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true });
connect.then(db => {
console.log("Connected correctly to server!");
}, err => console.log(err))
var app = express();
app.all('*', (req, res, next) => {
if (req.secure) {
return next();
}
else {
res.redirect(307, 'https://' + req.hostname + ':' + app.get('secPort') + req.url);
}

/bin/www:

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
app.set('secPort', port + 443);
/**
* Create HTTP server.
*/

var options = {
key: fs.readFileSync(__dirname+'/private.key'),
cert: fs.readFileSync(__dirname+'/certificate.pem')
};
var secureServer = https.createServer(options, app);

/**
* Listen on provided port, on all network interfaces.
*/
secureServer.listen(app.get('secPort'), () => {
console.log('Server listening on port ',app.get('secPort'));
});
secureServer.on('error', onError);
secureServer.on('listening', onListening);
});

我在中使用这些命令创建了certificate.pem、private.key和cert.csr/bin:

openssl genrsa 1024 > private.key
openssl req -new -key private.key -out cert.csr
openssl x509 -req -in cert.csr -signkey private.key -out certificate.pem

但当我进行npm启动时,nodemon会给我一个错误:

_tls_common.js:129
c.context.setCert(cert);

我做错什么了吗?

我按照这里的说明进行了操作,但随后还必须添加一个path.join(),如:

const path = require('path');
var httpsOptions = {
key: fs.readFileSync(path.join(__dirname, './https/key.pem')),
cert: fs.readFileSync(path.join(__dirname, './https/cert.pem'))
};

最新更新