mkcert — инструмент сильно упрощающий работу с SSL-сертификатами при локальной разработке. mkcert по сути выступает центром сертификации и позволяет выпускать доверенные SSL-сертификаты.
Поддерживаются Windows, Linux и macOS. В случае с Windows установка осуществляется через менеджеры пакетов Scoop или Chocolatey:
scoop install mkcert
После установки необходимо запустить команду инсталляции, во время выполнения которой mkcert создаст и добавит корневой сертификат в локальное хранилище доверенных центров сертификации. Поддерживается широкий список хранилищ (Windows, Linux, macOS, Firefox, Chrome и т. д.).
mkcert -install
Выпуск сертификата максимально прост, достаточно передать в mkcert список доменов, например:
mkcert predvoditelev.ru "*.predvoditelev.ru"
В результате будут созданы два файла:
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 в 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
Далее нужно в WSL добавить переменную окружения CAROOT
с путём к корневому сертификату. Я использую оболочку Bash, поэтому сделаю это с помощью файла .bashrc
:
echo "export CAROOT=/mnt/c/Users/vjik/AppData/Local/mkcert" >> ~/.bashrc
После добавления переменной нужно перезапустить Bash (можно просто перезайти в WSL).
Теперь можно выпускать сертификаты в WSL и в Windows они будут считаться доверенными.
При написании статьи использовалось следующее ПО: