nginx HTTPs Для локальной разработки. Как настроить в Linux

Ранее мы рассматривали как настроить виртуальный хост, теперь давайте сделаем так, чтобы локально к нашему сайту можно было обращаться по протоколу https. Делаем следующее:

  1. Сналача создадим сертификат и ключ (самоподписанный SSL-сертификат с приватным ключом), выполнив команду в терминале:
    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/test-nginx-selfsigned.key -out /etc/ssl/certs/test-nginx-selfsigned.crt

    где:

    • req — это команда, которая указывает на использование X.509 (управление запросом подписи сертификата);
    • -x509 — это команда управления данными сертификата, указывающая на создание самоподписанного сертификата;
    • -nodes — это команда, которая говорит не использовать пароль для доступа к ключу;
    • -days 365 — это команда, которая устанавливает срок действия сертификата в днях (мы установили его на год);
    • -newkey rsa: 2048 — это команда, которая генерирует новый приватный ключ с использованием алгоритма RSA с длиной ключа 2048 бит;
    • а также пути (и имена файлов, соответственно) для размещения ключа и сертификата:
      • -keyout /etc/ssl/private/test-nginx-selfsigned.key — это путь для размещения файла приватного ключа;
      • -out /etc/ssl/certs/test-nginx-selfsigned.crt — это путь для размещения файла сертификата.

    После выполнения команды утилита создания задаст вопросы для получения инфромации о ключе - все их можно пропустить, просто нажимая Enter.

  2. Далее нам нужно указать использовать ключ и сертификат в конфигурации виртуального хоста, далее все зависит от того что у вас за виртуальный хост (напр. прокси или обычный).

    Объясним на примере обычном минимального хоста, если он был сконфигурирован как:

    server {
            listen   80;
            root var/www/nginxtest;
            index index.html index.htm;
            server_name nginxtest.loc;
    }

    То подключим ssl и укажим пути к файлам так:

    server {
        listen   80;
    
        #HTTPs
        listen 443 ssl;
        ssl_certificate /etc/ssl/certs/test-nginx-selfsigned.crt;
        ssl_certificate_key  /etc/ssl/private/test-nginx-selfsigned.key;
    	
    
        root var/www/nginxtest;
        index index.html index.htm;
        server_name nginxtest.loc;
    
    }
  3. Далее как обычно:

  4. Проводим диагностику текущей конфигурации:
    sudo nginx -t

    В случае успеха ответ должен быть похож на:

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

  5. Перезагружаем nginx, чтобы "подхватить" кофигурация для вновь добавленного виртуального хоста:
    sudo service nginx restart

Также правим hosts, как и в обычной инструкции и готово!
Адрес: https://nginxtest.loc

-- теперь должен быть доступен по https (так как сертификат самодписанный в браузере необходимо будет дать разрешение)

Источники:

Key Words for FKN + antitotal forum (CS VSU):