Настройка HTTPS на домене через Let's Encrypt
Сертификат Let's Encrypt позволяет браузеру установить защищённое TLS-соединение с сайтом: посетители увидят признак безопасного соединения, а данные, передаваемые по HTTP, будут зашифрованы. Сервис бесплатен, выдаёт доверенные сертификаты и поддерживает автоматическое продление. Для проверки домен должен указывать на доступный веб-сервер, а необходимые сетевые порты должны быть открыты.
Настройка HTTPS на домене с помощью Let's Encrypt начинается с проверки DNS и доступности сайта. Certbot получает сертификат по протоколу ACME, помогает настроить TLS и создаёт задачу продления. В примерах используется example.dp.ua; замените его своим именем и добавляйте www только тогда, когда для него настроены корректные DNS-записи.
Проверка домена и DNS
Регистрация имени в зоне dp.ua не означает, что сайт уже отвечает из интернета. На странице сведений о домене можно сверить зарегистрированное имя, однако наличие хостинга, DNS-записей и работающего веб-сервера необходимо проверять отдельно. Перед выпуском сертификата домен должен открываться по HTTP с внешнего адреса.
Для основного домена создайте A-запись, указывающую на публичный IP сервера. Если сайт доступен по IPv6, добавьте корректную AAAA-запись: неработающий адрес IPv6 может помешать проверке. Поддомен www обычно направляется через CNAME на основной домен либо получает собственную A-запись. Записи CAA, если они используются, не должны запрещать выпуск сертификата Let's Encrypt.
Проверить результат можно командами nslookup example.dp.ua, dig +short A example.dp.ua и dig +short AAAA example.dp.ua. Если изменения ещё не появились, подождите окончания срока TTL и повторите проверку. Для ACME-проверки может также потребоваться временно отключить проксирование через CDN, если оно перехватывает запросы к серверу происхождения.
Подготовка сервера
Понадобится VPS или виртуальный хостинг с публичным IP-адресом, доступом по SSH и возможностью управлять портами. Сервер должен стабильно отвечать во время проверки Let's Encrypt. Если Nginx запущен за другим балансировщиком или прокси, необходимо правильно передавать исходный IP, заголовок Host и схему соединения.
Откройте порт 80 для HTTP-проверки и порт 443 для обслуживания HTTPS. Настройте их в системном брандмауэре и в панели безопасности облачного провайдера. При использовании Docker или сетевого NAT перенаправьте трафик на контейнер или внутренний сервер. Закрывать порт 80 следует только после перехода на другой метод проверки.
Для Ubuntu и Debian обновите систему и установите Nginx. Актуальное системное время важно для корректной работы TLS: расхождение часов может привести к ошибкам проверки сертификата.
sudo apt update
sudo apt install nginx
timedatectl status
Выбор метода проверки
Метод HTTP-01 создаёт временный файл в каталоге /.well-known/acme-challenge/. Let's Encrypt запрашивает его через порт 80, поэтому домен должен указывать на нужный сервер, а веб-сервер — отдавать этот файл. Метод DNS-01 использует TXT-запись в зоне домена и подходит при закрытом порте 80, но требует доступа к DNS API или ручного изменения записей.
Certbot может работать как плагин Nginx, Apache или через отдельный веб-каталог. Плагин удобен для автоматического изменения конфигурации, а способ --webroot подходит для существующего сайта, если каталог публикаций уже известен и доступен по HTTP. При наличии сложной конфигурации сначала создайте резервную копию файлов.
Сертификат с поддоменом *.example.dp.ua можно получить только через DNS-01. Обычный HTTP-01 такой сертификат не поддерживает. При проверке через CDN убедитесь, что запросы ACME достигают исходного сервера; при необходимости используйте режим DNS-only, а после выпуска сертификата верните проксирование.
Выпуск сертификата
Установите Certbot и плагин для Nginx. В других дистрибутивах используйте эквивалентные пакеты или официальный способ установки, соответствующий версии Certbot. Перед настройкой желательно убедиться, что Nginx запущен и не сообщает о синтаксических ошибках.
sudo apt install certbot python3-certbot-nginx
sudo nginx -t
sudo systemctl enable --now nginx
Создайте или дополните HTTP-конфигурацию Nginx. Если сайт уже работает, сохраните существующие параметры,location-блоки и правила проксирования. Поле server_name должно содержать все имена, которые будут включены в сертификат.
server {
listen 80;
listen [::]:80;
server_name example.dp.ua www.example.dp.ua;
location /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
try_files $uri $uri/ =404;
}
}
Запустите получение сертификата и укажите настоящий адрес электронной почты. Если DNS-запись для www отсутствует, удалите этот домен из команды. Параметр --redirect поручит Certbot настроить переход с HTTP на HTTPS.
sudo certbot --nginx --redirect \
--email admin@example.com \
--agree-tos \
-d example.dp.ua \
-d www.example.dp.ua
После успешной проверки Certbot создаст конфигурацию TLS и задачу автоматического продления. Проверьте синтаксис и состояние Nginx; сертификат и закрытый ключ появятся в /etc/letsencrypt/live/example.dp.ua/.
sudo nginx -t
sudo systemctl reload nginx
Переход сайта на HTTPS
Флаг --redirect добавляет постоянное перенаправление HTTP-запросов на защищённую версию. Проверьте не только главную страницу, но и формы, изображения, API-запросы и страницы с ошибками. Все внутренние ссылки должны сохранять правильный адрес, чтобы пользователь не возвращался на небезопасный вариант.
Certbot хранит цепочку сертификатов в fullchain.pem, а закрытый ключ — в privkey.pem. Nginx читает эти файлы через конфигурацию, созданную плагином. Не переносите закрытый ключ в публичный репозиторий, не публикуйте его содержимое и не удаляйте каталог /etc/letsencrypt, поскольку там также находится информация для продления.
Если вместо Nginx используется Apache, установите соответствующий плагин и замените в команде параметр --nginx на --apache. Одновременно настраивать Certbot для обоих веб-серверов на одном IP не следует: Apache и Nginx могут претендовать на порты 80 и 443.
sudo apt install certbot python3-certbot-apache
sudo certbot --apache --redirect -d example.dp.ua
Заголовок HSTS помогает запретить браузеру повторно обращаться к домену по HTTP, однако ошибка в нём может надолго заблокировать доступ. Добавляйте Strict-Transport-Security только после устойчивой работы HTTPS. Параметр includeSubDomains используйте, если все поддомены поддерживают защищённое соединение.
Проверка и диагностика
Проверьте поведение домена из внешней сети. HTTP-версия должна возвращать постоянное перенаправление, а HTTPS — успешный ответ либо ожидаемый код страницы. Эти команды также показывают, завершается ли соединение через сертификат без предупреждений.
curl -I http://example.dp.ua
curl -I https://example.dp.ua
openssl s_client -connect example.dp.ua:443 -servername example.dp.ua
Если проверка сертификата не проходит, последовательно проверьте A- и AAAA-записи, порт 80, имя в server_name и содержимое ACME-каталога. Ошибки Certbot находятся в /var/log/letsencrypt/letsencrypt.log, а сообщения Nginx — в журнале сервиса. Не повторяйте запросы слишком часто: Let's Encrypt ограничивает количество неудачных проверок.
Ошибка 404, 403 или отсутствие redirect часто вызвана CDN, неправильным Host, закрытым портом или конфигурацией reverse proxy. Ошибка имени сертификата означает, что в запрос не включено соответствующее доменное имя. После исправления проверьте сертификат повторно и очистите кеш браузера только после обновления сервера.
Веб-страница может открываться по HTTPS, но содержать HTTP-изображения, скрипты или обращения к сторонним API. Браузер заблокирует их как небезопасное смешанное содержимое. Откройте инструменты разработчика, найдите элементы в разделе Console или Security и замените их адреса на HTTPS.
Продление и сопровождение
Сертификаты Let's Encrypt действуют около 90 дней, поэтому продление должно выполняться автоматически. Сначала запустите пробную операцию: она использует тестовую среду и проверяет создание нового сертификата без изменения текущего.
sudo certbot renew --dry-run
systemctl list-timers certbot.timer
Установленный через пакет Certbot обычно запускает таймер дважды в сутки и начинает продление, когда срок действия становится недостаточным. Плагин Nginx перезагружает конфигурацию после успешного обновления. При использовании --certonly следует настроить deploy-hook, если веб-сервер не перезапускается автоматически. Дублирующий cron не нужен.
Закрытые ключи и конфигурацию /etc/letsencrypt храните в резервной копии с ограниченным доступом. Добавьте внешний контроль срока действия сертификата, чтобы сбой таймера не остался незамеченным. При изменении списка доменов, переносе сайта или смене DNS потребуется выпустить новый сертификат.
Откройте DNS-панель, направьте домен на публичный IP сервера, добавьте AAAA-запись только при рабочем IPv6, а затем выпустите сертификат через Certbot и выполните пробное продление.
О домене
Домен rmxzrnvbrdvnk.dp.ua зарегистрирован в зоне dp.ua. Страница содержит базовую информацию для посетителей.
Контакты
Для получения дополнительной информации обращайтесь через контактные данные владельца домена, если они доступны.
Навигация
Используйте меню в верхней части страницы для перемещения по доступным разделам сайта.