Цель статьи — показать‚ как абсолютно бесплатно получить‚ установить и автоматически продлевать SSL/TLS-сертификат от Let’s Encrypt для веб-сервера Nginx в Ubuntu 20.04. По итогу ваш сайт будет открываться по защищённому протоколу HTTPS без брачных предупреждений браузера.
Что такое Let’s Encrypt и зачем он нужен
Let’s Encrypt — некоммерческий центр сертификации‚ который выдаёт бесплатные сертификаты X.509.
Преимущества:
- Криптография 2048-бит RSA или ECDSA (безопасность на уровне платных решений);
- Полная автоматизация благодаря утилите Certbot;
- Сертификат действует 90 дней‚ но продляется автоматически;
- Доверен всеми современными браузерами и ОС.
Что потребуется для работы
- Сервер на Ubuntu 20.04 (достаточно самого дешёвого VPS);
- Nginx уже установлен и запущен;
- Доменное имя (example.com) с настроенными DNS-записями A на IP вашего сервера:
example.com → 203.0.113.10www.example.com → 203.0.113.10- Права sudo на сервере.
Шаг 0: Проверьте исходную конфигурацию Nginx
Убедитесь‚ что в конфиге вашего сайта есть директива server_name с вашим доменом:
sudo nano /etc/nginx/sites-available/example.com Должна присутствовать строка:
server_name example.com www;example.com; Сохраните файл и проверьте синтаксис:
sudo nginx -t
sudo systemctl reload nginx Шаг 1: Установка Certbot и плагина Nginx
Обновите список пакетов и установите клиент:
sudo apt update
sudo apt install certbot python3-certbot-nginx -y Шаг 2: Откройте порты HTTPS в UFW
Если у вас активен ufw‚ разрешите трафик:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP' Убедитесь‚ что статус выглядит так:
sudo ufw status - OpenSSH ALLOW
- Nginx Full ALLOW
Шаг 3: Запуск Certbot и выдача сертификата
Выполните команду‚ указав ваши домены:
sudo certbot --nginx -d example.com -d www.example.com Certbot:
- попросит e-mail для уведомлений;
- предложит принять условия Let’s Encrypt;
- предложит выбор:
- 1, не перенаправлять HTTP-запросы;
- 2 — перенаправлять всё на HTTPS (выберите 2).
После успешного завершения вы увидите:
Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem
Шаг 4: Проверка результата
- Откройте браузер и перейдите по
https://example.com; - Должен быть показан зелёный замок и надпись Connection is secure;
- Проверьте оценку на SSL Labs — минимум A.
Шаг 5: Настройка автоматического продления
Сертификаты действуют 90 дней‚ но systemd-таймер уже добавлен:
sudo systemctl status certbot.timer Запускается дважды в день и продлит сертификаты‚ когда до конца срока останется ≤30 дней.
Ручная проверка (вхолостую):
sudo certbot renew --dry-run Если вывод без ошибок, всё работает.
Шаг 6: Дополнительные советы и частые ошибки
Как отозвать сертификат
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/fullchain.pem Не забудьте AAAA-записи IPv6
Если у вас IPv6-адрес‚ добавьте AAAA-записи‚ иначе Certbot не сможет валидировать домен.
Ошибка «Failed authorization»
- DNS ещё не обновился (подождите 5-15 минут);
- В
server_nameуказан не тот домен; - Файл конфигурации Nginx не загружен (пропустили
reload).
За считанные минуты мы получили:
- бесплатный SSL-сертификат;
- автоматическое продление;
- перенаправление HTTP → HTTPS;
- оценку A на SSL Labs.
Теперь ваш сайт защищён‚ и вы можете спокойно развивать проект без затрат на коммерческие сертификаты!