mkcert — простой инструмент для создания локально доверенных сертификатов разработки. Он не требует настройки.
$ mkcert -install Created a new local CA ? The local CA is now installed in the system trust store! ⚡️ The local CA is now installed in the Firefox trust store (requires browser restart)! ? $ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1 Created a new certificate valid for the following names - "example.com" - "*.example.com" - "example.test" - "localhost" - "127.0.0.1" - "::1" The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅
Использование сертификатов реальных центров сертификации (ЦС) для разработки может быть опасным или невозможным (для таких хостов, как example.test
, localhost
или 127.0.0.1
), но самозаверяющие сертификаты вызывают ошибки доверия. Управление собственным центром сертификации — лучшее решение, но обычно оно требует сложных команд, специальных знаний и действий, выполняемых вручную.
mkcert автоматически создает и устанавливает локальный центр сертификации в корневом хранилище системы, а также генерирует локально доверенные сертификаты. mkcert не настраивает автоматически серверы для использования сертификатов, однако это зависит от вас.
Предупреждение : файл
rootCA-key.pem
, который автоматически генерирует mkcert, дает полную возможность перехватывать безопасные запросы с вашего компьютера. Не делитесь этим.
В macOS используйте Homebrew.
brew install mkcert brew install nss # if you use Firefox
или МакПортс.
sudo port selfupdate sudo port install mkcert sudo port install nss # if you use Firefox
В Linux сначала установите certutil
.
sudo apt install libnss3-tools -or- sudo yum install nss-tools -or- sudo pacman -S nss -or- sudo zypper install mozilla-nss-tools
Затем вы можете установить с помощью 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)"
или используйте готовые двоичные файлы.
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
Для пользователей Arch Linux mkcert
доступен в официальном репозитории Arch Linux.
sudo pacman -Syu mkcert
В Windows используйте Chocolatey
choco install mkcert
или используйте Scoop
scoop bucket add extras scoop install mkcert
либо собрать из исходного кода (требуется Go 1.10+), либо использовать готовые двоичные файлы.
Если у вас возникли проблемы с разрешениями, попробуйте запустить mkcert
от имени администратора.
mkcert поддерживает следующие корневые хранилища:
системный магазин macOS
Системный магазин Windows
Варианты Linux, которые предоставляют либо
update-ca-trust
(Fedora, RHEL, CentOS) или
update-ca-certificates
(Ubuntu, Debian, OpenSUSE, SLES) или
trust
(Арка)
Firefox (только для macOS и Linux)
Хром и хромиум
Java (когда установлен JAVA_HOME
)
Чтобы установить локальный корневой ЦС только в их подмножество, вы можете установить для переменной среды TRUST_STORES
список, разделенный запятыми. Варианты: «система», «java» и «nss» (включая Firefox).
-cert-file FILE, -key-file FILE, -p12-file FILE Customize the output paths. -client Generate a certificate for client authentication. -ecdsa Generate a certificate with an ECDSA key. -pkcs12 Generate a ".p12" PKCS #12 file, also know as a ".pfx" file, containing certificate and key for legacy applications. -csr CSR Generate a certificate based on the supplied CSR. Conflicts with all other flags and arguments except -install and -cert-file.
Примечание. Эти параметры необходимо разместить перед списком доменных имен.
mkcert -key-file key.pem -cert-file cert.pem example.com *.example.com
mkcert автоматически создает сертификат S/MIME, если одно из предоставленных имен является адресом электронной почты.
mkcert [email protected]
Чтобы сертификатам на мобильных устройствах можно было доверять, вам необходимо установить корневой центр сертификации. Это файл rootCA.pem
в папке, напечатанной mkcert -CAROOT
.
В iOS вы можете использовать AirDrop, отправить центр сертификации себе по электронной почте или передать его с HTTP-сервера. После его открытия вам необходимо установить профиль в «Настройки» > «Профиль загружен», а затем включить ему полное доверие.
Для Android вам придется установить центр сертификации, а затем включить root-права пользователей в разрабатываемой сборке вашего приложения. См. этот ответ StackOverflow.
Node не использует корневое хранилище системы, поэтому не принимает сертификаты mkcert автоматически. Вместо этого вам придется установить переменную среды NODE_EXTRA_CA_CERTS
.
export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
Сертификат CA и его ключ хранятся в папке данных приложения дома пользователя. Обычно вам не нужно об этом беспокоиться, поскольку установка автоматизирована, но местоположение печатается с помощью mkcert -CAROOT
.
Если вы хотите управлять отдельными центрами сертификации, вы можете использовать переменную среды $CAROOT
чтобы указать папку, в которую mkcert будет помещать и искать локальные файлы центра сертификации.
Для установки в хранилище доверенных сертификатов ключ CA не требуется, поэтому вы можете экспортировать сертификат CA и использовать mkcert для его установки на другие машины.
Найдите файл rootCA.pem
в mkcert -CAROOT
скопируйте его на другую машину
установите $CAROOT
в его каталог
запустите mkcert -install
Помните, что mkcert предназначен для целей разработки, а не для производства, поэтому его не следует использовать на компьютерах конечных пользователей, а также не следует экспортировать или делиться rootCA-key.pem
.