В последней статье про Docker лабу я показывал, как с лёгкостью создать локальный CA (центр сертификации) и сгенерировать самоподписанные сертификаты 🖨.
🖐️Эй!
Подписывайтесь на наш телеграм @r4ven_me📱, чтобы не пропустить новые публикации на сайте😉. А если есть вопросы или желание пообщаться по тематике — заглядывайте в Вороний чат @r4ven_me_chat🧐.
Для этого я использовал одну любопытную утилиту из стандартных реп - mkcert 🤔.
Как нынче модно, она представляет собой один бинрник на Go и довольно проста в использовании 👨💻.
Её фишка в том, что при создании CA она автоматически добавляет корневой сертификат в доверенный на вашей Linux системе, а также, если запуск происходит на Desktop машине, добавляет этот сертификат в хранилища ваших веб браузеров, таких как Firefox и Chrome/Chromium 🌐.
После этого, все домены, которые используют серты, выпущенные с помощью mkcert не вызывают ошибок подлинности, ни в консоли ни в браузерах (см. скрин ниже).
В общем, решил зафиксировать пример её использования тут 👨💻😎.
Пример для Deb based систем.
1️⃣ Установка mkcert
sudo apt update && sudo apt install -y mkcert2️⃣ Создание CA
mkcert -install📝 Во время установки корневого серта в доверенные утилита запросит ввести пароль sudo.
Проверка расположения корневого сертификата:
mkcert -CAROOTВ выводе будет путь до директории:
/home/ivan/.local/share/mkcert
Смотрим содержимое:
ls -l ~/.local/share/mkcertВ ней должны лежать два файла:
rootCA-key.pem- приватный ключrootCA.pem- сертификат
Проверка наличия серта CA в системе:
trust list | grep -C3 mkcertПример вывода:
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 для него:
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:
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Хорошего дня пингвины🐧


