Главная/Установка/SSL для localhost

SSL для localhost: как включить https на локальном сервере

SSL для localhost нельзя получить у обычного центра сертификации: Let's Encrypt и платные ЦС проверяют домен или публичный адрес, а localhost у каждого компьютера свой. Для разработки сертификат делают сами: утилита mkcert выпускает файл, которому браузер доверяет, а OpenSSL создаёт самоподписанный, на который браузер будет ругаться.

4 мин чтенияДанные проверены 19 октября 2026

Ответ за 30 секунд

Для localhost берите mkcert: две команды дают сертификат, которому доверяет браузер. Самоподписанный сертификат OpenSSL работает, но браузер покажет предупреждение, пока вы не добавите файл в доверенные.

Для сайта на домене бесплатный Let's Encrypt выпускается на каждый домен, платные сертификаты начинаются от 1 000 ₽ за 6 месяцев (Таймвеб, на 19 октября 2026).

Какой способ получить https для localhost выбрать

01 · 1 мин

Нужен ли https на localhost и почему обычный сертификат не выдают#

Центр сертификации выдаёт сертификат тому, кто докажет владение именем: ответит на запрос по домену или управляет его DNS. У имени localhost владельца нет, оно указывает на ваш же компьютер. Поэтому Let's Encrypt и платные центры отвечают отказом.

Для простой разработки https часто не нужен: Chrome и Firefox считают http://localhost защищённым контекстом, и service worker с геолокацией там работают. Локальный https нужен, когда проект зависит от защищённого соединения: cookie с флагом Secure, вход через OAuth с адресом https, HTTP/2, проверка смешанного содержимого, тест с телефона в той же сети.

СпособДоверие браузераКогда подходит
mkcertЕсть, после mkcert -installРазработка на своём компьютере
OpenSSL, самоподписанныйНет, предупреждениеБыстрая проверка, тесты
Настоящий домен на 127.0.0.1Есть, сертификат от Let's EncryptКоманда, общий стенд

02 · 1 мин

Как сделать сертификат для localhost через mkcert#

mkcert создаёт собственный корневой сертификат, добавляет его в хранилища системы и браузеров и выпускает по нему сертификаты для любых имён. Ставится из менеджера пакетов: choco install mkcert или scoop install mkcert на Windows, brew install mkcert на macOS. На Linux для Firefox и Chrome нужен пакет libnss3-tools.

  1. Установите корневой сертификат в доверенные: команда просит подтверждение системы.
  2. Выпустите сертификат на нужные имена: mkcert создаст два файла рядом с текущей папкой.
  3. Подключите файлы к серверу и откройте https://localhost.
mkcert -install
mkcert localhost 127.0.0.1 ::1
# получатся localhost+2.pem и localhost+2-key.pem
// Node.js: https-сервер на порту 8443
const https = require('https');
const fs = require('fs');
https.createServer({
  key: fs.readFileSync('localhost+2-key.pem'),
  cert: fs.readFileSync('localhost+2.pem'),
}, (req, res) => res.end('ok')).listen(8443);

Ключ корневого центра не передавайте

Папку с файлами корневого центра показывает команда mkcert -CAROOT. Файл rootCA-key.pem позволяет выпустить сертификат на любой сайт для всех, кто доверяет вашему корневому: держите его только у себя.

03 · 1 мин

Как создать самоподписанный сертификат localhost через OpenSSL#

Если ставить mkcert нельзя, подойдёт OpenSSL. Важно указать имена в поле subjectAltName: современные браузеры сверяют адрес именно с ним, а поле CN игнорируют. Нужна версия OpenSSL 1.1.1 или новее, в ней есть ключ -addext.

openssl req -x509 -newkey rsa:2048 -nodes -sha256 -days 365 \
  -keyout localhost.key -out localhost.crt \
  -subj "/CN=localhost" \
  -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"

