Установка Certbot на CentOS

Certbot – клиент написанный на Python, который позволяет автоматизировать как получение бесплатных сертификатов от Let’s Encrypt, так и настройку веб-серверов для создания защищённого https соединения с использованием этих сертификатов.

В качестве примера мы рассмотрим установку Cerbot на CentOS, узнаем как получить с помощью него бесплатный сертификат и выполнить автоматическую настройку nginx / apache.

Установка Certbot на CentOS 7 с nginx / apache

Для установки certbot нам потребуется установить репозиторий epel-release (все команды выполняются с правами root):

# yum install epel-release

Далее устанавливаем сам клиент и модуль работы с сервером (пример для nginx):

# yum install certbot python2-certbot-nginx

Если же вы используете apache, то выполните установку certbot с соответствующим модулем:

# yum install certbot python2-certbot-apache

Приступаем к непосредственному получению бесплатного сертификата и настройке https. Если вы используете nginx, выполните:

# certbot --nginx

Если у вас установлен apache:

# certbot --apache

Certbot попросит указать адрес электронной почты, которая будет использована срочного продления и уведомлений безопасности. Указываем свою почту и нажимаем Enter:

Далее необходимо принять пользовательское соглашение, вводим A и нажимаем Enter:

Нам предложат опубликовать наш адрес электронной почты после успешного получения сертификата. Отказываемся, введя N и Enter:

Certbot проверит конфигурационные файлы nginx / apache на наличие доменных имен. Если они будут найдены, то он выведет их список и предложит указать те, для которых требуется получить сертификаты и настроить веб-сервер (в консоли вводятся номера позиций, возможно указание нескольких через пробел). Если же у вас нет настроенных доменов, то имя потребуется указать вручную:

После этого дожидаемся окончания работы клиента:

Для успешной работы Certbot необходимо, чтобы у вас были открыты порты 80 и 443!

Заходим в браузер и вводим наш домен. Справа от него будет указан значок замка, который говорит о защищенном соединении:

Так как сертификаты Let’s Encrypt выдаются на три месяца, то настроим их автоматическое обновление. Для этого откроем любым текстовым редактором крон:

# nano /etc/crontab

И укажем периодическое задание на обновление всех сертификатов с помощью certbot:

0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q

Установка Certbot на CentOS 8 с nginx / apache

Для установки certbot нам потребуется установить репозиторий epel-release (все команды выполняются с правами root):

# dnf install epel-release

Далее устанавливаем сам клиент и модуль работы с сервером (пример для nginx):

# dnf install certbot python3-certbot-nginx

Если же вы используете apache, то выполните установку certbot с соответствующим модулем:

# dnf install certbot python3-certbot-apache

Приступаем к непосредственному получению бесплатного сертификата и настройке https. Если вы используете nginx, выполните:

# certbot --nginx

Если у вас установлен apache:

# certbot --apache

Certbot попросит указать адрес электронной почты, которая будет использована срочного продления и уведомлений безопасности. Указываем свою почту и нажимаем Enter:

Далее необходимо принять пользовательское соглашение, вводим A и нажимаем Enter:

Нам предложат опубликовать наш адрес электронной почты после успешного получения сертификата. Отказываемся, введя N и Enter:

Certbot проверит конфигурационные файлы nginx / apache на наличие доменных имен. Если они будут найдены, то он выведет их список и предложит указать те, для которых требуется получить сертификаты и настроить веб-сервер (в консоли вводятся номера позиций, возможно указание нескольких через пробел). Если же у вас нет настроенных доменов, то имя потребуется указать вручную:

После этого дожидаемся окончания работы клиента:

Для успешной работы Certbot необходимо, чтобы у вас были открыты порты 80 и 443!

Заходим в браузер и вводим наш домен. Справа от него будет указан значок замка, который говорит о защищенном соединении:

Так как сертификаты Let’s Encrypt выдаются на три месяца, то настроим их автоматическое обновление. Для этого откроем любым текстовым редактором крон:

# nano /etc/crontab

И укажем периодическое задание на обновление всех сертификатов с помощью certbot:

0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q

15 комментариев к “Установка Certbot на CentOS”

  1. спасибо, оказалось полезно.
    но как добавить НОВЫЙ ДОМЕН?
    и вопрос по принудительному запуску renew если вдруг автоматически не сработает.
    а то со старым

    у меня были проблемы, как только не пробовал

    #* * * * * root /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew2.log
    #30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
    #35 2 * * 1 /bin/systemctl reload nginx
    #35 2 * * 1 /bin/systemctl restart nginx.service

    обновлять обновляло а вот нжингс не перезапускался.

    Ответить
    • Для добавления нового домена необходимо повторно запустить certbot и выбрать/указать новый домен.
      В кроне прописывается 0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q (с вашей версией python). Я где-то сталкивался, что отсутствовал модуль random и его необходимо было установить. Попробуйте запустить python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q в консоли и посмотрите вывод.

      Ответить
    • Да, возможно у Вас не установлен редактор nano, а vim есть по умолчанию.
      Спасибо за Ваш отзыв!

      Ответить
  2. а что делать если вот такая проблема
    nginx: [emerg] cannot load certificate
    “/etc/letsencrypt/live/mysite/fullchain.pem”: BIO_new_file() failed (SSL:
    error:02001002:system library:fopen:No such file or
    directory:fopen(‘/etc/letsencrypt/live/mysite/fullchain.pem’,’r’)
    error:2006D080:BIO routines:BIO_new_file:no such file)
    nginx: configuration file /etc/nginx/nginx.conf test failed

    Ответить
    • На каком этапе появилась ошибка? Изменяли конфиг nginx самостоятельно или удаляли/перемещали файлы сертификата? Проверьте существует ли файл /etc/letsencrypt/live/mysite/fullchain.pem и есть ли права на чтение. Возможно, проще будет отозвать сертификат и получить его заново.

      Ответить
  3. Здравствуйте!
    В связи с появлением ошибки при обновлении CPS WordPress “cURL error 77:” хостингом было рекомендовано установить сертификат на физический сервер с рекомендацией использовать вашу статью как инструкцию.
    Certbot установился штатно, но при попытке получения сертификата на CentOS7 возникает ошибка:
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    The nginx plugin is not working; there may be problems with your existing configuration.
    The error was: NoInstallationError(“Could not find a usable ‘nginx’ binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.”,)

    Ответить
    • Добрый день.
      А у вас точно используется nginx, а не apache? Или, возможно, сервис работает в контейнере?. В ошибке говорится, что certbot не может найти nginx/

      Ответить

Оставьте комментарий