Фигачим самоподписные сертификаты!

Обновите установленные в системе пакеты с помощью консольной команды:

sudo apt update && sudo apt -y upgrade

Установите OpenSSL, введя команду:

sudo apt install openssl

Создайте каталог, куда вы бы хотели сохранить созданные сертификаты с помощью команды mkdir (например, mkdir /home/$USER/cert).

Перейдите в ранее созданный каталог с помощью команды cd (например, cd /home/$USER/cert).

Выполните следующую команду:

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

где:

  • -x509 — уточнение, что нам нужен именно самоподписанный сертификат;
  • -newkey — автоматическое создание ключа сертификата;
  • -days — срок действия сертификата в днях;
  • -keyout — путь (если указан) и имя файла ключа;
  • -out — путь (если указан) и имя файла сертификата.

В каталоге /home/$USER/cert сгенерируются 2 файла:

  • certificate.crt — сам сертификат;
  • privateKey.key — файл ключа.

Инструкция по созданию сертификатов с mkcert для использования на нескольких устройствах

Основная идея

  1. На главном компьютере создаем CA (Certificate Authority)
  2. Экспортируем корневой сертификат CA
  3. Переносим и устанавливаем этот CA на другие устройства
  4. Генерируем сертификаты для доменов на главном компьютере
  5. Используем одни и те же сертификаты на всех устройствах

Пошаговая инструкция:

Шаг 1: Установка mkcert на главном компьютере

Windows (Chocolatey)
choco install mkcert
macOS
brew install mkcert
Linux (Ubuntu/Debian)
sudo apt install libnss3-tools
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo mv mkcert-v*-linux-amd64 /usr/local/bin/mkcert
Linux (через go)
go install filippo.io/mkcert@latest

Шаг 2: Создаем локальный Certificate Authority (CA)

mkcert -install

Проверьте, что CA создан. Сертификат CA будет находится в:

  • Windows: %LocalAppData%\mkcert\rootCA.pem
  • macOS: ~/Library/Application Support/mkcert/rootCA.pem
  • Linux: ~/.local/share/mkcert/rootCA.pem

Шаг 3: Экспортируем корневой сертификат CA

Найдите корневой сертификат и экспортируйте в различных форматах:

  1. Копирование файла Находим файл rootCA.pem или rootCA-key.pem.

  2. Экспорт PKCS#12 (если нужно)

    openssl pkcs12 -export -out rootCA.p12 -inkey rootCA-key.pem -in rootCA.pem
    

Шаг 4: Установка корневого сертификата на других устройствах

Вариант A: Ручная установка на каждое устройство

Windows (принимающем устройстве)
  1. Скопируйте rootCA.pem на устройство.
  2. Переименуйте в rootCA.crt.
  3. Дважды щелкните на файле и выберите "Установить сертификат".
  4. Выберите "Текущий пользователь" или "Локальный компьютер".
  5. Поместите в "Доверенные корневые центры сертификации".

macOS:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem

Linux (Chrome/Firefox):

sudo cp rootCA.pem /usr/local/share/ca-certificates/
sudo update-ca-certificates

# Для Firefox отдельно
certutil -A -n "mkcert CA" -t "C,," -i rootCA.pem -d sql:$HOME/.mozilla/firefox/*.default

Android:

  1. Скопируйте rootCA.pem на телефон как rootCA.crt.
  2. Откройте Настройки → Безопасность → Шифрование и учетные данные.
  3. "Установить сертификат" → "CA-сертификат".
  4. Выберите файл.

iOS:

  1. Отправьте rootCA.pem на устройство (почта, AirDrop).
  2. Откройте файл на iPhone/iPad.
  3. Нажмите "Установить" в профиле сертификата.
  4. Перейдите в Настройки → Основные → Профили VPN и управление устройством.
  5. Нажмите "Установить" для корневого сертификата.
  6. Включите доверие в Настройках → Основные → Об этом устройстве → Доверенные сертификаты.

Вариант B: Автоматизация через скрипт Создайте скрипт install_ca.sh (для Linux/macOS):

#!/bin/bash
CA_CERT="rootCA.pem"
CA_NAME="mkcert Local CA"

sudo cp "$CA_CERT" /usr/local/share/ca-certificates/mkcert-ca.crt

if command -v update-ca-certificates &> /dev/null; then
    sudo update-ca-certificates
fi

cp "$CA_CERT" ~/.mozilla/firefox/*.default/

Шаг 5: Генерация сертификатов на главном компьютере

mkcert example.com '*.example.com'

Шаг 6: Перенесите сгенерированные сертификаты и ключи на другие устройства

Шаг 7: Проверка

После установки корневого сертификата на всех устройствах:

  1. Настройте DNS или hosts файлы.
  2. Откройте в браузере https://example.com.

Таким образом, вы создаете централизованную инфраструктуру PKI для локальной разработки, где один CA сертификат устанавливается на все устройства, а все сервисы используют сертификаты, подписанные этим CA.