将HTTPS服务器从Express迁移到Hapi

时间:2016-07-22 15:20:08

标签: node.js express https hapijs tls1.2

我尝试将HTTPS服务器从Express迁移到Hapi。服务器在Express上正常运行,但是当我尝试在Hapi中运行它时,我收到消息说"服务器选项无效"并且" TLS不被允许"。

这是我的(简化)代码,使用Express:

var fs = require('fs');
var https = require('https');
var app = require('express')();
var options = {
   key: fs.readFileSync('server.key'),
   cert: fs.readFileSync('server.crt')
};

app.get('/', function (req, res) {
   res.send('Hello World!');
});

https.createServer(options, app).listen(8081);

这是我的(简化)代码与Hapi:

var fs = require('fs');
var Hapi = require('hapi');

var options = {
    tls: {
       key: fs.readFileSync('server.key'),
       cert: fs.readFileSync('server.crt')
    }
};
var server = new Hapi.Server(options);

server.connection({ host: 'localhost', port: 8081 });

server.route({
    method: 'GET',
    path: '/', 
    handler: function (request, reply) {
        return reply('Hello world!');
    }
});

server.start();

我使用的是自签名证书,但我想这应该没问题?它在Express中有效。

1 个答案:

答案 0 :(得分:2)

您的代码看起来非常接近。我相信你要做的就是让Hapi使用你的证书和密钥,只需将其转移到server.connection电话,例如:

server.connection({
  host: 'localhost', 
  port: 8081,
  tls: {
    key: fs.readFileSync('server.key'),
    cert: fs.readFileSync('server.crt')
  }
});