В современном интернете HTTPS — это не роскошь, а обязательный стандарт безопасности и доверия. Если ваш сайт до сих пор работает по HTTP, вы не только рискуете данными пользователей, но и теряете позиции в поисковых системах. К счастью, получить бесплатный, автоматически обновляемый SSL-сертификат от авторитетного центра Let's Encrypt для веб-сервера Nginx — проще, чем кажется. Этот подробный гид проведёт вас через весь процесс шаг за шагом.
Что такое Let's Encrypt и почему он идеален?
Let's Encrypt — это некоммерческий центр сертификации, который предоставляет SSL/TLS-сертификаты абсолютно бесплатно в автоматизированном режиме. Его миссия — сделать защищённое соединение стандартом для всего интернета. Сертификаты Let's Encrypt действительны 90 дней, но процесс обновления полностью автоматизирован, что избавляет от головной боли ручного продления.
Важно: Для получения сертификата ваш домен должен быть привязан к публичному IP-адресу сервера, и на сервере должны быть открыты порты 80 (HTTP) и/или 443 (HTTPS) для прохождения проверки.
Подготовка сервера и установка Certbot
Перед началом убедитесь, что у вас есть:
- Сервер с установленным и работающим Nginx.
- Доступ с правами root или через sudo.
- Зарегистрированный домен, указывающий (A-запись) на IP-адрес вашего сервера.
Шаг 1: Установка менеджера Certbot
Certbot — это официальный клиент от Let's Encrypt, который максимально упрощает процесс. Установка зависит от вашей операционной системы. Для Ubuntu/Debian выполните в терминале:
sudo apt updatesudo apt install certbot python3-certbot-nginx
Плагин python3-certbot-nginx позволяет Certbot автоматически изменять конфигурацию Nginx.
Получение и установка SSL-сертификата
Шаг 2: Запуск Certbot для Nginx
Выполните команду, указав ваш домен:
sudo certbot --nginx -d ваш-домен.ru -d www.ваш-домен.ru
Certbot запустит интерактивный мастер, который:
- Проверит контроль над доменом (через временный файл на веб-сервере).
- Сгенерирует и установит сертификат.
- Предложит настроить автоматическое перенаправление HTTP -> HTTPS (рекомендуется выбрать вариант 2 — «Redirect»).
- Запросит email для уведомлений об истечении срока и важных новостях.
Certbot автоматически обновит конфигурационный файл вашего сайта в /etc/nginx/sites-available/, добавив директивы для SSL и перенаправления.
Шаг 3: Проверка конфигурации и перезагрузка Nginx
Всегда проверяйте синтаксис конфигурации Nginx перед применением изменений:
sudo nginx -t
Если проверка прошла успешно, перезагрузите Nginx:
sudo systemctl reload nginx
Теперь ваш сайт должен быть доступен по защищённому протоколу HTTPS!
Автоматическое обновление сертификатов
Ключевое преимущество Let's Encrypt — автоматизация. Certbot сам позаботится о продлении. Вы можете проверить статус таймера автоматического обновления:
sudo systemctl status certbot.timer
Также можно вручную протестировать процесс обновления без реального применения изменений:
sudo certbot renew --dry-run
Если тест проходит успешно, значит, автоматическое обновление настроено корректно.
FAQ: Часто задаваемые вопросы
Нужен ли отдельный сертификат для поддомена www?
Нет. В команде вы можете указать несколько доменов через флаг -d (как в примере выше), и Certbot создаст один сертификат, покрывающий оба имени (SAN-сертификат).
Что делать, если порт 80 занят или закрыт?
Certbot может использовать проверку через порт 443 (метод TLS-ALPN-01). Для этого используйте плагин --standalone с флагом --preferred-challenges tls-alpn-01. При этом Nginx на время выдачи сертификата нужно будет остановить.
Где хранятся файлы сертификата?
Let's Encrypt хранит сертификаты и ключи в /etc/letsencrypt/live/ваш-домен.ru/. Основные файлы: fullchain.pem (сертификат + цепочка доверия) и privkey.pem (приватный ключ). Никогда не делитесь приватным ключом!
Работает ли Let's Encrypt на локальном сервере (localhost)?
Нет, Let's Encrypt выдаёт сертификаты только для доменов, доступных из публичного интернета, так как требуется подтверждение владения через HTTP/HTTPS запрос.
Можно ли использовать один сертификат для нескольких разных сайтов на одном сервере?
Да, можно. При запуске Certbot просто перечислите все домены через флаги -d. Однако помните о лимите: Let's Encrypt имеет ограничение на количество выпущенных сертификатов для одного домена в неделю.