Как мне настроить seneca-web для использования HTTPS / SSL? - PullRequest
0 голосов
/ 07 ноября 2019

Я пишу микросервис Node.JS с Seneca и пытаюсь настроить его на использование https. Я исследовал использование параметров seneca-transport, но когда я пытаюсь подключиться к нему с помощью Postman или браузера, он не работает.

Вот пример, который работает, прослушивание порта 4000, отсутствие https илиssl:

var seneca = Seneca()
seneca.use(Plugin, { secretOrKey: opts.secretOrKey })
seneca.use(Web, config)
seneca.ready(() => {
    var server = seneca.export('web/context')()

    server.listen('4000', (err) => {
        console.log(err || 'server started on: 4000')
    })
})

Вот попытка использовать опции seneca-transport в конфигурации seneca-web-express. Это не работает.

var seneca = Seneca()
seneca.use(Plugin, { secretOrKey: opts.secretOrKey })
seneca.use(Web, config)
seneca.ready(() => {
    var server = seneca.export('web/context')()

    server.listen({
      type: 'http',
      port: '443',
      host: 'foo-host',
      protocol: 'https',
      serverOptions: {
          key: fs.readFileSync('./ssl/foo-host.key.pem'),
          cert: fs.readFileSync('./ssl/foo-host.cert.pem'),
      }
    }, (err) => {
        console.log(err || 'server started on: 443')
    })
})

Наконец, вот попытка использовать seneca-transport более напрямую. Это, по крайней мере, прослушивает порт 443, но не зашифровано и не защищено:

Seneca()
    .use(Plugin, { secretOrKey: opts.secretOrKey })
    .use(Web, config)
    .listen({
        type: 'http',
        port: '443',
        host: 'foo-host',
        protocol: 'https',
        serverOptions: {
            key: fs.readFileSync('./ssl/foo-host.key.pem'),
            cert: fs.readFileSync('./ssl/foo-host.cert.pem')
        }
    })

Надеюсь, этого кода будет достаточно, чтобы люди увидели проблему. Разделить весь микросервис на самом деле невозможно.

...