4.3.12. Установка SSL-сертификата от Let's encrypt с помощью Certbot
Одним из самых простых способов получения сертификата от Let's encrypt является использование Certbot, который предоставляет возможность автоматически пройти проверку и получить необходимый сертификат.
Установка Certbot
Установить Certbot можно несколькими способами:
Способ подходит для следующих ОС:
- Fedora
- Debian
- Ubuntu
- CentOS
- ArchLinux
- OpenSUSE
Информация по другим ОС доступна на официальном сайте.
- Подключитесь к серверу по SSH.
- Установите Snap, если он не установлен на сервере:
- Ubuntu и Debian:
sudo apt update; sudo apt install snapd
- Fedora и CentOS:
sudo dnf install snapd
- Для старых версий использeqnt
yum
вместоdnf
:sudo yum install snapd
- Установите основные пакеты Snap:
sudo snap install core; sudo snap refresh core
- Установите Certbot:
sudo snap install --classic certbot
- Создайте символическую ссылку для более удобного вызова Certbot:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
- Подключитесь к серверу по SSH.
- Установите Python, если он не установлен на сервере:
- Ubuntu и Debian:
sudo apt update; sudo apt install python3 python3-venv libaugeas0
- Fedora и CentOS:
sudo dnf install python3 augeas-libs
- Создайте виртуальное окружение:
sudo python3 -m venv /opt/certbot/ sudo /opt/certbot/bin/pip install --upgrade pip
- Установите Certbot:
sudo /opt/certbot/bin/pip install certbot certbot-nginx
- Создайте символическую ссылку для более удобного вызова Certbot:
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
- Добавьте задачу 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