Я пишу микросервис 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')
}
})
Надеюсь, этого кода будет достаточно, чтобы люди увидели проблему. Разделить весь микросервис на самом деле невозможно.