Predvoditelev.RU
Заметки

mkcert — доверенные SSL-сертификаты для локальной разработки

mkcert — инструмент сильно упрощающий работу с SSL-сертификатами при локальной разработке. mkcert по сути выступает центром сертификации и позволяет выпускать доверенные SSL-сертификаты.

Доверенный локальный SSL-сертификат

Установка

Поддерживаются Windows, Linux и macOS. В случае с Windows установка осуществляется через менеджеры пакетов Scoop или Chocolatey:

scoop install mkcert
Установка mkcert

Добавление центра сертификации

После установки необходимо запустить команду инсталляции, во время выполнения которой mkcert создаст и добавит корневой сертификат в локальное хранилище доверенных центров сертификации. Поддерживается широкий список хранилищ (Windows, Linux, macOS, Firefox, Chrome и т. д.).

mkcert -install
Создание и добавление корневого сертификата в хранилище

Выпуск SSL-сертификатов

Выпуск сертификата максимально прост, достаточно передать в mkcert список доменов, например:

mkcert predvoditelev.ru "*.predvoditelev.ru"
Выпуск SSL-сертификата с помощью mkcert

В результате будут созданы два файла:

  • predvoditelev.ru+1.pem — сертификат;
  • predvoditelev.ru+1-key.pem — секретный ключ.

Полный путь к генерируемым файлам можно предопределить, это бывает полезно при создании скриптов, автоматически создающих сертификаты с помощью mkcert. Пути задаются с помощью опций -cert-file и -key-file. Например:

mkcert -cert-file=./сert/cert.crt -key-file=./cert/cert.key predvoditelev.ru

Работа с mkcert в WSL

Для работы mkcert в Linux сначала нужно установить утилиту certutil. В случае с Ubuntu устанавливаем с помощью apt:

sudo apt install libnss3-tools

Далее устанавливаем mkcert. Есть несколько способов установки в Linux, все они описаны на странице инструмента. Я просто скачал исполняемый файл:

curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert

В WSL команду инсталляции не выполняем, так как под WSL мы будем только выпускать SSL-сертификаты. Но для того, чтобы сертификаты были доверенными в Windows, мы должны указать mkcert путь к корневому сертификату, который ранее был создан в Windows.

Смотрим, где находится корневой сертификат в Windows:

mkcert -CAROOT
Получение пути к корневому сертификату mkcert

Далее нужно в WSL добавить переменную окружения CAROOT с путём к корневому сертификату. Я использую оболочку Bash, поэтому сделаю это с помощью файла .bashrc:

echo "export CAROOT=/mnt/c/Users/vjik/AppData/Local/mkcert" >> ~/.bashrc

После добавления переменной нужно перезапустить Bash (можно просто перезайти в WSL).

Теперь можно выпускать сертификаты в WSL и в Windows они будут считаться доверенными.

При написании статьи использовалось следующее ПО:

  • Windows 11 (10.0.22621.1413)
  • WSL 1.1.3.0
  • Ubuntu 20.04.6 WSL
  • mkcert 1.4.4
  • Scoop 0.3.1
@sergei_predvoditelev — Авторский канал в Telegram: заметки о веб-разработке, PHP, открытом ПО, развитии и немного о жизни.