Как да защитите Nginx с Let’s Encrypt на Debian 11

Как да защитите Nginx с Let’s Encrypt на Debian 11

В днешния дигитален свят, сигурността е от съществено значение за всеки уебсайт. HTTPS протоколът осигурява криптирана връзка между сървъра и браузъра, предпазвайки данните от неоторизиран достъп. Let’s Encrypt е безплатен и лесен за използване сертификационен орган, който ви позволява да добавите HTTPS към вашия сайт с лекота. В този урок ще ви покажем как да защитите Nginx сървър на Debian 11, използвайки Let’s Encrypt.

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

Преди да започнем, уверете се, че:

* Имате инсталиран Debian 11.
* Nginx е инсталиран и конфигуриран.
* Имате име на домейн за вашия уебсайт.
* Можете да се свържете с вашия сървър чрез SSH.

Стъпка 1: Инсталиране на необходимите пакети

За да инсталираме Let’s Encrypt, първо трябва да инсталираме няколко необходими пакета. Изпълнете следните команди в терминала:

bash
sudo apt update
sudo apt install certbot python3-certbot-nginx

Стъпка 2: Получаване на сертификат

След като инсталирате необходимите пакети, можете да използвате certbot за генериране на сертификат. Изпълнете следната команда, заменяйки your-domain.com с вашето фактическо име на домейн:

bash
sudo certbot --nginx -d your-domain.com -d www.your-domain.com

Това ще ви подкани за някои данни, включително имейл адрес и дали искате да подновите сертификата автоматично. След като въведете информацията, certbot ще изтегли и инсталира сертификата.

Стъпка 3: Конфигуриране на Nginx за HTTPS

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

bash
sudo nano /etc/nginx/sites-available/your-domain.com

Добавете следните директиви в блока за сървъра:


server {
listen 80;
server_name your-domain.com www.your-domain.com;

Пренасочване към HTTPS

return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
server_name your-domain.com www.your-domain.com;

SSL сертификат

ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

SSL настройки

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM:ECDHE-ECDSA-AES128-GCM:ECDHE-RSA-AES256-GCM:ECDHE-ECDSA-AES256-GCM:DHE-RSA-AES128-GCM:DHE-RSA-AES256-GCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-GCM:AES256-GCM:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS";
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

Премахване на HTTP/1.0

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Файлове за сайтове

root /var/www/your-domain.com/public_html;
index index.html index.php;
}

Забележка:

* your-domain.com е вашето домейн име.
* Препоръчваме да използвате HTTPS само за вашия сайт.
* За да деактивирате HTTP достъп, можете да коментирате секцията на listen 80 или да пренасочите всички HTTP заявки към HTTPS.

Стъпка 4: Рестартиране на Nginx

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

bash
sudo systemctl restart nginx

Също така може да проверите дали настройка на Nginx е успешна:

bash
sudo nginx -t

Стъпка 5: Проверка на сертификата

След като рестартирате Nginx, трябва да проверите дали HTTPS е активиран и сертификатът е инсталиран правилно. Можете да използвате браузър, за да се свържете с вашия сайт. Ако видите зелена катинарче символа в адресната лента, тогава всичко е настроено правилно.

Стъпка 6: Автоматично обновяване на сертификата

Сертификатите Let’s Encrypt имат срок на валидност от 90 дни. За да се избегнат проблеми, certbot предлага автоматично обновяване. Изпълнете следната команда, за да планирате автоматично обновяване:

bash
sudo certbot renew --dry-run

Това ще извърши пробен реню на сертификата, без да го записва в системата. Ако всичко е наред, можете да активирате автоматичното реню:

bash
sudo systemctl enable certbot

Допълнителни настройки

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


add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

* SSL лагери: За да подобрите сигурността, можете да активирате SSL лагери. Тези лагери криптират трафика между сървъра и браузъра, предотвратявайки подслушването.

Заключение

Защитата на вашия Nginx сървър с Let’s Encrypt е лесна и ефтивна. Чрез използването на HTTPS, вие защитвате данните на посетителите си и подобрявате сигурността на вашия уебсайт.

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

Често задавани въпроси (FAQ)

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

2. Защо Let’s Encrypt е безплатен? Let’s Encrypt е инициатива с нестопанска цел, която има за цел да направи HTTPS достъпен за всички. Тези усилия се подкрепят от организации като Mozilla Foundation, Google Foundation и Facebook.

3. Мога ли да използвам Let’s Encrypt за множество домейни? Да, certbot позволява да генерирате сертификати за множество домейни.

4. Как да подновя сертификата си? certbot автоматично обновява сертификатите, но можете също да го направите ръчно, като изпълните командата sudo certbot renew.

5. Какво се случва, ако сертификатът ми изтече? Ако сертификатът ви изтече, браузърите може да не могат да се свържат с вашия уебсайт.

6. Трябва ли да използвам HTTPS за localhost? HTTPS не се изисква за localhost, но може да бъде полезен за тестване на сигурността на вашия сайт.

7. Как да заключа сайта си с HTTPS? След като инсталирате сертификат, трябва да конфигурирате Nginx, за да използва HTTPS. Препоръчително е да деактивирате HTTP достъп, за да се уверите, че всички посетители се свързват само с HTTPS.

8. Как да активирам HSTS? HSTS се активира чрез добавяне на Strict-Transport-Security директива в конфигурационния файл на Nginx.

9. Как да проверя за уязвимости в системата си? Можете да използвате инструменти като SSLScan или sslyze , за да проверите за уязвимости в системата си.

10. Как да отстраня ошибките с HTTPS? Можете да проверите logs на Nginx за ошибки и да консултирате документация на Let’s Encrypt за помощ.

Забележка:

* Този урок е написан за Debian 11. Инструкциите може да се различават за други версии на Debian.
* Информацията в този урок е за образователни цели. Не носим отговорност за евентуални загуби, причинени от неправомерно използване на този урок.

Tags:

Nginx, Let’s Encrypt, Debian 11, HTTPS, SSL, сертификат, сигурност, уебсайт, криптиране, certbot, автоматично обновяване, HSTS, SSL лагери, FAQ, често задавани въпроси, настройка, инсталация, конфигурация, инструкции.