MattTheHack, по умолчанию я полагаю, что Express слушает через HTTP-сервер.Здесь вы можете сделать две вещи, первая из которых заключается в развертывании приложения экспресс-узла в качестве HTTPS-сервера, для которого требуются соответствующие ключи.
Что-то вроде следующего:
var express = require('express')
var fs = require('fs')
var https = require('https')
var app = express()
app.get('/', function (req, res) {
res.send('hello world')
})
https.createServer({
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.cert')
}, app)
.listen(3000, function () {
console.log('Example app listening on port 3000! Go to https://localhost:3000/')
})
Это на самом деле не рекомендуется, потому что тогда узел расшифровывает весь HTTPS-трафик.
Рекомендованным решением было бы разместить NGINX или какой-либо другой инструмент маршрутизации на сервере.Затем вы можете рассматривать NGINX как прокси-сервер и разрешить NGINX выполнять расшифровку за вас.Приложение вашего узла все еще может прослушивать порт 3000 как HTTP-сервер, и NGINX просто перенаправляет трафик HTTPS через порт 443 на локальный хост: 3000
nginx.conf
http {
server {
listen 443 ssl;
ssl_certificate "PATH_TO_CERT";
ssl_certificate_key "PATH_TO_CERT_KEY";
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
Я бы определенно рекомендовал второйподход!Удачи!