В этом руководстве вы узнаете, как установить SSL-сертификат на Node.js, используя встроенный модуль https. В отличие от веб-сервера, такого как Apache или Nginx, Node.js загружает ваш сертификат, приватный ключ и цепочку CA непосредственно в JavaScript, поэтому «установка» происходит внутри кода вашего приложения.
Создание кода CSR в Node.js
Если вы еще не подавали заявку на SSL-сертификат, вам сначала нужно сгенерировать CSR (запрос на подпись сертификата). CSR — это небольшой закодированный текстовый блок, содержащий ваши контактные данные и открытый ключ, который вы отправляете в удостоверяющий центр при оформлении заказа. У вас есть два варианта:
- Сгенерировать CSR автоматически с помощью нашего Генератора CSR.
- Следовать нашему пошаговому руководству о том, как создать CSR в Node.js.
Отправьте CSR в удостоверяющий центр при оформлении заказа. После того как CA проверит его и выпустит ваш SSL-сертификат, переходите к установке ниже.
Установка SSL-сертификата на Node.js
Шаг 1: Подготовьте файлы сертификата
После проверки удостоверяющий центр отправит вам файлы сертификата по электронной почте. Распакуйте архив. У вас должны быть:
- yourdomain.crt — ваш основной сертификат домена.
- yourdomain.ca-bundle — промежуточные (и корневой) сертификаты, составляющие CA-пакет.
- yourdomain.key — приватный ключ, сгенерированный вместе с CSR.
Браузеры должны получать промежуточную цепочку, а не только сертификат вашего домена, иначе некоторые клиенты отклонят соединение. Самый чистый способ передать цепочку в Node.js — объединить ваш сертификат и CA-пакет в один файл полной цепочки:
cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt
Разместите файлы fullchain.crt и yourdomain.key там, где ваше приложение может их прочитать, и убедитесь, что приватный ключ доступен для чтения только пользователю, запускающему Node.js.
Шаг 2: Создайте HTTPS-сервер в Node.js
Создайте файл сервера. Для этого примера мы назовем его https_server.js, но вы можете использовать любое имя файла. В примере ниже используется CommonJS (require), который работает во всех поддерживаемых версиях Node.js. Замените пути, выделенные жирным шрифтом, на свои:
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
// Recommended TLS hardening (2026): never negotiate below TLS 1.2
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
Вам нужно заменить выделенные жирным шрифтом части своими данными:
- /path/to/private.key: полный путь к файлу вашего приватного ключа.
- /path/to/fullchain.crt: полный путь к файлу полной цепочки, созданному на Шаге 1.
Примечание о порте: HTTPS по умолчанию использует порт 443. Для привязки к нему требуются повышенные привилегии, поэтому за обратным прокси-сервером или в среде разработки вы можете предпочесть высокий порт, например 8443. Просто измените значение, передаваемое в listen().
Предпочитаете ES-модули? Если ваш проект использует "type": "module" в файле package.json (или файл с расширением .mjs), используйте синтаксис import. Параметры TLS остаются такими же:
import https from 'node:https';
import fs from 'node:fs';
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
Альтернатива: передайте цепочку с помощью параметра ca. Если вы предпочитаете хранить файлы отдельно вместо создания файла полной цепочки, оставьте cert указывающим на сертификат вашего домена и предоставьте промежуточные сертификаты через массив ca:
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/yourdomain.crt'),
ca: [
fs.readFileSync('/path/to/intermediate.crt'),
fs.readFileSync('/path/to/ca_bundle.crt')
],
minVersion: 'TLSv1.2'
};
Используете Express? Передайте ваше приложение Express app в качестве обработчика запросов. Параметры сертификата остаются точно такими же:
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
app.get('/', (req, res) => res.send('Hello over HTTPS'));
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, app).listen(443);
Шаг 3: Запустите ваш HTTPS-сервер Node.js
Выполните следующую команду для запуска приложения:
node https_server.js
Теперь ваше приложение обслуживает трафик по HTTPS. Для промышленного развертывания запускайте его под управлением менеджера процессов (например, PM2 или службы systemd), чтобы оно автоматически перезапускалось и переживало перезагрузки.
Шаг 4: Проверьте установку SSL
Проверьте установку SSL на наличие возможных ошибок или уязвимостей с помощью одного из наших инструментов SSL Checker. Вы также можете подтвердить цепочку через командную строку:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Это выводит издателя сертификата и даты его действия, подтверждая, что ваш сервер Node.js предоставляет правильный сертификат.
Где купить SSL-сертификат для Node.js?
SSL Dragon — это ваш источник для всех потребностей в SSL. Мы предлагаем одни из самых низких цен на рынке по всему ассортименту продуктов SSL и сотрудничаем с лучшими SSL-брендами отрасли для обеспечения надежной безопасности и специализированной поддержки. Все наши SSL-сертификаты полностью совместимы с приложениями Node.js.
Быстрый выпуск, надежное шифрование, доверие 99,99% браузеров, специализированная поддержка и гарантия возврата денег в течение 25 дней.
Часто задаваемые вопросы
Используйте встроенный модуль https. Прочитайте ваш приватный ключ и сертификат полной цепочки с помощью fs.readFileSync(), передайте их как параметры key и cert функции https.createServer() и вызовите .listen(443). Node.js берет на себя рукопожатие TLS; отдельный веб-сервер для настройки не требуется.
Промежуточная цепочка должна передаваться, но для этого не обязательно нужен параметр ca. Самый простой подход — объединить сертификат вашего домена и CA-пакет в один файл полной цепочки и указать на него в параметре cert. Используйте массив ca, только если вы предпочитаете хранить сертификат и промежуточные сертификаты в отдельных файлах.
В Linux и macOS порты ниже 1024 являются привилегированными. Прямая привязка к порту 443 требует повышенных прав, поэтому во многих конфигурациях Node.js запускается на высоком порту, например 8443, за обратным прокси-сервером (Nginx или балансировщиком нагрузки), который завершает или перенаправляет TLS. В среде разработки просто измените значение, передаваемое в listen().
Да. CommonJS (require) работает во всех поддерживаемых версиях Node.js, но если ваш проект настроен как ES-модуль («type»: «module» в файле package.json или файл с расширением .mjs), вы можете вместо этого использовать import https from ‘node:https’. Параметры TLS в обоих случаях одинаковы.
Откройте ваш сайт в браузере и проверьте наличие значка замка, запустите проверку с помощью наших инструментов SSL Checker или выполните запрос из терминала с помощью echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com, чтобы изучить сертификат, предоставляемый сервером.
Итог
Установка SSL-сертификата на Node.js сводится к созданию сертификата полной цепочки, его чтению вместе с приватным ключом с помощью fs.readFileSync(), передаче их в https.createServer() с параметром minVersion: ‘TLSv1.2’ и запуску приложения с помощью команды node https_server.js.
Сначала нужен сертификат? Ознакомьтесь с нашими SSL-сертификатами.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10


