В современном интернете HTTPS — это не роскошь, а обязательный стандарт безопасности. Если ваш сайт до сих пор работает по протоколу HTTP, браузеры помечают его как «небезопасный», что отпугивает посетителей и негативно влияет на SEO. К счастью, сегодня любой владелец сайта может абсолютно бесплатно получить доверенный 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) для прохождения проверки.
Подготовка сервера и установка Certbot
Перед началом убедитесь, что у вас есть:
- Сервер с установленным Nginx (работающий и настроенный для вашего домена).
- Доступ к командной строке с правами суперпользователя (sudo или root).
- Зарегистрированное доменное имя, указывающее на IP-адрес вашего сервера.
Шаг 1: Установка менеджера Certbot
Certbot — это официальный клиент от Let's Encrypt, который автоматизирует получение и обновление сертификатов. Установка зависит от вашей операционной системы.
Для Ubuntu/Debian:
- Обновите список пакетов:
sudo apt update - Установите Certbot и плагин для Nginx:
sudo apt install certbot python3-certbot-nginx
Для CentOS/RHEL:
- Включите EPEL-репозиторий:
sudo yum install epel-release - Установите Certbot:
sudo yum install certbot python3-certbot-nginx
Получение и установка SSL-сертификата
Шаг 2: Автоматическое получение сертификата с помощью Certbot
Самый простой способ — позволить Certbot автоматически изменить конфигурацию Nginx. Выполните команду:
sudo certbot --nginx -d ваш-домен.ru -d www.ваш-домен.ru
Certbot запросит ваш email для уведомлений, предложит согласиться с условиями и спросит, хотите ли вы перенаправлять весь HTTP-трафик на HTTPS (рекомендуется выбрать вариант 2 — перенаправление). После этого он автоматически получит сертификат, настроит файлы конфигурации Nginx и перезагрузит сервер.
Совет: Если у вас несколько доменов или поддоменов, перечислите их все через флаг -d, например: -d site.ru -d www.site.ru -d shop.site.ru.
Шаг 3: Ручная настройка (продвинутый вариант)
Если вы хотите больше контроля, можно получить сертификат без автоматического изменения конфиг-файлов Nginx:
sudo certbot certonly --nginx -d ваш-домен.ru
Сертификаты будут сохранены в /etc/letsencrypt/live/ваш-домен.ru/. Затем вам нужно вручную отредактировать конфигурационный файл вашего сайта в Nginx (обычно /etc/nginx/sites-available/ваш-сайт).
Настройка Nginx для работы с HTTPS
Вот пример базовой конфигурации сервера для работы с HTTPS:
server {
listen 443 ssl http2;
server_name ваш-домен.ru www.ваш-домен.ru;
ssl_certificate /etc/letsencrypt/live/ваш-домен.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ваш-домен.ru/privkey.pem;
# Рекомендуемые настройки безопасности SSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# Остальная конфигурация вашего сайта
root /var/www/ваш-сайт/html;
index index.html index.htm;
...
}
# Перенаправление HTTP на HTTPS
server {
listen 80;
server_name ваш-домен.ru www.ваш-домен.ru;
return 301 https://$server_name$request_uri;
}
После внесения изменений проверьте конфигурацию: sudo nginx -t. Если ошибок нет, перезагрузите Nginx: sudo systemctl reload nginx.
Автоматическое обновление сертификатов
Сертификаты Let's Encrypt действуют 90 дней. Certbot может автоматически обновлять их. Проверить статус можно командой: sudo certbot renew --dry-run. Для автоматического обновления добавьте задание в cron. Откройте crontab: sudo crontab -e и добавьте строку:
0 12 * * * /usr/bin/certbot renew --quiet
Эта команда будет запускаться ежедневно в 12:00 и обновлять сертификаты, срок действия которых истекает менее чем через 30 дней.
Важный факт: Let's Encrypt имеет лимиты на количество запросов сертификатов для одного домена (50 в неделю). Не запускайте процесс обновления слишком часто в скриптах.
Проверка и устранение неполадок
После настройки проверьте работу HTTPS:
- Откройте сайт в браузере по адресу https://ваш-домен.ru. Должен появиться значок замка.
- Используйте онлайн-инструменты для проверки SSL: SSL Labs (SSL Test) или Why No Padlock?.
- Проверьте логи Nginx:
sudo tail -f /var/log/nginx/error.log. - Убедитесь, что в брандмауэре открыт порт 443:
sudo ufw status(если используете UFW).
FAQ: Часто задаваемые вопросы
Нужно ли платить за SSL-сертификат Let's Encrypt?
Нет, Let's Encrypt предоставляет сертификаты совершенно бесплатно. Это их основная миссия.
Как часто нужно обновлять сертификат?
Сертификат действителен 90 дней. Рекомендуется настроить автоматическое обновление через cron, как показано в руководстве.
Можно ли получить сертификат для локального сервера (localhost)?
Нет, Let's Encrypt выдает сертификаты только для доменов, доступных из публичного интернета, так как проводит проверку владения доменом.
Что делать, если Certbot выдает ошибку "Failed authorization procedure"?
Эта ошибка означает, что Let's Encrypt не смог проверить ваш домен. Убедитесь, что домен указывает на правильный IP-адрес сервера, порты 80 и/или 443 открыты, и на сервере работает Nginx.
Поддерживает ли Let's Encrypt wildcard-сертификаты (для всех поддоменов)?
Да, начиная с 2018 года Let's Encrypt выдает wildcard-сертификаты. Для их получения нужно использовать аутентификацию через DNS, а не через HTTP. Команда: sudo certbot certonly --manual --preferred-challenges=dns -d *.ваш-домен.ru -d ваш-домен.ru.
Влияет ли HTTPS на скорость сайта?
Современные технологии (TLS 1.3, HTTP/2) минимизируют накладные расходы. В большинстве случаев преимущества безопасности и SEO перевешивают минимальное влияние на производительность.