Как да защитите Nginx с Let’s Encrypt SSL на Ubuntu (Пълно ръководство за 2025)
HTTPS вече не е опционално. През 2025 г. всеки уебсайт се нуждае от SSL/TLS криптиране — не само за защита на данните на потребителите, но и за конкурентно класиране в Google Search и за задоволяване на съвременните изисквания за сигурност на браузъра. Let’s Encrypt прави това постижимо безплатно, предлагайки надежни, автоматично подновяващи се SSL сертификати, които работят безпроблемно с Nginx на Ubuntu.
Това всеобхватно ръководство ви преведе през всяка стъпка: инсталиране на Certbot, получаване на SSL сертификат от Let’s Encrypt, проверка на вашата конфигурация и автоматизиране на подновяванията — всичко на Ubuntu 18.04, 20.04 или 22.04 сървър, работещ с Nginx.
Независимо дали управлявате VPS Hosting среда или посветен уебсървър, това ръководство ви дава готина за производство HTTPS конфигурация за под 15 минути.
Защо SSL е важен за Nginx през 2025 г.
Преди да се потопим в командите, си струва да разберете точно какво печелите, като защитите Nginx с Let's Encrypt:
- Криптиране на данни: HTTPS криптира целия трафик между вашия сървър и посетителите, предотвратявайки атаки от посредници и подслушване.
- Сигнали за SEO класиране: Google потвърди HTTPS като фактор за класиране. Сайтовете без SSL активно се наказват в резултатите от търсенето.
- Индикатори за доверие на браузъра: Chrome, Firefox и Edge показват предупреждения "Не е защитено" за HTTP сайтове, което унищожава доверието на потребителите и увеличава процента на отскоци.
- Безплатно и автоматизирано: Let's Encrypt издава сертификати без никакви разходи, а Certbot обработва подновяванията автоматично — елиминирайки ръчния режим на платени сертификати.
- PCI DSS и съответствие: Всеки сайт, който обработва плащания или лични данни, е законно задължен да използва криптирани връзки.
Ако вашият домейн вече е регистриран и сочи към вашия сървър, сте готови да начнете. Ако все още имате нужда от домейн, AlexHost предлага достъпна Регистрация на домейни с мигновено управление на DNS.
Предварителни условия
Уверете се, че следните условия са изпълнени преди да продължите:
| Изискване | Детайли |
|---|---|
| Операционна система | Ubuntu 18.04, 20.04 или 22.04 LTS |
| Уеб сървър | Nginx инсталиран и активно обслужващ вашия сайт |
| Доменно име | Регистрирано доменно име с A запис, сочещ към публичния IP адрес на вашия сървър |
| Достъп до сървър | SSH достъп с потребител, който има sudo привилегии |
| Firewall | Портове 80 (HTTP) и 443 (HTTPS) отворени в UFW или iptables |
| Root достъп | Не е строго необходим, но sudo достъпът е задължителен |
Проверете дали Nginx работи
Преди инсталирането на Certbot, потвърдете, че Nginx е активен:
sudo systemctl status nginxТрябва да видите active (running) в резултата. Ако Nginx не е инсталиран, изпълнете:
sudo apt update && sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginxОтворете необходимите портове на Firewall
Ако UFW е активиран, разрешете HTTP и HTTPS трафик:
sudo ufw allow 'Nginx Full'
sudo ufw reload
sudo ufw statusРезултатът трябва да показва Nginx Full като ALLOW за IPv4 и IPv6.
Стъпка 1 — Инсталиране на Certbot и Nginx плъгина
Certbot е официалният Let’s Encrypt клиент. Той автоматизира целия жизнен цикъл на сертификата: издаване, инсталиране и подновяване. Плъгинът python3-certbot-nginx позволява на Certbot да чете вашата Nginx конфигурация и да я модифицира автоматично.
Актуализирайте индекса на вашите пакети
Винаги актуализирайте списъците си с пакети преди инсталиране на нов софтуер:
sudo apt update
sudo apt upgrade -yИнсталирайте Certbot с Nginx плъгина
sudo apt install certbot python3-certbot-nginx -yПроверете инсталацията
certbot --versionОчаквана продукция (версията може да варира):
certbot 2.x.x> Забележка за потребители на Ubuntu 18.04: Ако версията на Certbot по подразбиране на APT е остаряла, инсталирайте чрез Snap за най-новото издание:
> “`bash
> sudo snap install –classic certbot
> sudo ln -s /snap/bin/certbot /usr/bin/certbot
> “`
Стъпка 2 — Конфигуриране на вашия Nginx Server Block
Certbot трябва да открие вашия домейн в конфигурацията на Nginx, за да го модифицира автоматично. Ако още не сте създали server block за вашия домейн, направете го сега.
Създаване на Server Block
Заменете yourdomain.com с вашето действително име на домейн в целия этот guide:
sudo nano /etc/nginx/sites-available/yourdomain.comДобавете следната основна конфигурация:
server {
listen 80;
listen [::]:80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com/html;
index index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
}Активиране на Server Block
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/Тестване на конфигурацията на Nginx
Винаги валидирайте вашата Nginx конфигурация преди презареждане:
sudo nginx -tОчакван резултат:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulПрезареждане на Nginx
sudo systemctl reload nginxСтъпка 3 — Получаване на Let’s Encrypt SSL сертификат
С конфигурирания Nginx и инсталирания Certbot, вече можете да поискате вашия SSL сертификат.
Стартирайте Certbot с плъгина Nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comОбяснение на флаговете:
--nginx — Казва на Certbot да използва плъгина Nginx за автоматична конфигурация
-d yourdomain.com — Указва основния домейн
-d www.yourdomain.com — Добавя поддомейна www към същия сертификат (Subject Alternative Name)
Обяснение на интерактивните подсказки
Certbot ще ви преведе през кратък чаробник за настройка:
1. Имейл адрес
Enter email address (used for urgent renewal and security notices):
Предоставете валиден имейл. Let’s Encrypt го използва, за да ви уведоми за изтичащи сертификати и проблеми със сигурността.
2. Условия на услугата
Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf
(A)gree/(C)ancel:
Напишете A и натиснете Enter.
3. Бюлетин на EFF (по избор)
Would you be willing to share your email address with the Electronic Frontier Foundation?
(Y)es/(N)o:
Това е по избор. Напишете N ако предпочитате да не се абонирате.
4. Пренасочване от HTTP към HTTPS
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
1: No redirect
2: Redirect - Make all requests redirect to secure HTTPS access
Винаги изберете опция 2. Това гарантира, че всички посетители се преобразуват автоматично към HTTPS, елиминирайки проблемите със смесено съдържание и подобрявайки позицията на сигурност.
Успешен резултат
Ако всичко е конфигурирано правилно, ще видите:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/yourdomain.com/privkey.pem
This certificate expires on YYYY-MM-DD.
These files will be updated when the certificate renews.
Deploying certificate
Successfully deployed certificate for yourdomain.com to /etc/nginx/sites-available/yourdomain.com
Successfully deployed certificate for www.yourdomain.com to /etc/nginx/sites-available/yourdomain.com
Congratulations! You have successfully enabled HTTPS on https://yourdomain.com and https://www.yourdomain.com
Какво Certbot модифицира в Nginx
След стартирането, Certbot автоматично добавя SSL директиви към вашия блок сървър. Вашата конфигурация сега ще изглежда подобно на това:
server {
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = www.yourdomain.com) {
return 301 https://$host$request_uri;
}
if ($host = yourdomain.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 404;
}
Стъпка 4 — Проверка на SSL инсталацията
След завършване на Certbot, проверете дали SSL сертификатът е правилно инсталиран и функционира.
Метод 1: Проверка в браузъра
Отворете вашия уеб браузър и отидете на https://yourdomain.com. Потърсете:
Икона на катинар в адресната лента — потвърждава активна, надеждна SSL връзка
Без предупреждения за безопасност — сертификатът е валиден и надежден от вашия браузър
HTTPS в URL адреса — HTTP заявките трябва автоматично да се пренасочат към HTTPS
Кликнете на икона на катинара и изберете „Сертификат”, за да видите издателя (трябва да показва „Let’s Encrypt”) и датата на изтичане.
Метод 2: Дълбока анализа на SSL Labs
За цялостен одит на безопасността използвайте Qualys SSL Labs:
Отидете на https://www.ssllabs.com/ssltest/Правилно конфигурирана Let’s Encrypt + Nginx настройка трябва да получи оценка A или A+. Ако получите по-ниска оценка, SSL Labs ще идентифицира конкретните слабости, които трябва да адресирате.
Метод 3: Проверка от командния ред
Проверете детайлите на сертификата директно от терминала:
sudo certbot certificatesРезултат:
Found the following certs:
Certificate Name: yourdomain.com
Serial Number: abc123...
Key Type: RSA
Domains: yourdomain.com www.yourdomain.com
Expiry Date: YYYY-MM-DD HH:MM:SS+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/yourdomain.com/privkey.pemМетод 4: OpenSSL команда
Проверете верижката на сертификата и срока на валидност с помощта на OpenSSL:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates -issuerОчакван резултат:
notBefore=Mon Jan 1 00:00:00 2025 GMT
notAfter=Tue Apr 1 00:00:00 2025 GMT
issuer=C=US, O=Let's Encrypt, CN=R11Стъпка 5 — Настройка на автоматично обновяване на сертификати
Сертификатите на Let's Encrypt изтичат след 90 дни. Този кратък период на валидност е намерен — той ограничава експозицията, ако частният ключ е компрометиран. Certbot обработва обновяванията автоматично, но трябва да проверите дали автоматизацията работи правилно.
Как работи обновяването на Certbot
Когато инсталирате Certbot чрез APT или Snap, той автоматично създава systemd timer (или cron job на по-старите системи), който се изпълнява два пъти дневно. Той проверява дали някой сертификат е в рамките на 30 дни от изтичането и ги обновява автоматично.
Проверка на Systemd Timer
sudo systemctl status certbot.timerОчакван резултат:
● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since ...
Trigger: ...
Triggers: ● certbot.serviceАко таймерът е активен и включен, автоматичното обновяване вече е конфигурирано.
Тестване на процеса на обновяване (Dry Run)
Преди да разчитате на автоматично обновяване, симулирайте го, за да потвърдите, че всичко работи:
sudo certbot renew --dry-runУспешен резултат:
Simulating renewal of an existing certificate for yourdomain.com and www.yourdomain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/yourdomain.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Ако dry run успее, вашите сертификати ще се обновят автоматично без никакво ръчно вмешателство.
Проверка на Cron Job (Наследени системи)
На по-старите версии на Ubuntu, които не използват systemd timers, проверете за Certbot cron job:
sudo cat /etc/cron.d/certbotТрябва да видите ред, подобен на:
0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renewТова изпълнява Certbot два пъти дневно в случайни интервали, за да избегне претоварване на Let's Encrypt сървърите.
Ръчно обновяване (Ако е необходимо)
Ако някога трябва да принудите ръчно обновяване:
sudo certbot renew --force-renewal
sudo systemctl reload nginx> Добра практика: След всяко обновяване на сертификат (ръчно или автоматично), презаредете Nginx, за да се уверите, че той подхваща новите файлове на сертификата:
> “`bash
> sudo systemctl reload nginx
> “`
> Куките за обновяване на Certbot обработват това автоматично в повечето конфигурации.
Конфигуриране на куки за обновяване
За да се уверите, че Nginx се презарежда автоматично след всяко обновяване, добавете deploy hook:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shДобавете следното съдържание:
#!/bin/bash
systemctl reload nginxНаправете го изпълним:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shОтстраняване на често срещани проблеми
Грешка: "Could not bind to IPv4/IPv6"
Certbot използва порт 80 за валидиране на домена. Ако друг процес използва порт 80, проверката ще се провали.
Решение: Временно спрете Nginx, получете сертификата в самостоятелен режим, след това рестартирайте:
sudo systemctl stop nginx
sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
sudo systemctl start nginxГрешка: "DNS problem: NXDOMAIN looking up A for yourdomain.com"
DNS записите на вашия домен все още не се разпространяват към валидационните сървъри на Let's Encrypt.
Решение: Проверете дали вашият A запис е правилно зададен:
dig yourdomain.com A +shortРезултатът трябва да върне публичния IP адрес на вашия сървър. Разпространението на DNS може да отнеме до 48 часа, въпреки че обикновено се разрешава в рамките на 1–2 часа.
Грешка: "Too many certificates already issued"
Let's Encrypt налага ограничение на честотата от 5 дублирани сертификата в седмица на домен.
Решение: Използвайте флага --staging за тестване на вашата конфигурация без попадане в ограничения на честотата:
sudo certbot --nginx --staging -d yourdomain.com -d www.yourdomain.comСлед завършване на тестването отменете сертификата на етап и издайте производствен.
Грешка: "Nginx configuration test failed"
Certbot модифицира вашата Nginx конфигурация. Ако получената конфигурация има синтактични грешки, Nginx няма да се презареди.
Решение: Ръчно тестирайте и поправете конфигурацията:
sudo nginx -t
sudo nano /etc/nginx/sites-available/yourdomain.com
# Fix any syntax errors, then:
sudo systemctl reload nginxСертификатът не се обновява автоматично
Ако получавате имейли с предупреждение за изтичане въпреки че имате инсталиран Certbot, проверете статуса на таймера:
sudo systemctl status certbot.timer
sudo journalctl -u certbot.service --since "7 days ago"Прегледайте дневниците за грешки и адресирайте ги съответно.
Напредък: Укрепване на вашата Nginx SSL конфигурация
Конфигурацията по подразбиране на Let’s Encrypt + Certbot е безопасна, но можете да я укрепите допълнително за оценка A+ в SSL Labs.
Активиране на HTTP/2
Редактирайте вашия server block, за да активирате HTTP/2 за подобрена производителност:
listen 443 ssl http2;
listen [::]:443 ssl http2;Добавяне на HSTS (HTTP Strict Transport Security)
HSTS инструктира браузърите да винаги използват HTTPS за вашия домейн, дори ако потребител въведе http://:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;Деактивиране на слабите протоколи и шифри
Добавете тези директиви към вашия nginx.conf или server block:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;След направата на промени, винаги тестирайте и презаредете:
sudo nginx -t && sudo systemctl reload nginxИзбор на правилния хостинг за вашата Nginx + SSL конфигурация
Производителността и надеждността на вашия SSL-защитен Nginx сервър зависят в голяма степен от основната инфраструктура. Ето как опциите за хостинг на AlexHost се съответстват с различни случаи на употреба:
- VPS Хостинг — Идеален за повечето уебсайтове и приложения. Пълният root достъп ви позволява да конфигурирате Nginx и Certbot точно както е описано в това ръководство. AlexHost VPS планове работят на Ubuntu 18.04, 20.04 и 22.04 LTS.
- Dedicated Servers — Най-добре за уебсайтове с висок трафик, които изискват максимална производителност, посветени ресурси и пълен контрол на хардуера. Стартирайте множество Nginx виртуални хостове, всеки със собствен Let's Encrypt сертификат.
- VPS с cPanel — Ако предпочитате графичен интерфейс за управление на SSL сертификати наред с вашия уеб хостинг, cPanel се интегрира с Let's Encrypt и обработва издаването на сертификати чрез своята AutoSSL функция.
- SSL Сертификати — За корпоративни среди, уеб магазини или приложения, които изискват разширена валидация (EV) или валидация на организацията (OV) сертификати, AlexHost предлага премиум SSL сертификати с гарантийно покритие и посветена поддръжка.
Заключение
Защитата на Nginx с SSL сертификат от Let’s Encrypt на Ubuntu е един от най-важните стъпки, които можете да предприемете, за да защитите своите потребители, подобрите класирането си в търсачките и изградите доверие с вашата аудитория. Целият процес — от инсталирането на Certbot до активирането на автоматични подновявания — отнема по-малко от 15 минути и не струва нищо.
За да обобщим какво сте постигнали в това ръководство:
- ✅ Инсталирахте Certbot и плъгина за Nginx
- ✅ Конфигурирахте правилен Nginx server block за вашия домейн
- ✅ Получихте доверен SSL сертификат от Let’s Encrypt
- ✅ Проверихте сертификата с помощта на инструменти на браузъра, SSL Labs и OpenSSL
- ✅ Потвърдихте автоматичното подновяване чрез systemd timer и тестване на сухо изпълнение
- ✅ Приложихте разширено закаляване за рейтинг A+ по сигурност
С вашия Nginx сървър вече защитен, помислете да изследвате допълнителни слоеве на защита: Web Application Firewall (WAF), fail2ban за защита от brute-force атаки и редовни одити на сигурността. Ако управлявате множество домейни или приложения, VPS Control Panels на AlexHost предоставят опростен интерфейс за управление на SSL сертификати, виртуални хостове и конфигурации на сървъра без да жертвате гъвкавостта на Linux среда.
Вашите потребители заслужават защитена връзка. Сега имат една.
от всички хостинг услуги