Выпуск и установка Let’s Encrypt
Введение
SSL-сертификат (TLS) обеспечивает защищённое HTTPS-соединение между сервером и браузером пользователя. HTTPS защищает данные, повышает доверие посетителей, улучшает SEO и корректную работу браузеров.
Let’s Encrypt — бесплатный центр сертификации, который выпускает SSL-сертификаты сроком действия 90 дней с возможностью автоматического продления.
Для работы используется Certbot - официальный клиент Let’s Encrypt.
Подготовка перед установкой
Перед установкой убедитесь, что выполнены следующие условия:
-
Доменное имя
Домен должен быть зарегистрирован и указывать на IP сервера через DNS-запись типа A (или AAAA для IPv6). -
Прямое подключение домена к серверу (без прокси)
На момент установки домен не должен работать через прокси или CDN (например, Cloudflare в режиме Proxied).
DNS-запись должна быть в режиме DNS only, чтобы Let’s Encrypt мог обратиться к серверу по порту 80 напрямую. -
Операционная система Linux
Поддерживаются Ubuntu и Debian. -
Установленный веб-сервер
- Nginx
- Apache
Сервер должен быть запущен и отвечать по порту 80.
-
Открытые порты
80/tcp— проверка домена443/tcp— HTTPS
-
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 для полного перехода на защищённое соединение.