Nginx

Настройка Nginx SSL в Linux

Настройка Nginx SSL в Linux

SSL (означает уровень защищенных сокетов) - это веб-протокол, который обеспечивает безопасность трафика между сервером и клиентом путем его шифрования. Сервер и клиенты безопасно передают трафик без риска интерпретации сообщений третьими лицами. Это также помогает клиенту проверить личность веб-сайта, с которым он общается.

В этом посте мы расскажем, как настроить SSL для Nginx. Мы продемонстрируем процедуру с использованием самозаверяющего сертификата. Самозаверяющий сертификат только шифрует соединение, но не проверяет подлинность вашего сервера. Следовательно, его следует использовать только для тестовых сред или для внутренних служб локальной сети. Для производственной среды лучше использовать сертификаты, подписанные CA (центром сертификации).

Предварительные условия

Для этого поста у вас должны быть следующие предварительные условия:

Описанная здесь процедура была выполнена на Debian 10 (Buster) машина.

Шаг 1. Создание самозаверяющего сертификата

Нашим первым шагом будет создание самозаверяющего сертификата. Выполните следующую команду в Терминале, чтобы сгенерировать CSR (запрос подписи сертификата) и ключ:

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout / etc / ssl / private / selfsigned-nginx.ключ -out / etc / ssl / certs / selfsigned-nginx.crt

Вам будет предложено предоставить некоторую информацию, такую ​​как название вашей страны, штата, населенного пункта, общее имя (ваше доменное имя или IP-адрес) и адрес электронной почты.

В приведенной выше команде OpenSSL создаст следующие два файла:

Теперь создайте дхпарам.pem файл используя следующую команду:

$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 2048

Шаг 2. Настройка Nginx для использования SSL

На предыдущем шаге мы создали CSR и ключ. Теперь на этом этапе мы настроим Nginx для использования SSL. Для этого мы создадим фрагмент конфигурации и добавим информацию о наших файлах сертификатов SSL и местоположениях ключей.

Выполните следующую команду в Терминале, чтобы создать новый фрагмент конфигурации самоподписанный.conf файл в / и т. д. / nginx / сниппеты.

$ sudo nano / etc / nginx / snippets / самоподписанный.conf

В файл добавьте следующие строки:

ssl_certificate / etc / ssl / certs / самоподписанный-nginx.crt;
ssl_certificate_key / etc / ssl / private / selfsigned-nginx.ключ;

В ssl_certificate установлен на самоподписанный-nginx.crt (файл сертификата), а ssl_certificate_key установлен на самоподписанный-nginx.ключ (ключевой файл).

Сохраните и закройте самоподписанный.conf файл.

Теперь создадим еще один файл сниппета ssl-params.conf и настройте некоторые базовые параметры SSL. Выполните следующую команду в Терминале, чтобы отредактировать ssl-params.conf файл:

$ sudo nano / etc / nginx / snippets / ssl-params.conf

Добавьте в файл следующий контент:

ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers на;
ssl_dhparam / и т. д. / ssl / certs / dhparam.пем;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512: DHE-RSA-AES256-GCM-SHA512: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-GCM-SHA384: ECDHE4256-SHA-A384: ECDHE4256-SHA-A384
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10 мин;
ssl_session_cache общий: SSL: 10 м;
ssl_session_tickets off;
# ssl_stapling on;
# ssl_stapling_verify on;
резольвер 8.8.8.8 8.8.4.4 действительных = 300 с;
resolver_timeout 5 с;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; режим = блок";

Поскольку мы не используем сертификат, подписанный ЦС, мы отключили сшивание SSL. Если вы используете сертификат, подписанный ЦС, раскомментируйте ssl_stapling Вход.

Шаг 3. Настройка Nginx для использования SSL

Теперь мы откроем файл конфигурации блока сервера Nginx, чтобы внести некоторые изменения.  На этом этапе мы предполагаем, что вы уже настроили серверный блок, который будет похож на этот:

server
слушать 80;
слушать [::]: 80;
корень / var / www / test.org / html;
индекс индекс.html-индекс.индекс htm.nginx-debian.html;
server_name test.org www.контрольная работа.org;
место расположения /
try_files $ uri $ uri / = 404;

Чтобы открыть файл конфигурации блока сервера Nginx, используйте следующую команду:

