В современном интернете HTTPS — это не роскошь, а обязательный стандарт безопасности и доверия. Если ваш сайт всё ещё работает по протоколу HTTP, вы не только рискуете данными пользователей, но и теряете позиции в поисковых системах. К счастью, получить бесплатный, автоматически обновляемый SSL-сертификат от Let's Encrypt для веб-сервера Nginx проще, чем кажется. Этот подробный гид проведёт вас через весь процесс шаг за шагом.
Что такое Let's Encrypt и почему это лучший выбор?
Let's Encrypt — это некоммерческий центр сертификации, который предоставляет SSL/TLS-сертификаты абсолютно бесплатно. Его миссия — сделать интернет безопаснее, упростив процесс шифрования соединений. Сертификаты Let's Encrypt действительны 90 дней, но процесс их обновления можно полностью автоматизировать.
Важно: Для получения сертификата Let's Encrypt ваш домен должен быть привязан к публичному IP-адресу сервера, а на сервере должны быть открыты порты 80 (HTTP) и/или 443 (HTTPS) для прохождения проверки.
Подготовка сервера и установка необходимых инструментов
Прежде всего, убедитесь, что у вас есть доступ к серверу с установленным Nginx и правами суперпользователя (root или через sudo). Процесс описан для систем на базе Debian/Ubuntu, но для CentOS/RHEL он будет аналогичным с заменой менеджера пакетов.
Шаг 1: Установка клиента Certbot
Certbot — это официальный клиент для автоматического получения и обновления сертификатов от Let's Encrypt. Установите его:
- Обновите список пакетов:
sudo apt update - Установите сам Certbot и плагин для Nginx:
sudo apt install certbot python3-certbot-nginx
Шаг 2: Проверка конфигурации Nginx
Убедитесь, что для вашего домена уже есть настроенный виртуальный хост (server block) в Nginx. В файле конфигурации (обычно в /etc/nginx/sites-available/ваш_сайт) должна быть корректно указана директива server_name с вашим доменным именем.
Получение и установка SSL-сертификата
Шаг 3: Запуск Certbot
Выполните команду, которая запустит интерактивный мастер:
sudo certbot --nginx
Certbot автоматически обнаружит домены из конфигурации Nginx, проведёт проверку владения доменом (через временный файл на веб-сервере) и выдаст сертификат. В процессе вас спросят:
- Для каких доменов активировать HTTPS (обычно выбирайте все).
- Сделать ли автоматический редирект с HTTP на HTTPS (настоятельно рекомендуется выбрать вариант 2 — «Redirect»).
Совет: Если у вас несколько доменов или субдоменов, вы можете получить один сертификат, покрывающий их все, используя флаг -d несколько раз: sudo certbot --nginx -d example.com -d www.example.com -d shop.example.com
Шаг 4: Проверка работы HTTPS
После успешного выполнения откройте ваш сайт по адресу https://ваш_домен. В адресной строке браузера должен появиться значок замка. Конфигурационный файл Nginx будет автоматически обновлён: добавятся директивы для прослушивания порта 443, пути к сертификату и ключу.
Автоматическое обновление сертификатов
Сертификаты Let's Encrypt действительны 90 дней. Certbot автоматически добавляет задание в cron или systemd timer для их обновления. Проверить статус автоматического обновления можно командой:
sudo systemctl status certbot.timer
Вы также можете вручную проверить возможность обновления и выполнить его тестовый запуск (без сохранения новых сертификатов):
sudo certbot renew --dry-run
Если тест проходит успешно, значит, автоматическое обновление настроено корректно.
Ручная настройка (продвинутый вариант)
В некоторых случаях (например, при использовании Docker или нестандартной конфигурации) может потребоваться получить сертификат без автоматического изменения конфигов Nginx. Используйте плагин certonly:
sudo certbot certonly --nginx
После этого вам нужно будет вручную добавить в конфигурацию Nginx в блоке server для порта 443 следующие директивы:
ssl_certificate /etc/letsencrypt/live/ваш_домен/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ваш_домен/privkey.pem;
Частые проблемы и их решение
- Ошибка с портами: Убедитесь, что брандмауэр не блокирует порты 80 и 443. Для проверки можно использовать
sudo netstat -tulpn | grep :80. - Слишком много запросов: Let's Encrypt имеет лимиты на выдачу сертификатов для одного домена в неделю. Если вы экспериментировали, дождитесь сброса лимита.
- Проблемы с DNS: Убедитесь, что DNS-записи вашего домена (A-запись) указывают на правильный IP-адрес сервера. Изменения в DNS могут распространяться до 48 часов.
FAQ — Часто задаваемые вопросы
Это действительно бесплатно?
Да, сертификаты Let's Encrypt абсолютно бесплатны и не требуют продления за деньги. Платить не нужно ни сейчас, ни в будущем.
Подходит ли такой сертификат для коммерческого сайта?
Да, полностью. Он обеспечивает такое же шифрование, как и платные сертификаты. Единственное отличие — это Domain Validation (DV) уровень, который подтверждает только владение доменом. Для большинства сайтов этого более чем достаточно.
Что будет, если сертификат просрочится и не обновится?
Посетители увидят в браузере серьёзное предупреждение о безопасности, что подорвёт доверие и, скорее всего, приведёт к уходу с сайта. Поэтому так важна настройка автоматического обновления.
Можно ли получить сертификат для IP-адреса, а не домена?
Нет, Let's Encrypt выдаёт сертификаты только для доменных имён.
Работает ли с локальными (localhost) или внутренними доменами?
Нет, домен должен быть публично доступен в интернете для прохождения проверки Let's Encrypt. Для локального использования можно сгенерировать самоподписанный сертификат.