Nginx

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

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

SSL (означава сигурен слой сокет) е уеб протокол, който прави трафика между сървъра и клиента сигурен, като го криптира. Сървърът и клиентите безопасно предават трафика, без риск комуникацията да бъде интерпретирана от трети страни. Също така помага на клиента да провери самоличността на уебсайта, с който комуникира.

В тази публикация ще опишем как да настроим SSL за Nginx. Ще демонстрираме процедурата, като използваме самоподписания сертификат. Самоподписаният сертификат само криптира връзката, но не потвърждава самоличността на вашия сървър. Следователно той трябва да се използва само за тестване на среди или за вътрешни LAN услуги. За производствената среда е по-добре да използвате сертификатите, подписани от CA (сертифициращ орган).

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

За тази публикация трябва да имате следните предпоставки:

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

Стъпка 1: Генериране на самоподписан сертификат

Първата ни стъпка ще бъде да генерираме самоподписан сертификат. Издайте командата по-долу в терминала, за да генерирате CSR (искане за подписване на сертификат) и ключ:

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

Ще бъдете подканени да предоставите информация като името на вашата държава, щат, населено място, общо име (вашето име на домейн или IP адрес) и имейл адрес.

В горната команда OpenSSL ще създаде следните два файла:

Сега създайте dhparam.pem файл използвайки командата по-долу:

$ sudo openssl dhparam -out / etc / ssl / certs / dhparam.пем 2048

Стъпка 2: Конфигуриране на Nginx да използва SSL

В предишната стъпка създадохме CSR и ключа. Сега в тази стъпка ще конфигурираме Nginx да използва SSL. За това ще създадем конфигурационен фрагмент и ще добавим информация за нашите SSL сертификатни файлове и местоположения на ключове.

Издайте командата по-долу в Терминал, за да създадете нов фрагмент за конфигурация самоподписани.conf файл в / etc / nginx / snippets.

$ sudo nano / etc / nginx / snippets / самоподписани.конф

Във файла добавете следните редове:

ssl_certificate / etc / ssl / certs / selfsigned-nginx.crt;
ssl_certificate_key / etc / ssl / private / selfsigned-nginx.ключ;

The ssl_certificate е настроен на selfsigned-nginx.crt (файл със сертификат), докато ssl_certificate_key е настроен на selfsigned-nginx.ключ (ключов файл).

Запазете и затворете самоподписани.конф файл.

Сега ще създадем друг файл с фрагменти ssl-params.конф и конфигурирайте някои основни SSL настройки. Издайте командата по-долу в терминала, за да редактирате ssl-params.конф файл:

$ sudo nano / etc / nginx / snippets / ssl-params.конф

Добавете следното съдържание към файла:

ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers включен;
ssl_dhparam / etc / 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: ECDHES-RSA-A
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache споделено: SSL: 10 м;
ssl_session_tickets off;
# ssl_stapling on;
# ssl_stapling_verify on;
8.8.8.8 8.8.4.4 валидни = 300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Защита "1; mode = block";

Тъй като не използваме сертификат, подписан от CA, следователно деактивирахме SSL телбод. Ако използвате сертификат, подписан от CA, коментирайте ssl_stapling влизане.

Стъпка 3: Конфигуриране на Nginx да използва SSL

Сега ще отворим конфигурационния файл на блока на сървъра на Nginx, за да направим някои конфигурации.  В тази стъпка ще приемем, че вече сте настроили сървърния блок, който ще бъде подобен на този:

сървър
слушайте 80;
слушайте [::]: 80;
root / var / www / test.org / html;
индекс индекс.html индекс.htm индекс.nginx-debian.html;
тест за име на сървър.org www.тест.организация;
местоположение /
try_files $ uri $ uri / = 404;

За да отворите конфигурационния файл на блока на сървъра Nginx, използвайте командата по-долу:

$ sudo nano / etc / nginx / sites-available / test.орг

Сега модифицирайте съществуващите сървър блок, за да изглежда така:

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

В горните конфигурации сме добавили и SSL фрагменти самоподписани.конф и ssl-params.конф които сме конфигурирали по-рано.

След това добавете a втори сървър блок.

сървър
слушайте 80;
слушайте [::]: 80;
тест за име на сървър.org www.тест.организация;
връщане 302 https: // $ server_name $ request_uri;

В горната конфигурация, връщане 302 пренасочва HTTP към HTTPS.

Забележка: Не забравяйте да замените теста.org със собствено име на домейн. Сега запазете и затворете файла.

Стъпка 4: Разрешете SSL трафик през защитната стена

Ако защитната стена е активирана във вашата система, ще трябва да разрешите SSL трафик през нея.  Nginx ви предоставя три различни профила с ufw. Можете да ги видите с помощта на командата по-долу в Терминал:

$ sudo ufw списък с приложения

Ще видите следния изход с три профила за трафика на Nginx.

Ще трябва да разрешите профила “Nginx Full” в защитната стена. За целта използвайте командата по-долу:

$ sudo ufw позволи 'Nginx пълен'

За да проверите дали профилът е разрешен в защитната стена, използвайте командата по-долу:

$ sudo ufw статус

Стъпка 5: Тествайте конфигурационния файл на NGINX

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

$ sudo nginx -t

Трябва да видите изхода по-долу.


Сега създайте символичната връзка между наличните и активираните сайтове:

$ ln -s / etc / nginx / sites-available / test.com / etc / nginx / sites-enabled /

След това рестартирайте услугата Nginx, за да приложите промените в конфигурацията. Използвайте командата по-долу, за да направите това:

$ sudo systemctl рестартирайте nginx

Стъпка 6: Тествайте SSL

Сега, за да тествате SSL, отидете до следния адрес:

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

Тъй като създадохме самоподписания сертификат, ще видим предупреждение, че връзката не е сигурна. Следващата страница се появява, когато използвате браузъра Mozilla Firefox.

Щракнете върху Разширено бутон.

Щракнете Добавяне на изключение.

След това щракнете Потвърдете изключението за сигурност.

Сега ще видите вашия HTTPS сайт, но с предупредителен знак (заключване с жълт предупредителен знак) относно сигурността на вашия уебсайт.

Също така проверете дали пренасочването работи правилно, като осъществите достъп до вашия домейн или IP адрес чрез http.

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

Сега, ако вашият сайт автоматично пренасочва към HTTPS, това означава, че пренасочването е работило правилно. За да конфигурирате пренасочването за постоянно, редактирайте конфигурационния файл на сървърния блок, като използвате командата по-долу в Терминал:

$ sudo nano / etc / nginx / sites-available / test.орг

Сега променете връщането 302 да върна 301 във файла и след това го запазете и затворете.

Ето как можете да настроите SSL за Nginx в системата Debian 10. Създадохме самоподписания сертификат за демонстрация. Ако сте в производствена среда, винаги използвайте сертификат за сертифициране.

Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...
Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...
Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...