HTTPS для сайта на VPS – базовая гигиена: шифрование трафика, доверие посетителей и нормальная работа современных браузеров. Ниже – как бесплатно выпустить сертификат Let’s Encrypt через Certbot на Ubuntu с Apache или Nginx, включить редирект с HTTP и проверить автопродление.
Зачем SSL (TLS) сертификат
Сертификат подтверждает, что браузер общается с вашим сервером, и включает шифрование. На практике это даёт:
- шифрование между клиентом и сервером;
- замок в адресной строке и отсутствие предупреждений о «небезопасном соединении»;
- обязательное требование для многих API, форм логина и платёжных сценариев;
- плюс к SEO: поисковики давно отдают предпочтение HTTPS.
Формально сегодня говорят TLS, но в быту по-прежнему чаще «SSL-сертификат».
Что такое Let’s Encrypt
Let’s Encrypt – некоммерческий удостоверяющий центр. Сертификаты бесплатные, срок – 90 дней, выпуск и продление идут по протоколу ACME. На сервере обычно ставят клиент Certbot: он запрашивает сертификат, правит конфиг веб-сервера и ставит таймер на renew.
Что нужно заранее
- домен (и при желании www), A/AAAA-записи которого указывают на IP вашего VPS;
- SSH-доступ с sudo/root;
- работающий Apache или Nginx, который отвечает на 80-м порту с этого домена;
- открытые порты 80 и 443 в фаерволе.
Пока DNS не смотрит на сервер, HTTP-01 challenge от Let’s Encrypt не пройдёт.
Apache на Ubuntu
1. Установка Certbot
Обновляем индексы пакетов и ставим Certbot с плагином для Apache:
sudo apt update sudo apt install certbot python3-certbot-apache
2. Выпуск сертификата
sudo certbot --apache
Certbot спросит email, согласие с условиями и домен(ы). Дальше он сам поправит virtual host и предложит редирект HTTP → HTTPS. Обычно выбирают редирект (Yes), чтобы весь трафик шёл по защищённому каналу.
Если доменов несколько, можно явно указать:
sudo certbot --apache -d example.com -d www.example.com
3. Проверка
Откройте в браузере https://ваш-домен. Должен быть валидный сертификат без предупреждений. При ошибках смотрите лог:
sudo tail -n 100 /var/log/letsencrypt/letsencrypt.log
Дополнительно удобно прогнать домен через SSL Labs (ssllabs.com/ssltest) – там видно протоколы, цепочку и слабые места конфига.
Nginx на Ubuntu
1. Установка Certbot
sudo apt update sudo apt install certbot python3-certbot-nginx
2. Выпуск сертификата
Перед запуском конфиг Nginx должен успешно парситься (nginx -t), а server_name – совпадать с доменом:
sudo certbot --nginx
Или с явными именами:
sudo certbot --nginx -d example.com -d www.example.com
Плагин внесёт ssl_certificate / ssl_certificate_key и при согласии добавит редирект на HTTPS.
3. Проверка
Снова откройте https://ваш-домен. Если что-то пошло не так:
sudo tail -n 100 /var/log/letsencrypt/letsencrypt.log sudo nginx -t sudo systemctl status nginx
Автопродление
Сертификаты Let’s Encrypt живут 90 дней. Certbot обычно ставит systemd timer или cron, который запускает renew заранее. Проверка «вхолостую»:
sudo certbot renew --dry-run
Успешный dry-run означает, что продление отрабатывает без сюрпризов. Реальный renew Certbot делает сам; вручную достаточно только если ломаете конфиг или меняете DNS.
Усиление TLS для Nginx
После базового выпуска можно ужесточить протоколы и кэш сессий в server-блоке (пути к сертификатам Certbot уже пропишет сам):
ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384"; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_dhparam /etc/ssl/certs/dhparam.pem;
Файл DH-параметров (генерация может занять время):
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 sudo nginx -t && sudo systemctl reload nginx
Для продакшена чаще берут актуальные рекомендации Mozilla SSL Configuration Generator под вашу версию Nginx, а не копируют набор cipher раз и навсегда.
Типичные проблемы
- Challenge failed – DNS не на тот IP, закрыт порт 80, или другой сервис перехватывает HTTP.
- Wrong server_name – в конфиге Nginx/Apache указан другой хост, Certbot не знает, куда вписать SSL.
- Rate limit Let’s Encrypt – слишком много неудачных попыток; подождите или используйте staging / dry-run.
- Сайт за Cloudflare/прокси – режим SSL на стороне CDN должен быть согласован (Full / Full strict), иначе возможны циклы редиректов.
Краткий чеклист
- DNS A-запись на VPS, порты 80/443 открыты.
apt install certbot python3-certbot-apacheилиpython3-certbot-nginx.certbot --apacheилиcertbot --nginx, включить HTTPS-редирект.- Проверить сайт по https и
certbot renew --dry-run. - По желанию – ужесточить TLS и прогнать SSL Labs.
После этого сертификат живёт своей жизнью: Certbot обновляет его, веб-сервер подхватывает новые файлы. Остаётся не ломать server_name и не закрывать 80-й порт, если используете HTTP-01.

