Как включить HTTPS на localhost для Node.js приложения

·2 мин. чтения·

Порой нам бывает нужно проверить некоторые функции нашего веб приложения, которые зависят от HTTPS подключения (например, OAuth). Давайте разберемся как создать и установить поддельный сертификат HTTPS чтобы увидеть в браузере 🔒 "заветный замочек" безопасного подключения.

mkcert - это программа для создания верифицированных, локальных сертификатов для разработки. Программа максимально проста в использовании и не требует конфигурации.

Я рекомендую использовать NPM или Yarn для установки этой программы, но вы также можете загрузить бинарники со страницы релизов на Github страничке проекта.

npm install -g mkcert
  1. Перейдите в папку в которой будут созданы сертификаты, например C:/
  2. Создайте Root сертификат используя команду:
mkcert create-ca
  1. Создайте localhost сертификат используя команду:
mkcert create-cert

В результате выполнения этих команд будет создано несколько файлов: ca.crt, ca.key, cert.crt, cert.key.

Прежде чем мы запустим наше node.js приложение, необходимо корректно установить созданные сертификаты на ваше железо.

Windows 10 распознает *.crt файлы, так что просто нажмите два раза на фаил ca.crt чтобы открыть диалог импорта сертификата:

  1. Нажмите [Установить Сертификат...]
  2. Оставьте опцию "Текущий Пользователь" по-умолчанию и нажмите [Далее]
  3. Выберите "Расположить все сертификаты в указанное хранилище", затем нажмите [Выбрать]
  4. Выберите "Trusted Root Certification Authorities" из списка
  5. Нажмите [Далее] и затем [Завершить]

Этих действий должно быть достаточно чтобы сертификаты начали работать в браузерах Chrome, Edge и IE11.

Если вы планируете работать с Firefox, попробуйте одно из этих решений:

Решение 1:

  • Откройте about:config страницу в Firefox и установите параметр security.enterprise_roots.enabled в значение true

Решение 2:

  • Откройте about:preferences#privacy и перейдите в Сертификаты > Импорт, затем выберите фаил ca.crt и нажмите [Подтвердить]

Давайте создадим простое node.js приложение server.js чтобы проверить работоспособность HTTPS:

const https = require("https");
const fs = require("fs");

const port = 3001;
const options = {
  key: fs.readFileSync("cert.key"),
  cert: fs.readFileSync("cert.crt"),
};

const app = function (req, res) {
  res.writeHead(200);
  res.end("Hello HTTPS!");
};

https.createServer(options, app).listen(port);
console.log(`Server is running on port ${port}`);

Как видим из кода выше, сертификаты импортируются из той же директории, что и фаил server.js. Убедитесь, что вы перенесли сертификаты в папку с файлом кода.

Запустите сервер:

node server.js

Перейдите в браузере на страницу https://localhost:3001 чтобы увидеть Hello HTTPS!. Если вы не наблюдаете никаких предупреждений браузера связанных с сертификатом, то значит мы справились 😉!

Похожие публикации

Создание модальных диалогов в React
Вступление В наши дни трудно представить функциональное веб приложение без... Читать далее
·9 мин. чтения
Переносим Bitbucket репозиторий на GitHub
Некоторое время назад GitHub открыл возможность создавать приватные репозитории... Читать далее
·3 мин. чтения
Описание фаилов клиента Lineage 2
Основные папки SystemГлавная папка. Все настройки по отображению, движению,... Читать далее
·5 мин. чтения

© geekrainian.com