Установка Certbot на Ubuntu: Полное руководство для Nginx и Apache | AdminWiki

Установка Certbot на Ubuntu: Полное руководство для Nginx и Apache

18 декабря 2025 7 мин. чтения #certbot #devops #letsencrypt #nginx #ssl #ubuntu #безопасность

Привет! Если ты читаешь эту статью, значит тебе нужно защитить свой сайт с помощью SSL-сертификата. Представь, что твой сайт — это дом, а SSL — это надежный замок на двери. Сегодня мы разберем, как установить и настроить Certbot на Ubuntu — лучший инструмент для автоматического получения бесплатных SSL-сертификатов от Let's Encrypt.

Что такое Certbot и зачем он нужен?

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

Важно: Let's Encrypt выдает сертификаты на 90 дней, но с Certbot они обновляются автоматически. Ты можешь спать спокойно — твой сайт всегда будет защищен.

Предварительные требования

Перед началом установки certbot на ubuntu убедись, что у тебя есть:

  • Сервер Ubuntu 20.04 LTS или новее
  • Установленный и настроенный веб-сервер (Nginx или Apache)
  • Доменное имя, указывающее на IP-адрес сервера
  • Права суперпользователя (sudo)
  • Открытые порты 80 и 443 в фаерволе
Внимание: Let's Encrypt имеет лимиты — не более 50 сертификатов на домен в неделю. Для тестирования используй staging-окружение.

Шаг 1: Обновление системы

Начнем с обновления пакетов системы. Это хорошая практика перед любой установкой.

bash
sudo apt update
sudo apt upgrade -y

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

Certbot доступен в официальных репозиториях Ubuntu. Установка выполняется одной командой:

bash
sudo apt install certbot -y

Для проверки успешной установки выполни:

bash
certbot --version

Шаг 3: Установка плагинов для веб-сервера

В зависимости от используемого веб-сервера, нужно установить соответствующий плагин.

Для Nginx (certbot nginx установка)

Если ты используешь Nginx, установи плагин для автоматической настройки:

bash
sudo apt install python3-certbot-nginx -y

Для Apache

Для Apache установка немного отличается:

bash
sudo apt install python3-certbot-apache -y

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

Теперь самое интересное — получение сертификата. Есть два основных метода.

Метод 1: Автоматическая настройка (рекомендуется)

Certbot автоматически обнаружит конфигурацию Nginx и предложит выбрать домен:

bash
sudo certbot --nginx

Во время выполнения команды тебе будет предложено:

  1. Ввести email для уведомлений о истечении срока
  2. Принять условия обслуживания
  3. Выбрать домены для защиты
  4. Настроить автоматическое перенаправление HTTP → HTTPS

Метод 2: Ручная настройка

Если автоматическая настройка не работает или нужен больший контроль:

bash
sudo certbot certonly --nginx -d example.com -d www.example.com
Совет: Всегда добавляй www-версию домена. Это защитит оба варианта доступа к сайту.

Шаг 5: Проверка установки

Убедись, что сертификат успешно установлен и работает:

bash
sudo certbot certificates

Ты увидишь примерно следующее:

bash
Found the following certs:
  Certificate Name: example.com
    Domains: example.com www.example.com
    Expiry Date: 2024-03-15 10:23:45+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem

Шаг 6: Автоматическое обновление сертификатов

Certbot автоматически создает cron-задачу или systemd-таймер для обновления сертификатов. Проверить это можно командой:

bash
sudo systemctl list-timers | grep certbot
# Или посмотреть cron
sudo crontab -l | grep certbot

Для ручного тестирования обновления выполни:

bash
sudo certbot renew --dry-run
Важно: Всегда тестируй обновление с флагом --dry-run перед реальным обновлением в production-среде.

Настройка Nginx для SSL

После установки certbot на ubuntu с плагином для nginx, конфигурация автоматически обновляется. Но давай разберем, что именно изменилось:

nginx
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    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;
    
    # Рекомендуемые настройки SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
    ssl_prefer_server_ciphers off;
    
    # Остальная конфигурация сервера...
}

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

Проблема Причина Решение
Ошибка порта 80 Порт занят или закрыт Освободи порт 80, проверь фаервол
Неверная конфигурация Nginx Ошибки в конфиг-файлах Проверь через nginx -t
Достигнут лимит сертификатов Let's Encrypt лимиты Используй staging-окружение или подожди
Сертификат не обновляется Проблемы с cron/systemd Проверь логи: journalctl -u certbot

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

Можно ли использовать Certbot для нескольких доменов?

Да, Certbot поддерживает мульти-доменные сертификаты (SAN). Просто перечисли все домены через флаг -d:

bash
sudo certbot --nginx -d example.com -d api.example.com -d blog.example.com

Как работает автоматическое обновление?

Certbot создает systemd-таймер или cron-задачу, которая запускается дважды в день и проверяет сертификаты, срок действия которых истекает через 30 дней или меньше.

Где хранятся сертификаты?

Все сертификаты Let's Encrypt хранятся в /etc/letsencrypt/. Основные файлы находятся в /etc/letsencrypt/live/ваш_домен/.

Что делать, если нужно отозвать сертификат?

Используй команду:

bash
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem

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

Использование Docker

Если предпочитаешь Docker, установка еще проще:

bash
docker run -it --rm \
  -v /etc/letsencrypt:/etc/letsencrypt \
  -v /var/lib/letsencrypt:/var/lib/letsencrypt \
  -p 80:80 \
  certbot/certbot certonly --standalone -d example.com

Настройка для wildcard-сертификатов

Для получения wildcard-сертификатов (*.example.com) требуется DNS-проверка:

bash
sudo certbot certonly \
  --manual \
  --preferred-challenges=dns \
  -d *.example.com \
  -d example.com
Профессиональный совет: Для production-среды всегда настраивай мониторинг срока действия сертификатов. Используй Nagios, Zabbix или Prometheus с соответствующими экспортерами.

Заключение

Установка certbot на ubuntu — это простой и эффективный способ защитить твой сайт с помощью SSL-сертификатов Let's Encrypt. Мы прошли весь путь от базовой установки до продвинутых настроек. Главные преимущества этого подхода:

  • Полная автоматизация получения и обновления сертификатов
  • Бесплатные сертификаты от доверенного центра
  • Простая интеграция с Nginx и Apache
  • Поддержка wildcard-сертификатов
  • Активное сообщество и регулярные обновления

Теперь твой сайт защищен современным SSL-сертификатом, что повышает безопасность, доверие пользователей и SEO-рейтинг. Не забывай регулярно проверять статус сертификатов и обновлять Certbot для получения новых функций и исправлений безопасности.

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