
Для тестирования, разработки и внутреннего использования часто используются самозаверенные (самоподписанные) сертификаты. Технически такой сертификат ничем не отличается от публичного, только вместо передачи на подпись в удостоверяющий центр (УЦ) пользователь создаёт свою собственную подпись.
Под Linux мы можем сгенерировать сертификат командой mkcert или OpenSSL. Единственная проблема в том, что браузер не доверяет такому сертификату, поскольку он не подписан доверенным УЦ. Поэтому нужно ещё запустить и настроить собственный УЦ, который подписывает наши сертификаты — и добавить этот УЦ в список доверенных центров сертификации УЦ (или браузера).
Посмотрим, как это делается с помощью mkcert и OpenSSL.
Использование mkcert
Мы уже рассказывали об удобной утилите mkcert, которая работает под всеми ОС и не требует какой-то конфигурации. С тех пор утилита обновилась.
Сначала устанавливаем certutil:
sudo apt install libnss3-tools
-или-
sudo yum install nss-tools
-или-
sudo pacman -S nss
-или-
sudo zypper install mozilla-nss-tools
Затем устанавливаем mkcert. Можно использовать пакетный менеджер Homebrew для Linux:
brew install mkcert
или собираем из исходников (требует Go 1.13+):
git clone https://github.com/FiloSottile/mkcert && cd mkcert
go build -ldflags "-X main.Version=$(git describe --tags)"
Есть также готовые бинарники.
Для пользователей Arch Linux утилита mkcert находится в официальном репозитории:
sudo pacman -Syu mkcert
Под macOS устанавливаем утилиту через пакетный менеджер Homebrew:
brew install mkcert
brew install nss # если используем Firefox
Или MacPorts:
sudo port selfupdate
sudo port install mkcert
sudo port install nss # если используем Firefox
Под Windows можно установить её через Chocolatey:
choco install mkcert
Или Scoop:
scoop bucket add extras
scoop install mkcert
Как вариант, просто взять скомпилированные бинарники.
Создаём локальный УЦ:
$ mkcert -install
Created a new local CA 