{G}eekrainian

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

4 мин. чтения

Read in English.

Программирование

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

Установка mkcert

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

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 приложение

Давайте создадим простое 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!. Если вы не наблюдаете никаких предупреждений браузера связанных с сертификатом, то значит мы справились 😉!

Эта история оказалось полезной? 🤔

Поддержите меня чашечкой кофе и станьте спонсором нового контента!

BuyMeACoffee

Ko-Fi

Поделиться

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

В поисках альтернативы Google Sheets в 2024

Обзор ПО для редактирования таблиц онлайн... Читать далее

© geekrainian.com

  • Русский
  • English
RSSКарта сайта