Привет! Если ты читаешь эту статью, значит тебе нужно защитить свой сайт с помощью SSL-сертификата. Представь, что твой сайт — это дом, а SSL — это надежный замок на двери. Сегодня мы разберем, как установить и настроить Certbot на Ubuntu — лучший инструмент для автоматического получения бесплатных SSL-сертификатов от Let's Encrypt.
Что такое Certbot и зачем он нужен?
Certbot — это официальный клиент Let's Encrypt, который автоматизирует процесс получения и обновления SSL-сертификатов. Без него пришлось бы вручную генерировать CSR, подтверждать владение доменом и обновлять сертификаты каждые 90 дней.
Предварительные требования
Перед началом установки certbot на ubuntu убедись, что у тебя есть:
- Сервер Ubuntu 20.04 LTS или новее
- Установленный и настроенный веб-сервер (Nginx или Apache)
- Доменное имя, указывающее на IP-адрес сервера
- Права суперпользователя (sudo)
- Открытые порты 80 и 443 в фаерволе
Шаг 1: Обновление системы
Начнем с обновления пакетов системы. Это хорошая практика перед любой установкой.
sudo apt update
sudo apt upgrade -y
Шаг 2: Установка Certbot на Ubuntu
Certbot доступен в официальных репозиториях Ubuntu. Установка выполняется одной командой:
sudo apt install certbot -y
Для проверки успешной установки выполни:
certbot --version
Шаг 3: Установка плагинов для веб-сервера
В зависимости от используемого веб-сервера, нужно установить соответствующий плагин.
Для Nginx (certbot nginx установка)
Если ты используешь Nginx, установи плагин для автоматической настройки:
sudo apt install python3-certbot-nginx -y
Для Apache
Для Apache установка немного отличается:
sudo apt install python3-certbot-apache -y
Шаг 4: Получение SSL-сертификата
Теперь самое интересное — получение сертификата. Есть два основных метода.
Метод 1: Автоматическая настройка (рекомендуется)
Certbot автоматически обнаружит конфигурацию Nginx и предложит выбрать домен:
sudo certbot --nginx
Во время выполнения команды тебе будет предложено:
- Ввести email для уведомлений о истечении срока
- Принять условия обслуживания
- Выбрать домены для защиты
- Настроить автоматическое перенаправление HTTP → HTTPS
Метод 2: Ручная настройка
Если автоматическая настройка не работает или нужен больший контроль:
sudo certbot certonly --nginx -d example.com -d www.example.com
Шаг 5: Проверка установки
Убедись, что сертификат успешно установлен и работает:
sudo certbot certificates
Ты увидишь примерно следующее:
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-таймер для обновления сертификатов. Проверить это можно командой:
sudo systemctl list-timers | grep certbot
# Или посмотреть cron
sudo crontab -l | grep certbot
Для ручного тестирования обновления выполни:
sudo certbot renew --dry-run
Настройка Nginx для SSL
После установки certbot на ubuntu с плагином для 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:
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/ваш_домен/.
Что делать, если нужно отозвать сертификат?
Используй команду:
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
Продвинутые настройки
Использование Docker
Если предпочитаешь Docker, установка еще проще:
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-проверка:
sudo certbot certonly \
--manual \
--preferred-challenges=dns \
-d *.example.com \
-d example.com
Заключение
Установка certbot на ubuntu — это простой и эффективный способ защитить твой сайт с помощью SSL-сертификатов Let's Encrypt. Мы прошли весь путь от базовой установки до продвинутых настроек. Главные преимущества этого подхода:
- Полная автоматизация получения и обновления сертификатов
- Бесплатные сертификаты от доверенного центра
- Простая интеграция с Nginx и Apache
- Поддержка wildcard-сертификатов
- Активное сообщество и регулярные обновления
Теперь твой сайт защищен современным SSL-сертификатом, что повышает безопасность, доверие пользователей и SEO-рейтинг. Не забывай регулярно проверять статус сертификатов и обновлять Certbot для получения новых функций и исправлений безопасности.