Логотип

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

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

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

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

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

 

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

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

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

 

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

 

Что такое mkcert?

mkcert

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

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

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

 

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

Читать  Сертифицированные курсы Microsoft: Открывающие новые возможности для карьерного роста

 

Установка 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 будет без проблем доверять вашим сертификатам для разработки.

Читать  Теперь вы можете установить Ubuntu на WSL, используя новый формат на основе Tar

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

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;
 }
}

 

Читать  Как мне преобразовать файл CER в PEM?

Обязательно замените /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 или сложными цепочками сертификатов.

Редактор: AndreyEx

Рейтинг: 4.7 (7 голосов)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

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


Загрузка...

Спасибо!

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

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