mkcert: создание локальных сертификатов для разработки в Linux

22.07.2025
mkcert: создание локальных сертификатов для разработки в Linux

Если вы когда-либо пытались настроить HTTPS локально для разработки, то, скорее всего, столкнулись с трудностями. Создание самоподписанного сертификата, настройка доверия браузера к нему и работа с предупреждениями могут стать настоящей головной болью. Именно здесь на помощь приходит mkcert

mkcert — это простой инструмент, который позволяет разработчикам и системным администраторам создавать локально доверенные SSL-сертификаты для разработки и тестирования. Это избавляет от надоедливых предупреждений в браузере. Да, он бесплатный, с открытым исходным кодом и отлично работает в Linux.

В этой статье мы расскажем вам, что такое mkcert, как он работает, как его установить и как эффективно использовать в среде Linux.

 

Зачем нам нужен локальный HTTPS?

Прежде чем мы перейдём к mkcert, давайте вкратце рассмотрим, зачем вам вообще нужен HTTPS в вашей среде разработки.

  • Современным веб-приложениям нужен HTTPS — для многих API, сервис-воркеров, файлов cookie и функций браузера требуется безопасное соединение. Без HTTPS ваше приложение может вести себя по-разному в режиме разработки и в рабочей среде.
  • Соответствие производственным средам — если в вашей производственной среде используется HTTPS (как и должно быть), разумно тестировать все в одинаковых условиях во время разработки.
  • Совместимость с браузерами и тестирование — ChromeFirefox и другие современные браузеры применяют более строгие политики безопасности в отношении небезопасных источников (HTTP).

 

Но вот в чём загвоздка: браузеры не любят самоподписанные сертификаты и выдают пугающие предупреждения, если сертификат не подписан доверенным центром сертификации (ЦС).

 

Что такое mkcert?

mkcert

 — это инструмент командной строки, который создаёт локальные сертификаты для разработки.

Он делает это с помощью:

  • Создание собственного центра сертификации (ЦС) в вашей системе
  • Как настроить ОС и браузеры на доверие к этому локальному ЦС
  • Создание TLS-сертификатов, подписанных этим центром сертификации, чтобы браузеры им доверяли

 

Проще говоря, mkcert действует как ваш личный центр сертификации (ЦС), и ваш браузер считает сертификаты, которые он генерирует, действительными. Никаких предупреждений, никаких взломов браузера — только чистый, надёжный HTTPS для локальной разработки.

 

Установка mkcert в Linux

Перед установкой mkcert необходимо убедиться, что доступны необходимые системные библиотеки, которые помогают mkcert интегрироваться с хранилищем сертификатов вашей системы, особенно для поддержки Firefox (который использует базу данных NSS).

sudo apt install libnss3-tools -y #на базе Debian
sudo dnf install nss-tools -y #на базе RHEL 
sudo zypper install mozilla-nss-tools #на базе OpenSUSE
sudo pacman -S nss #на базе Arch

 

Далее рассмотрим два основных способа установки mkcert: с помощью менеджера пакетов вашего дистрибутива Linux или путем загрузки бинарного файла вручную. Выберите способ, который подходит для вашей системы.

 

Вариант А: установите mkcert через менеджер пакетов

 
sudo apt install mkcert #на базе Debian
sudo dnf install mkcert #на базе RHEL
sudo zypper install mkcert #на базе OpenSUSE
sudo pacman -S mkcert #на базе Arch

 

Вариант Б: установка вручную (для других дистрибутивов)

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

