Локальный https. Сертификаты для localhost
Иногда необходимо чтобы какой-нибудь локальный сервер с каким-нибудь локальным доменом можно было использовать через https. Для этого можно использовать приложение mkcert.
Установка
Варианты установки описаны в репозитории mkcert (https://github.com/FiloSottile/mkcert)
Вариант установки на Ubuntu
Установка certutilsudo 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 или внутри проверки модуля IfModule mod_ssl.c>
Включить сертификаты (может не понадобиться)
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 на ваших локальных доменных именах.
Примечание
Опасность использования заключается в том, чтобы ваш корневой сертификат не утек в сеть. Это опасно тем, что при умелом использовании злоумышленником вашим корневым сертификатом, вредоносные или недоверенные сайты могут оказаться доверенными