我正在尝试做的是在OpenSSL和HTTPS核心模块中使用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);
});
我在./ cert.csr中使用以下命令创建了certificate.pem、private.key和cert.csr:
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 start时,nodemon给我一个错误:
_tls_common.js:129
c.context.setCert(cert);
我是不是做错了什么?
发布于 2021-07-15 16:32:27
我遵循了here的说明,但随后还必须添加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'))
};
https://stackoverflow.com/questions/63970332
复制相似问题