Хобрук: Ваш путь к мастерству в программировании

https-соединение Node.js с использованием современного шифра не работает

Я использовал 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?


  • Пожалуйста, укажите свою версию node.js в своем вопросе. 07.02.2016
  • Набор шифров (в основном) не связан с сертификатом, но зависит от конфигурации стека TLS. См. stackoverflow.com/questions/30270788/ 07.02.2016

Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..