Как установить Certbot на Ubuntu 24.04: Настройка Let’s Encrypt для Apache и Nginx
Автор:
Eugeny Nosenko
Дата публикации:
2025-07-31 15:13:00 422
Установка сертификата 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.