Сначала скачайте последнюю версию mkcert (https://github.com/FiloSottile/mkcert/releases) с GitHub:

wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64

 

Затем переместите его в каталог PATH в вашей системе и сделайте исполняемым:

sudo mv mkcert-v1.4.4-linux-amd64 /usr/local/bin/mkcert
sudo chmod +x /usr/local/bin/mkcert

 

Наконец, проверьте установку, посмотрев версию:

mkcert --version

 

Если вы видите номер версии, значит, mkcert уже готов к использованию на вашем компьютере с Linux.

 

Доверие к локальному центру сертификации

После установки mkcert следующим шагом будет создание локального центра сертификации (ЦС) и добавление его в список доверенных. Это разовая настройка, которая гарантирует, что любой сертификат, созданный с помощью mkcert, будет автоматически доверен вашей системой и браузером.

Для начала просто введите в терминале следующую команду:

mkcert -install

 

Приведенная выше команда создает новый локальный центр сертификации и сохраняет его в вашем домашнем каталоге по адресу ~/.local/share/mkcert, а затем добавляет этот центр сертификации в хранилище доверенных сертификатов вашей системы Linux, чтобы операционная система распознавала все подписанные им сертификаты как действительные.

Если у вас установлен пакет libnss3-tools (а он должен быть установлен, если вы используете Firefox), mkcert также добавит центр сертификации во внутреннюю базу данных сертификатов Firefox, а это значит, что Firefox будет без проблем доверять вашим сертификатам для разработки.

После выполнения команды вы увидите примерно такой результат:

Created a new local CA at "/home/you/.local/share/mkcert"
The local CA is now installed in the system trust store!

 

Теперь ваша система настроена на доверие к любым TLS/SSL сертификатам, созданным с помощью mkcert, что устраняет обычные предупреждения браузера, которые появляются при использовании самоподписанных сертификатов, и закладывает основу для безопасного и надёжного HTTPS во время локальной разработки.

 

Создание локальных сертификатов с помощью mkcert

А теперь самое интересное: создание локального SSL-сертификата с помощью mkcert. Допустим, вы разрабатываете веб-приложение и хотите, чтобы оно работало по протоколу HTTPS на myapp.local.

Вы можете сгенерировать сертификат для этого домена, просто выполнив следующую команду:

mkcert myapp.local

 

После выполнения mkcert в вашем текущем каталоге будут созданы два файла: myapp.local.pem — сертификат, и myapp.local-key.pem — закрытый ключ.

Эти файлы можно использовать напрямую с локальными веб-серверами, такими как NginxApache, или даже с облегчёнными серверами для разработки, такими как http.server на Python, если они настроены на поддержку SSL.

Если вы работаете с более сложными средами разработки, которые включают в себя несколько доменов, поддоменов или даже доступ к локальному хосту, mkcert позволяет создать сертификат, охватывающий их все, с помощью одной команды.

Например:

mkcert myapp.local "*.myapp.local" localhost 127.0.0.1 ::1

 

Приведенная выше команда генерирует сертификат, действительный для myapp.local, любого поддомена, например api.myapp.local, а также для localhost и его IP-эквивалентов 127.0.0.1 для IPv4 и ::1 для IPv6.

 

Использование mkcert с локальным сервером Nginx

Давайте рассмотрим практический пример использования mkcert для обслуживания локального веб-приложения по протоколу HTTPS с помощью Nginx. Представьте, что у вас есть локальный сервер разработки, работающий по адресу http://localhost:3000, и вы хотите получить к нему безопасный доступ по адресу https://myapp.local.

Сначала вам нужно привязать домен myapp.local к вашему локальному компьютеру. Откройте файл /etc/hosts в любимом текстовом редакторе.

sudo nano /etc/hosts

 

и добавьте следующую строку, которая указывает вашей системе на необходимость преобразования myapp.local в локальный интерфейс обратной связи.

127.0.0.1 myapp.local

 

Затем сгенерируйте сертификат для разработки этого домена с помощью mkcert, в результате чего в вашем текущем каталоге будут созданы два файла: myapp.local.pem (сертификат) и myapp.local-key.pem (закрытый ключ).

mkcert myapp.local

 

Теперь настройте Nginx на использование этих сертификатов. Откройте конфигурацию Nginx (обычно она находится в /etc/nginx/sites-available/ или /etc/nginx/conf.d/) и создайте или обновите блок сервера следующим образом:

server {
 listen 443 ssl;
 server_name myapp.local;

 ssl_certificate /path/to/myapp.local.pem;
 ssl_certificate_key /path/to/myapp.local-key.pem;

 location / {
 proxy_pass http://localhost:3000;
 }
}

 

Обязательно замените /path/to/ на фактический путь к файлам сертификата и ключа, созданным с помощью mkcert.

После настройки конфигурации перезагрузите или перезапустите Nginx, чтобы изменения вступили в силу:

sudo systemctl restart nginx

 

Теперь откройте браузер и перейдите по адресу https://myapp.local. Вы увидите, что ваше приложение работает в безопасном режиме по протоколу HTTPS без предупреждений о сертификате, как в реальной рабочей среде.

 

Примечание по безопасности

Примечание по безопасностиmkcert предназначен исключительно для разработки и тестирования. Сертификаты, созданные с помощью mkcert, ни в коем случае нельзя использовать в производственных средах, так как этот инструмент создаёт локальный центр сертификации (ЦС), который не распознаётся глобальными системами или браузерами.

Кроме того, закрытый ключ этого центра сертификации хранится в виде обычного текста на вашем локальном компьютере, что представляет угрозу безопасности в случае его неправомерного использования. Для любого производственного развертывания всегда используйте надежный центр сертификации, например Let’s Encrypt, чтобы обеспечить надлежащую проверку и соответствие требованиям безопасности.

 

Как удалить mkcert и локальный центр сертификации

Если вам когда-нибудь понадобится очистить систему или полностью удалить mkcert, это несложно. Сначала вы можете удалить локально установленный центр сертификации (ЦС), выполнив команду:

mkcert -удалить

Эта команда удаляет корневой центр сертификации, созданный с помощью mkcert, из хранилища доверенных сертификатов вашей системы, а также из базы данных NSS Firefox (если применимо). Это гарантирует, что любые сертификаты, подписанные mkcert, больше не будут считаться доверенными в ваших браузерах или локальных инструментах.

Если вы установили mkcert вручную (например, загрузив бинарный файл напрямую), вам также следует удалить исполняемый файл из вашей системы.

sudo rm /usr/local/bin/mkcert

 

Это приведёт к удалению двоичного файла mkcert с вашего локального компьютера. После выполнения обеих команд mkcert и его CA будут полностью удалены из вашей системы, не оставив после себя никаких конфигураций доверия.

 

Заключение

Настройка HTTPS для локальной разработки не должна быть сложной. С помощью mkcert разработчики и системные администраторы получают быстрый и надежный способ создания сертификатов, которым можно доверять локально, без предупреждений браузера и без необходимости возиться с OpenSSL или сложными цепочками сертификатов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала