Как установить Certbot на Ubuntu 24.04: Настройка Let’s Encrypt для Apache и Nginx

Автор: Eugeny Nosenko
Дата публикации: 2025-07-31 15:13:00   62


Как установить Certbot на Ubuntu 24.04: Настройка Let’s Encrypt для Apache и Nginx

Установка сертификата 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.



Оставить комментарий:
Имя:
Комментарий: