4.3.12. Установка SSL-сертификата от Let's encrypt с помощью Certbot

Одним из самых простых способов получения сертификата от Let's encrypt является использование Certbot, который предоставляет возможность автоматически пройти проверку и получить необходимый сертификат.

Установка Certbot

Установить Certbot можно несколькими способами:

Способ подходит для следующих ОС:
  • Fedora
  • Debian
  • Ubuntu
  • CentOS
  • ArchLinux
  • OpenSUSE

Информация по другим ОС доступна на официальном сайте.

  1. Подключитесь к серверу по SSH.
  2. Установите Snap, если он не установлен на сервере:
    • Ubuntu и Debian:
      sudo apt update; sudo apt install snapd
    • Fedora и CentOS:
      sudo dnf install snapd
      • Для старых версий использeqnt yum вместо dnf:
        sudo yum install snapd
  3. Установите основные пакеты Snap:
    sudo snap install core; sudo snap refresh core
  4. Установите Certbot:
    sudo snap install --classic certbot
  5. Создайте символическую ссылку для более удобного вызова Certbot:
    sudo ln -s /snap/bin/certbot /usr/bin/certbot
  1. Подключитесь к серверу по SSH.
  2. Установите Python, если он не установлен на сервере:
    • Ubuntu и Debian:
      sudo apt update; sudo apt install python3 python3-venv libaugeas0
    • Fedora и CentOS:
      sudo dnf install python3 augeas-libs
  3. Создайте виртуальное окружение:
    sudo python3 -m venv /opt/certbot/
    sudo /opt/certbot/bin/pip install --upgrade pip
  4. Установите Certbot:
    sudo /opt/certbot/bin/pip install certbot certbot-nginx
  5. Создайте символическую ссылку для более удобного вызова Certbot:
    sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
  6. Добавьте задачу cron для автоматической выписки сертификата:
    echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo renew -q" | sudo tee -a /etc/crontab > /dev/null

Важные моменты:

  • Получить сертификат можно только на рабочий домен, адресные записи которого корректно направленны на сервер. Получить сертификат на IP без домена невозможно.
  • Certbot запрашивает сертификаты от компании Let's encrypt, которая имеет свои ограничения.
  • Для получения сертификата Certbot создаёт внутри каталогов сайтов временные файлы в подкаталогах .well-known/acme-challenge, которые затем опрашивает Let's encrypt.
  • Установка сертификата временно останавливает работу веб-сервера.
  • Установка сертификатов для веб-серверов Apache и nginx выполняется полностью автоматически. Для установки используются домены, настроенные в конфигурационных файлах веб-сервера. Убедитесь, что конфигурационные файлы настроены верно.

Получить сертификат можно двумя способами:

  • Получение сертификата и внесение изменений в конфигурацию веб-сервера. Для получения сертификата выполните следующую команду, в которой вместо webservice укажите ваш веб-сервер (например, apache или nginx):
    sudo certbot --webservice
  • Получение сертификата без внесения изменений в конфигурацию веб-сервера. Для получения сертификата выполните следующую команду, в которой вместо webservice укажите ваш веб-сервер (например, apache или nginx):
    sudo certbot certonly --webservice

Если изменения в конфигурацию веб-сервера были внесены вручную или нужно проверить корректность работы автопродления, выполните следующую команду:

sudo certbot renew --dry-run
Содержание