Отдыхаешь? А как тебе такое? Если пропиздоглазил, то смотри на зелёный замочек и домен.

Короче — я сгенерил валидный SSL-сертификат для домена localhost.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Аналогично можно бесконечно генерить такие сертификаты для любых своих локальных доменов. Ну и затем подключать их во всякие nginx, mysql, джанги-хуянги и т. п.

Называется mkcert. Работает на всём: Винда, Linux и macOS. В случае с Виндой установка осуществляется через менеджеры пакетов scoop или chocolatey.

Чтобы установить scoop в PowerShell, нужно забить:

Set-ExecutionPolicy RemoteSigned -scope CurrentUser
irm get.scoop.sh | iex

И заинсталлить mkcert:

scoop bucket add extras
scoop install mkcert
mkcert -install

Получаем такое:

Created a new local CA
The local CA is now installed in the system trust store!
Note: Firefox support is not available on your platform.

Всё! Теперь у нас есть свой доверенный центр сертификации.

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

Ебли с этим никакой нет, запускаем:

mkcert bashdays.kek "*.bashdays.kek"

То есть просто перечисляем список доменов.

В ответ получаем:

Created a new certificate valid for the following names
 - "bashdays.kek"
 - "*.bashdays.kek"

Reminder: X.509 wildcards only go one level deep, so this won't match a.b.bashdays.kek

The certificate is at "./bashdays.kek+1.pem" and the key at "./bashdays.kek+1-key.pem"

It will expire on 2 August 2027

В результате получаем bashdays.kek+1.pem — сертификат и bashdays.kek+1-key.pem — приватный ключ.

Ну а дальше пихаем их в жопы в нужное место и наслаждаемся зелёным замочком.

Если серты и ключи тебе нужно генерить в определённом месте, можешь это указать так:

mkcert -cert-file=/ssl/fullchain.crt -key-file=/ssl/private.key bashdays.kek

Это полезно, если у тебя какая-то автоматизация или Bash-скрипт, который автоматом будет это всё генерить, а nginx или Angie это подхавывать.

mkcert в WSL

Чтобы этой хуйнёй воспользоваться на WSL, делаем так:

sudo apt install libnss3-tools
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

Здесь мы не выполняем инициализацию mkcert -install, на WSL мы только генерим SSL-сертификаты.

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

Идём на Windows-машину и выполняем:

mkcert -CAROOT

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

C:\Users\user\AppData\Local\mkcert

Возвращаемся в WSL и выполняем:

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

Если у тебя zsh, сам разберёшься.

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

Если у тебя не Винда, а macOS или Linux, похуй, всё делается аналогично, в официальной документации эти кейсы все подробно расписаны.

Что прикольно, такие серты живут по два года. При желании их можно прикрутить к своему локальному Proxmox или ещё куда-нибудь. Тут уже сам разберёшься.

Для локальных целей прям маст-хев! Забирай на вооружение.