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
Спасибо тебе, добрый человек.
Рад, что статья оказалась полезной
БОЛЬШОЕ СПАСИБО ТЕБЕ ДОБРЫЙ ЧЕЛОВЕК.
Огромное Спасибо!!!!!!
Хорошая статья! Спасибо))
спасибо, оказалось полезно.
но как добавить НОВЫЙ ДОМЕН?
и вопрос по принудительному запуску 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
в консоли и посмотрите вывод.Да, и мой крон редактировать нужно по другому
vim /etc/crontab
и да, еще раз спасибо. по сравнению с официальным описанием https://certbot.eff.org/instructions?ws=nginx&os=centosrhel7 ваш отлично работает и все понятно.
Да, возможно у Вас не установлен редактор nano, а vim есть по умолчанию.
Спасибо за Ваш отзыв!
Скажите как открыть порт 80 в ISP System 6 ?