SSL сертификат Let's Encrypt: Как получить и настроить бесплатно | AdminWiki

SSL сертификат Let's Encrypt: Полное руководство по получению, выпуску и настройке

17 декабря 2025 6 мин. чтения #devops #https #letsencrypt #ssl #web #безопасность #сертификаты
Содержание статьи

Что такое Let's Encrypt и почему это революция?

Представь, что каждый сайт в интернете должен иметь замок на двери — это HTTPS. Раньше такой замок стоил денег, иногда немалых. Let's Encrypt пришел и сказал: "Защита должна быть доступна всем". Это некоммерческий центр сертификации, который выдает бесплатные SSL сертификаты автоматически и в неограниченном количестве.

Ключевые преимущества: Полностью бесплатно, автоматизированный процесс, поддержка wildcard-сертификатов, открытый исходный код, 90-дневный срок действия (что стимулирует автоматизацию).

Как работает выпуск сертификата Let's Encrypt SSL?

Давай разберем механизм работы. Процесс получения SSL сертификата Let's Encrypt построен на протоколе ACME (Automatic Certificate Management Environment). Вместо ручной проверки человеком, используется автоматическая проверка владения доменом.

Три основных метода верификации

  • HTTP-01 Challenge: Клиент создает специальный файл на твоем веб-сервере по указанному пути
  • DNS-01 Challenge: Клиент создает TXT-запись в DNS твоего домена
  • TLS-SNI-01: Устаревший метод (не рекомендуется)

Практическое руководство: получение SSL сертификата Let's Encrypt

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

Шаг 1: Установка Certbot

В зависимости от твоей ОС и веб-сервера команды будут немного отличаться. Вот для Ubuntu + Nginx:

bash
sudo apt update
sudo apt install certbot python3-certbot-nginx

Шаг 2: Выпустить сертификат Let's Encrypt SSL для одного домена

Самая простая команда для получения SSL сертификата Let's Encrypt:

bash
sudo certbot --nginx -d example.com -d www.example.com
Важно: Замени example.com на свой домен. Флаг -d можно использовать несколько раз для нескольких поддоменов.

Шаг 3: Автоматическая настройка Nginx

Certbot автоматически обнаружит конфигурацию Nginx и предложит настроить HTTPS. После успешной генерации SSL сертификата Let's Encrypt, твой конфиг будет выглядеть примерно так:

nginx
server {
    listen 443 ssl;
    server_name example.com www.example.com;
    
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
    # остальная конфигурация...
}

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

Продвинутые сценарии: Wildcard и автоматическое обновление

Получение Wildcard-сертификата через DNS

Для выпуска сертификата Let's Encrypt SSL с поддержкой wildcard (*.example.com) требуется DNS-верификация:

bash
sudo certbot certonly \
  --manual \
  --preferred-challenges=dns \
  -d *.example.com \
  -d example.com

Настройка автоматического обновления

Сертификаты Let's Encrypt действуют 90 дней. Настрой автообновление через systemd timer или cron:

bash
# Проверка обновления (тестовый режим)
sudo certbot renew --dry-run

# Добавление в cron (каждые 12 часов)
echo "0 */12 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab

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

Метод Сложность Подходит для Wildcard
Certbot + веб-сервер Низкая Обычные сайты, блоги Нет
DNS-верификация Средняя Серверы без веб-доступа, API Да
Docker контейнеры Высокая Микросервисы, облачные среды Да

Распространенные проблемы и решения

Ошибка: "Too many certificates already issued"

Let's Encrypt имеет лимиты: 50 сертификатов на домен в неделю. Решение:

bash
# Проверь текущие сертификаты
sudo certbot certificates

# Удали ненужные
sudo certbot delete --cert-name example.com

Проблемы с автоматическим обновлением

Если renew не работает, проверь:

  • Доступность порта 80 для HTTP-верификации
  • Права на запись в /etc/letsencrypt
  • Логи: sudo tail -f /var/log/letsencrypt/letsencrypt.log

Безопасность и лучшие практики

Получение SSL сертификата Let's Encrypt — это только первый шаг. Вот что нужно сделать дальше:

  • Настройка HSTS: Добавь заголовок Strict-Transport-Security
  • Modern TLS конфигурация: Отключи устаревшие протоколы (SSLv2, SSLv3)
  • Резервное копирование: Папка /etc/letsencrypt содержит все ключи
  • Мониторинг: Настрой оповещения об истечении срока
nginx
# Пример безопасной конфигурации 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;
add_header Strict-Transport-Security "max-age=63072000" always;

Альтернативные клиенты и инструменты

Хотя Certbot самый популярный, есть и другие варианты для генерации SSL сертификата Let's Encrypt:

  • acme.sh: Чистый bash-скрипт, отлично работает в ограниченных средах
  • Traefik: Обратный прокси с встроенной поддержкой Let's Encrypt
  • Caddy: Веб-сервер с автоматическим HTTPS из коробки
  • Kubernetes Cert-Manager: Для облачных нативных приложений
Совет от ментора: Начни с Certbot для простоты, затем изучи acme.sh для более тонкого контроля. Для production-сред используй автоматическое обновление и мониторинг срока действия.

Часто задаваемые вопросы (FAQ)

Можно ли использовать Let's Encrypt для коммерческих проектов?

Да, абсолютно. Let's Encrypt выдает сертификаты уровня Domain Validation (DV), которые подходят для большинства коммерческих сайтов. Для Extended Validation (EV) потребуется платный сертификат.

Что делать, если мой хостинг не поддерживает Let's Encrypt?

1. Используй Cloudflare (бесплатный SSL прокси)
2. Перенеси сайт на хостинг с поддержкой Let's Encrypt
3. Используй внешний сервис вроде ZeroSSL с ручной загрузкой сертификатов

Почему срок действия всего 90 дней?

Это security-by-design подход. Короткий срок снижает риск при компрометации ключей и стимулирует автоматизацию. В идеале ты вообще не должен думать о продлении — всё должно работать автоматически.

Как проверить, правильно ли установлен сертификат?

Используй онлайн-инструменты:
- SSL Labs (ssllabs.com/ssltest)
- CheckTLS (checktls.com)
- Или командную строку: openssl s_client -connect example.com:443 -servername example.com

Можно ли получить сертификат для localhost или внутренних IP?

Нет, Let's Encrypt требует публично доступный домен с правильной DNS записью. Для разработки используй самоподписанные сертификаты или mkcert.

Заключение

Let's Encrypt изменил ландшафт веб-безопасности, сделав HTTPS доступным по умолчанию. Процесс получения SSL сертификата Let's Encrypt сегодня настолько автоматизирован, что нет excuses не использовать HTTPS.

Запомни главное:
1. Установи Certbot или другой ACME-клиент
2. Настрой автоматическое обновление
3. Проверь конфигурацию на безопасность
4. Мониторь сроки действия

Теперь у тебя есть полное руководство по генерации SSL сертификата Let's Encrypt. Действуй, защищай свои сайты и делай интернет безопаснее. Если остались вопросы — пиши в комментарии, разберем конкретные кейсы!

Поделиться:
Сохранить гайд? В закладки браузера