$ sudo nano / etc / nginx / сайты-доступные / тест.org

Теперь измените существующий сервер блок, чтобы он выглядел так:

server
слушайте 443 ssl;
слушайте [::]: 443 ssl;
включать фрагменты / самоподписанные.conf;
включить сниппеты / ssl-params.conf;
корень / var / www / test.org / html;
индекс индекс.html-индекс.индекс htm.nginx-debian.html;
server_name test.org www.контрольная работа.org;

В приведенных выше конфигурациях мы также добавили фрагменты SSL самоподписанный.conf а также ssl-params.conf что мы настроили ранее.

Затем добавьте второй сервер блокировать.

server
слушать 80;
слушать [::]: 80;
server_name test.org www.контрольная работа.org;
return 302 https: // $ server_name $ request_uri;

В приведенной выше конфигурации, возврат 302 перенаправляет HTTP на HTTPS.

Примечание: Обязательно замените test.org с собственным доменным именем. Теперь сохраните и закройте файл.

Шаг 4. Разрешите трафик SSL через брандмауэр

Если в вашей системе включен брандмауэр, вам нужно будет разрешить через него трафик SSL.  Nginx предоставляет вам три разных профиля с ufw. Вы можете просмотреть их, используя следующую команду в Терминале:

Список приложений $ sudo ufw

Вы увидите следующий вывод с тремя профилями для трафика Nginx.

Вам нужно будет разрешить профиль «Nginx Full» в брандмауэре. Для этого используйте следующую команду:

$ sudo ufw позволяет 'Nginx Full'

Чтобы проверить, разрешен ли профиль в брандмауэре, используйте следующую команду:

$ sudo ufw статус

Шаг 5. Проверьте файл конфигурации NGINX

Теперь проверьте файл конфигурации Nginx, используя следующую команду в Терминале:

$ sudo nginx -t

Вы должны увидеть результат ниже.


Теперь создайте символическую ссылку между сайтами, доступными и доступными:

$ ln -s / и т.д. / nginx / сайты-доступные / тест.com / и т. д. / nginx / сайты-включенные /

Затем перезапустите службу Nginx, чтобы применить изменения конфигурации. Используйте для этого команду ниже:

$ sudo systemctl перезапустить nginx

Шаг 6. Протестируйте SSL

Теперь, чтобы проверить SSL, перейдите по следующему адресу:

https: // домен-или-IP-адрес

Поскольку мы настроили самозаверяющий сертификат, мы увидим предупреждение о том, что соединение небезопасно. Следующая страница появляется при использовании браузера Mozilla Firefox.

Щелкните значок Передовой кнопка.

Нажмите Добавить исключение.

Затем нажмите Подтвердить исключение безопасности.

Теперь вы увидите свой HTTPS-сайт, но с предупреждающим знаком (замок с желтым предупреждающим знаком) о безопасности вашего сайта.

Кроме того, проверьте, правильно ли работает перенаправление, получив доступ к вашему домену или IP-адресу с помощью http.

http: // домен-или-IP-адрес

Теперь, если ваш сайт автоматически перенаправляется на HTTPS, это означает, что перенаправление работает правильно. Чтобы настроить перенаправление навсегда, отредактируйте файл конфигурации блока сервера, используя следующую команду в Терминале:

$ sudo nano / etc / nginx / сайты-доступные / тест.org

Теперь измените возврат 302 возвращаться 301 в файле, а затем сохраните и закройте его.

Вот как вы можете настроить SSL для Nginx в системе Debian 10. Мы настроили самоподписанный сертификат для демонстрации. Если вы работаете в производственной среде, всегда используйте сертификат CA.

Как изменить левую и правую кнопки мыши на ПК с Windows 10
Совершенно нормально, что все устройства компьютерной мыши эргономичны для правшей. Но есть мышиные устройства, специально разработанные для левшей ил...
Эмуляция щелчков мыши с помощью мыши без щелчка в Windows 10
Использование мыши или клавиатуры в неправильной позе или чрезмерное использование может привести к множеству проблем со здоровьем, включая растяжение...
Добавьте жесты мыши в Windows 10 с помощью этих бесплатных инструментов
В последние годы компьютеры и операционные системы сильно эволюционировали. Было время, когда пользователям приходилось использовать команды для навиг...