Я использовал OpenSSL для создания сертификата со следующими шагами:
~/openssl genrsa -out server.key 2048
~/openssl req -new -x509 -key server.key -out server.crt -days 730
А затем загрузил эти файлы в node.js
var https = require('https');
var privateKey = fs.readFileSync('./server.key', 'utf8');
var certificate = fs.readFileSync('./server.crt', 'utf8');
var credentials = {
key: privateKey,
cert: certificate
};
var app = express();
var httpsServer = https.createServer(credentials, app);
Таким образом, мой сервер работал, как и ожидалось. Но в Chrome, когда я нажимаю «Просмотреть информацию о сайте», мне сообщалось, что я использую «устаревший набор шифров». между моим самоподписанным сертификатом и сертификатом Google был алгоритм обмена ключами, который был RSA на моей стороне и ECDHE_ECDSA на стороне Google. Поэтому я решил создать новый сертификат, используя;
~/openssl ecparam -name prime256v1 -genkey -param_enc Expanded -out server.key
~/openssl req -new -x509 -key server.key -out server.crt -days 730
Файлы создаются, и node.js ни о чем не выдает ошибок. Но когда я пытаюсь подключиться к серверу, мой браузер просто закрывает соединение (ERR_CONNECTION_CLOSED) без указания ошибки как на стороне сервера, так и на стороне клиента.
Я пробовал разные закрытые ключи с разными параметрами, но безуспешно. Простое сообщение об ошибке где-нибудь очень помогло бы, но я часами гуглю о том, как создавать современные шифры, пробую их и в итоге ничего не получаю.
Итак, мой вопрос: как мне создать самозаверяющий надежный/современный шифр (с openssl), который может работать с https-модулем Node.js?