Я бы сделал это с помощью двух различных процессов: небезопасного прокси-сервера и безопасного сервера.
Небезопасный прокси прослушивает порт 80 и отвечает на все запросы с 302 перенаправления на безопасный сервер
небезопасной Proxy
var http = require('http')
var port = 80
var server = http.createServer(function (req, res) {
// change this to your secure sever url
var redirectURL = 'https://www.google.com'
res.writeHead(302, {
Location: redirectURL
});
res.end();
}).listen(port, function() {
console.log('insecure proxy listening on port: ' + port)
})
Secure Server
var https = require('https')
var express = require('express')
var fs = require('fs')
var keyFilePath = '/path/to/key.pem'
var certFilePath = '/path/to/cert.pem'
var app = express()
// put your express app config here
// app.use(...) etc.
var port = 443 // standard https port
var options = {
key: fs.readFileSync(keyFilePath, 'utf8'),
cert: fs.readFileSync(certFilePath, 'utf8')
}
var server = https.createServer(options, app)
server.listen(port, function() {
console.log('secure server listening on port: ' + port)
})
Обратите внимание, что вы могли бы запускать оба этих сервера в рамках одного процесса, но более удобно поддерживать отдельные проблемы в отдельных процессах.
Когда вы используете сертификат GeoTrust, вы также должны добавить свой промежуточный сертификат: 'ca: fs.readFileSync (caFilePath, 'utf8')' тоже. В противном случае ваш SSL не будет проверен. – James