Как установить Certbot на Ubuntu 24.04: Настройка Let’s Encrypt для Apache и Nginx
Автор:
Eugeny Nosenko
Дата публикации:
2025-07-31 15:13:00 62

Установка сертификата Let’s Encrypt на Ubuntu может показаться сложной задачей, однако благодаря утилите Certbot, это гораздо проще, чем кажется. Используя Certbot, вы сможете быстро установить сертификат Let’s Encrypt и настроить его для веб-серверов Apache и Nginx, обеспечив зашифрованное соединение с помощью SSL/TLS.
В данном руководстве вы узнаете, как установить Certbot на Ubuntu 24.04 и использовать его для установки сертификатов Let’s Encrypt, настроив их для Apache и Nginx таким образом, чтобы ваш сайт работал по протоколу HTTPS вместо обычного HTTP.
Быстрый старт: Установка Certbot на Ubuntu 24.04
Если вы хотите быстро установить Certbot и настроить сертификаты Let’s Encrypt на Ubuntu 24.04, воспользуйтесь этими командами:
# Обновляем пакеты и устанавливаем Certbot sudo apt update sudo apt install -y certbot # Для пользователей Apache sudo apt install -y python3-certbot-apache sudo certbot --apache -d example.com # Для пользователей Nginx sudo apt install -y python3-certbot-nginx sudo certbot --nginx -d example.com
Если вам интересны подробные инструкции, включая установку вручную и дополнительные опции конфигурации, читайте далее.
Предварительные требования
Чтобы следовать данному руководству, вам понадобится сервер Ubuntu 24.04 с правами sudo. Если у вас пока нет такого сервера, обратите внимание, что мы предлагаем одни из самых дешевых и надежных серверов Ubuntu в мире. Наши NVMe-VPS обеспечивают молниеносную производительность для ваших сайтов с защитой SSL.
Шаг 1: Установка Certbot на Ubuntu 24.04
Первым делом необходимо обновить репозитории пакетов, чтобы убедиться, что вы устанавливаете последнюю версию пакета. Это важный первый шаг перед установкой любого нового приложения:
sudo apt update
Затем установите саму утилиту Certbot командой:
sudo apt install -y certbot
Certbot представляет собой консольную утилиту, которая автоматизирует процесс получения и установки сертификата Let’s Encrypt для ваших веб-серверов Apache и Nginx. Эти сертификаты действительны в течение 90 дней и поддерживают автоматическое обновление.
Примечание: Прежде чем устанавливать сертификат, убедитесь, что порты TCP 80 (HTTP) и 443 (HTTPS) открыты на файрволе вашего сервера. Эти порты важны для процедуры подтверждения доменного имени Let’s Encrypt: порт 80 необходим для первоначального этапа верификации домена, а порт 443 — для обслуживания зашифрованного HTTPS-трафика после установки сертификата.
Шаг 2: Установка сертификата Let’s Encrypt с помощью Certbot
Для создания сертификата Let’s Encrypt с помощью Certbot выполните следующую команду:
sudo certbot certonly --webroot --webroot-path WEB_SERVER_ROOT_PATH -m EMAIL -d DOMAIN --agree-tos -n
Рассмотрим, что означают отдельные элементы этой команды:
- --certonly: Используется для получения только самого сертификата без непосредственной его установки.
- --webroot: Позволяет оставить веб-сервер запущенным во время выполнения Certbot, так как мы уже имеем локально работающий веб-сервер и не хотим останавливать его на период выпуска сертификата.
- --webroot-path (-w): Определяет корневую папку ("web root"), содержащую файлы, обслуживаемые вашим веб-сервером. Учтите, что указанный путь должен соответствовать пути, откуда сервер выдает файлы по указанному домену.
- --email (-m): Почтовый адрес, который будет использоваться центром сертификации для уведомлений о скором истечении срока действия домена.
- --domain (-d): Доменное имя, по которому будет происходить доступ к серверу.
- --agree-tos: Подтверждает согласие с условиями соглашения центра сертификации.
- --non-interactive (-n): Запускает команду без интерактивного режима и без ожидания ввода пользователя.
Теперь, зная назначение аргументов, вы можете составить и запустить команду Certbot для создания сертификата. Например:
sudo certbot certonly --webroot --webroot-path /var/www/html/ -m devops@example.com -d www.example.com --agree-tos -n
После выполнения команды автоматически создаются два файла:
Приватный ключ: /etc/letsencrypt/live/www.example.com/privkey.pem
Сертификат: /etc/letsencrypt/live/www.example.com/fullchain.pem
Теперь, когда у вас есть сертификат и приватный ключ, вы можете установить сертификат на ваш веб-сервер.
Шаг 3: Конфигурация Apache с использованием сертификатов Let’s Encrypt
После того как вы создали сертификат Let’s Encrypt, вы можете настроить веб-сервер Apache для его использования и включить HTTPS на вашем сайте.
Сначала нужно изменить конфигурационный файл Apache, чтобы интегрировать полученный сертификат. Этот файл управляет обработкой входящих запросов и определяет, какие виртуальные хосты используют HTTPS-шифрование:
sudo nano /etc/apache2/sites-enabled/000-default.conf
Измените строки следующим образом (желтые фрагменты выделены цветом):
<VirtualHost *:80> Define servername www.example.com ServerName ${SERVERNAME} RewriteEngine on RewriteRule ^/.*$ https://${SERVERNAME}%{SCRIPT_FILENAME}?%{QUERY_STRING} [R=301] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> <VirtualHost *:443> SSLEngine On SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem ServerName ${SERVERNAME} DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Перезапустите Apache, чтобы применить изменения:
sudo systemctl restart apache2
Теперь ваш сайт доступен по HTTPS, и вы увидите значок замка рядом с адресом браузера, подтверждающий, что трафик защищён.
Шаг 3.2: Конфигурация Nginx с использованием сертификатов Let’s Encrypt
Чтобы настроить Let’s Encrypt на сервере Nginx и включить HTTPS на вашем сайте, сначала отредактируйте основной конфигурационный файл Nginx:
sudo nano /etc/nginx/sites-enabled/default
Далее замените пути к приватному ключу и сертификату на соответствующие пути к файлам сертификатов, выданных Certbot:
server { listen 80; listen [::]:80; server_name www.example.com; access_log off; location / { rewrite ^ https://$host$request_uri? permanent; } } server { listen 443 ssl; listen [::]:443 ssl; server_name www.example.com; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; autoindex off; ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Сохраните изменения и проверьте синтаксис конфига:
sudo nginx -t
Если ошибок нет, перезапустите Nginx:
sudo systemctl restart nginx
Поздравляем! Теперь ваш веб-сервер Apache или Nginx защищён с помощью сертификата Let’s Encrypt, и ваш сайт работает по HTTPS.