У меня есть экземпляр Node, работающий на экземпляре EC2. Я только что получил свой ssl-сертификат, закрытый ключ и пакет ca-bundle. поэтому я поместил их в Nodejs, например:
var options = {
key: fs.readFileSync("/path/to/private/key"),
crt: fs.readFileSync("/path/to/crt"),
ca: fs.readFileSync("/path/to/ca")
}
var server = require("https").createServer(options, app).listen(443)
Но этот метод никогда не работал. Браузер продолжает говорить ERR_SSL_VERSION_OR_CIPHER_MISMATCH. Я подумал, что это должен быть правильный способ запустить https-сервер.
Через несколько часов, не обнаружив ни одной подсказки, я обратился к Nginx. Я запустил Nginx и настроил его конфигурацию на прием ssl через ключевые и crt файлы. Удивительно, но Nginx справился с этим хорошо и успешно передал трафик на мой сервер Node (который теперь прослушивает порт 3000 как порт прокси). Браузеры также получают контент через 443, и при этом горит значок безопасности https.
Так что с ключевыми файлами все в порядке, потому что Nginx использовал эти файлы, чтобы все исправить. Так как же сервер Node мог не включать ssl? Имеет ли это какое-либо отношение к EC2 или AWS в целом?