Спестете 15% от всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код: Skills За начало
Заглавия
Linux Защита

Как да защитите 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 минути и не струва нищо.

    За да обобщим какво сте постигнали в това ръководство:

    1. ✅ Инсталирахте Certbot и плъгина за Nginx
    2. ✅ Конфигурирахте правилен Nginx server block за вашия домейн
    3. ✅ Получихте доверен SSL сертификат от Let’s Encrypt
    4. ✅ Проверихте сертификата с помощта на инструменти на браузъра, SSL Labs и OpenSSL
    5. ✅ Потвърдихте автоматичното подновяване чрез systemd timer и тестване на сухо изпълнение
    6. ✅ Приложихте разширено закаляване за рейтинг A+ по сигурност

    С вашия Nginx сървър вече защитен, помислете да изследвате допълнителни слоеве на защита: Web Application Firewall (WAF), fail2ban за защита от brute-force атаки и редовни одити на сигурността. Ако управлявате множество домейни или приложения, VPS Control Panels на AlexHost предоставят опростен интерфейс за управление на SSL сертификати, виртуални хостове и конфигурации на сървъра без да жертвате гъвкавостта на Linux среда.

    Вашите потребители заслужават защитена връзка. Сега имат една.