mkcert - Валидные самоподписанные TLS сертификаты за 3 команды в терминале Linux
Приветствую!

В последней статье про Docker лабу я показывал, как с лёгкостью создать локальный CA (центр сертификации) и сгенерировать самоподписанные сертификаты 🖨.

Для этого я использовал одну любопытную утилиту из стандартных реп - mkcert 🤔.

Как нынче модно, она представляет собой один бинрник на Go и довольно проста в использовании 👨‍💻.

Её фишка в том, что при создании CA она автоматически добавляет корневой сертификат в доверенный на вашей Linux системе, а также, если запуск происходит на Desktop машине, добавляет этот сертификат в хранилища ваших веб браузеров, таких как Firefox и Chrome/Chromium 🌐.

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

В общем, решил зафиксировать пример её использования тут 👨‍💻😎.

Пример для Deb based систем.


1️⃣ Установка mkcert

BASH
sudo apt update && sudo apt install -y mkcert
Нажмите, чтобы развернуть и увидеть больше

2️⃣ Создание CA

BASH
mkcert -install
Нажмите, чтобы развернуть и увидеть больше

Проверка расположения корневого сертификата:

BASH
mkcert -CAROOT
Нажмите, чтобы развернуть и увидеть больше

В выводе будет путь до директории:

BASH
/home/ivan/.local/share/mkcert
Нажмите, чтобы развернуть и увидеть больше

Смотрим содержимое:

BASH
ls -l ~/.local/share/mkcert
Нажмите, чтобы развернуть и увидеть больше

В ней должны лежать два файла:

Проверка наличия серта CA в системе:

BASH
trust list | grep -C3 mkcert
Нажмите, чтобы развернуть и увидеть больше

Пример вывода:

BASH
pkcs11:id=%24%B9%B4%1F%90%8D%DF%21%1B%7B%26%C8%09%43%29%51%61%F4%72%C9;type=cert
    type: certificate
    label: mkcert ivan@r4ven-me
    trust: anchor
    category: authority
Нажмите, чтобы развернуть и увидеть больше

На этом все манипуляции с CA завершены. Осталось только…

3️⃣ Сгенерировать сертификаты для нужных вам доменов и использовать их

Например, создадим сертификат для домена home.lan и wildcard для него:

BASH
mkcert -cert-file ./home.lan.crt -key-file ./home.lan.key "home.lan" "localhost" "127.0.0.1"

mkcert -cert-file ./_wildcard.home.lan.crt -key-file ./_wildcard.home.lan.key "*.home.lan"
Нажмите, чтобы развернуть и увидеть больше

Добавьте серты на ваш reverse proxy, например, Nginx Proxy Manager, как это было показано в статье и перезапустите браузер:

Теперь все подключения по HTTPS будут валидны 🌐.

4️⃣ (Опционально) Добавление mkcert rootCA в доверенные на другом хосте

Если вы планируете обращаться по HTTPS к вашему локальному хосту с других хостов, например, по защищённой приватной сети, то просто скопируйте корневой сертификат (не ключ!), созданный mkcert, в доверенные на другом хосте (например по SSH (https://r4ven.me/networking/ssh-bezopasnoe-podklyuchenie-k-udalyonnym-hostam-vvedenie/)) и обновите список.

Пример для Debian:

BASH
scp ~/.local/share/mkcert/rootCA.pem user@remote-host:/tmp/

ssh -t user@remote-host sudo cp /tmp/rootCA.pem /usr/local/share/ca-certificates/mkcert-rootCA.crt

ssh -t user@remote-host sudo update-ca-certificates

ssh user@remote-host trust list | grep -C3 mkcert
Нажмите, чтобы развернуть и увидеть больше

Хорошего дня пингвины🐧

Авторские права

Автор: Иван Чёрный

Ссылка: https://r4ven.me/software/mkcert-validnye-samopodpisannye-tls-sertifikaty-za-3-komandy-v-terminale-linux/

Лицензия: CC BY-NC-SA 4.0

Использование материалов блога разрешается при условии: указания авторства/источника, некоммерческого использования и сохранения лицензии.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша