Иногда необходимо чтобы какой-нибудь локальный сервер с каким-нибудь локальным доменом можно было использовать через https. Для этого можно использовать приложение mkcert.
Установка
Варианты установки описаны в репозитории mkcert (https://github.com/FiloSottile/mkcert)
Вариант установки на Ubuntu
- Установка certutil
sudo apt install libnss3-tools
- Сборка из репозитория (минимально — Go 1.13+)
git clone https://github.com/FiloSottile/mkcert && cd mkcert go build -ldflags "-X main.Version=$(git describe --tags)"
Генерация сертификатов
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" ✅
Сертификаты будут сгенерированы в папке запуска mkcert. В дальнейшем эти файлы будут использованы
Корневой сертификат
Расположение корневого сертификата: /home/user/.local/share/mkcert либо можно найти выполнив команду
mkcert -CAROOT
Включение сертификатов в Apache, Ngxinx
Apache
Включить модуль
a2enmod ssl
<VirtualHost *:443>
ServerName example.com
SSLCertificateFile /path/to/certs/example.com+4.pem
SSLCertificateKeyFile /path/to/certs/private/example.com+4-key.pem
...
</VirtualHost>
Примечание: в Apache сертификаты лучше ставить внутри проверки модуля сертификатов, например в файле default-ssl или внутри проверки модуля
Включить сертификаты (может не понадобиться)
a2ensite default-ssl.conf
перезагрузить сервер
systemctl restart apache2
Nginx
Сертификаты лучше скопировать в папку сертификатов в nginx, либо указать путь до сертификатов
server {
listen 80;
listen 443 ssl;
ssl on;
ssl_certificate /path/to/certs/example.com+4.pem;
ssl_certificate_key /path/to/certs/private/example.com+4-key.pem;
server_name example.com;
location / {
root /var/www/html/example;
index index.html;
}
}
перезапустить сервер
systemctl restart nginx
Браузер
Перезагружаем браузер и теперь можно видеть https на ваших локальных доменных именах.
Примечание
Опасность использования заключается в том, чтобы ваш корневой сертификат не утек в сеть. Это опасно тем, что при умелом использовании злоумышленником вашим корневым сертификатом, вредоносные или недоверенные сайты могут оказаться доверенными
Источники
- FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names you’d like.
- Создание локального самоподписного сертификата с доверием браузеров Ubuntu 18 / Debian 8/9