Перейти к основному контенту

Выпуск и установка Let’s Encrypt

Введение

SSL-сертификат (TLS) обеспечивает защищённое HTTPS-соединение между сервером и браузером пользователя. HTTPS защищает данные, повышает доверие посетителей, улучшает SEO и корректную работу браузеров.

Let’s Encrypt — бесплатный центр сертификации, который выпускает SSL-сертификаты сроком действия 90 дней с возможностью автоматического продления.

Для работы используется Certbot - официальный клиент Let’s Encrypt.

Подготовка перед установкой

Перед установкой убедитесь, что выполнены следующие условия:

  1. Доменное имя
    Домен должен быть зарегистрирован и указывать на IP сервера через DNS-запись типа A (или AAAA для IPv6).

  2. Прямое подключение домена к серверу (без прокси)
    На момент установки домен не должен работать через прокси или CDN (например, Cloudflare в режиме Proxied).
    DNS-запись должна быть в режиме DNS only, чтобы Let’s Encrypt мог обратиться к серверу по порту 80 напрямую.

  3. Операционная система Linux
    Поддерживаются Ubuntu и Debian.

  4. Установленный веб-сервер

    • Nginx
    • Apache
      Сервер должен быть запущен и отвечать по порту 80.
  5. Открытые порты

    • 80/tcp — проверка домена
    • 443/tcp — HTTPS
  6. Root-доступ или права sudo

Обновление системы

Перед установкой обновите пакеты:

sudo apt update && sudo apt upgrade -y

Установка Certbot

Для Nginx
sudo apt install certbot python3-certbot-nginx -y
Для Apache
sudo apt install certbot python3-certbot-apache -y

Получение SSL-сертификата

Для Nginx
sudo certbot --nginx -d example.com -d www.example.com
Для Apache
sudo certbot --apache -d example.com -d www.example.com

Во время выполнения Certbot:

  • запросит контактный e-mail;
  • предложит принять условия использования;
  • предложит включить редирект HTTP → HTTPS (рекомендуется).

После завершения сертификат будет автоматически установлен и подключён к веб-серверу.


Режим standalone

Режим standalone используется, если веб-сервер временно не запущен или не настроен:

sudo certbot certonly --standalone -d example.com

На время выполнения порт 80 должен быть свободен. Веб-сервер необходимо временно остановить:

sudo systemctl stop nginx
sudo certbot certonly --standalone -d example.com
sudo systemctl start nginx

Сертификаты всегда сохраняются в каталоге:

/etc/letsencrypt/live/example.com/

В этом каталоге находятся символические ссылки на актуальные версии сертификатов:

  • fullchain.pem - полный SSL-сертификат (сертификат + цепочка)

  • privkey.pem - приватный ключ

  • cert.pem - сертификат домена

  • chain.pem - цепочка доверия

Именно эти пути указываются в конфигурации Nginx или Apache.

Пример подключения сертификата в Nginx:

ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Для Apache:

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

Фактические файлы версий находятся в:

/etc/letsencrypt/archive/example.com/

Certbot автоматически обновляет символические ссылки в live/.

Автоматическое продление сертификатов

Certbot настраивает продление через systemd-таймер. Проверка работы:

sudo certbot renew --dry-run

Проверка установленных сертификатов

sudo certbot certificates

Показывает список доменов и срок действия сертификатов.

Возможные проблемы

Проблема Возможная причина Решение
Timeout при генерации SSL Порт 80 закрыт или недоступен Откройте порт в брандмауэре
Domain not found DNS A-запись не настроена Проверьте DNS записи домена
Permission denied Нет прав Запустите с sudo
Сертификат не применился Автонастройка не сработала Вручную внесите SSL в конфигурацию сервера

Итог

Мы успешно выпустили SSL-сертификат Let’s Encrypt, настроили его на веб-сервере и проверили работу сайта по HTTPS. Сертификаты будут автоматически продлеваться, а при необходимости можно включить редирект с HTTP на HTTPS для полного перехода на защищённое соединение.