Получится пара: закрытый ключ localhost.key и сертификат localhost.crt. Как устроены такие сертификаты и чем они отличаются от выпущенных центром: самоподписанный сертификат.

04 · 1 мин

Почему браузер ругается на сертификат localhost и как это убрать#

Самоподписанному сертификату браузер не доверяет, потому что его не выдавал известный центр, и показывает ошибку вроде NET::ERR_CERT_AUTHORITY_INVALID. Разбор причин: сертификат не доверен. Предупреждение уйдёт, если добавить файл в хранилище доверенных сертификатов.

# Windows, PowerShell от администратора
certutil -addstore -f "ROOT" localhost.crt

# Debian и Ubuntu
sudo cp localhost.crt /usr/local/share/ca-certificates/localhost.crt
sudo update-ca-certificates

# macOS
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain localhost.crt

Firefox ведёт собственное хранилище, а Chrome на Linux использует базу NSS, поэтому им файл добавляют отдельно в настройках сертификатов. Кто завладеет закрытым ключом доверенного сертификата, сможет подменить сайт, поэтому держите такой ключ только на своём компьютере и не кладите его в репозиторий.

Инструмент · 1 мин

Какой способ получить https для localhost выбрать#

Ответьте на два вопроса: подсказка назовёт способ под вашу ситуацию.

Какой сертификат взять для localhost

Два ответа, и подсказка назовёт способ

Кто будет открывать сайт
Что для вас важнее

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

06 · 1 мин

Вопросы о сертификате для localhost#

Можно ли получить Let's Encrypt для localhost?

Нет, на имя localhost центр сертификации не выдаёт ничего. Обходной путь: настоящий домен, чья A-запись указывает на 127.0.0.1. На него выпускают обычный сертификат, а запросы идут на ваш компьютер. Ключ при этом придётся хранить на каждой машине разработчика.

Нужен ли https на localhost, если Chrome и так считает его безопасным?

Для многих задач нет: service worker и геолокация работают и по http://localhost. Https нужен, когда проверяют cookie с флагом Secure, вход через OAuth, HTTP/2 или открывают сайт с телефона, где localhost уже не защищённый контекст.

Почему Firefox не доверяет сертификату mkcert на localhost?

Firefox хранит доверенные центры у себя. mkcert добавляет корневой сертификат туда, если на компьютере есть утилита certutil (на Linux это пакет libnss3-tools, на macOS пакет nss). Поставьте её, повторите mkcert -install и перезапустите Firefox.

Как открыть локальный https-сайт с телефона?

Телефон должен доверять корню, которым подписан сертификат. Скопируйте rootCA.pem на устройство, установите и включите доверие в настройках сертификатов. Адрес в сертификате должен совпадать с тем, по которому телефон открывает компьютер.

Почему этому можно верить

Как мы проверяли

Документация и провайдерыКоманды выпуска и установки сверены с документацией, дата указана.
Всё можно повторитьКоманды certbot и openssl описаны так, что их повторит любой читатель.
Независимый справочникНе связан с центрами сертификации и честно говорит, когда хватает бесплатного SSL.

Источники цифр на этой странице: SSL-сертификаты Таймвеб, timeweb.com/ru/services/domains/ssl, проверено 19 октября 2026; Let's Encrypt: документация, letsencrypt.org/docs, проверено 19 октября 2026; mkcert: README (установка, имена файлов, rootCA-key.pem, телефоны), github.com/FiloSottile/mkcert, проверено 19 октября 2026.

SBРедакция SSLBase · обновлено 19 октября 2026

Подключите SSL к сайту

От бесплатного Let's Encrypt до платных сертификатов GlobalSign с гарантийной выплатой и установкой под ключ. Любой можно вернуть за 7 дней.

  • Бесплатный Let's Encrypt на домен
  • Платные от 1 000 ₽ за 6 месяцев
  • Wildcard на все поддомены
  • 7 дней на возврат
Выбор