Клиенты ACME. Certbot
Клиент протокола ACME Certbot.
Содержание
1 Общая информация
- Бесплатный программный инструмент с открытым исходным кодом для автоматического использования сертификатов Let’s Encrypt.
- Создан Electronic Frontier Foundation (EFF).
- Сайт: https://certbot.eff.org/
2 Получение сертификатов
2.1 Сертификаты DNS
2.1.1 Общая информация
- Для выпуска wildcard-сертификата необходимо выполнить DNS challenge request, используя протокол ACMEv2.
- DNS challenge представляет собой запись TXT, предоставленную клиентом certbot, которую необходимо установить вручную в DNS.
- Нужно будет обновлять DNS при каждом обновлении сертификатов.
- Чтобы не делать это вручную, воспользуйтесь rfc2136, для которого в Certbot есть плагин
certbot-dns-rfc2136
. - Также необходимо настроить DNS-сервер, чтобы разрешить динамическое обновление TXT-записей.
- Чтобы не делать это вручную, воспользуйтесь rfc2136, для которого в Certbot есть плагин
- Документация: https://certbot-dns-rfc2136.readthedocs.io/
2.1.2 Установка программного обеспечения
Snap
- Установка плагина
certbot-dns-rfc2136
для Snap: - Сам Certbot может находиться на произвольном сервере.
- Установка плагина
Пакетный менеджер
- Rocky Linux:
1sudo dnf -y install certbot python3-certbot-dns-rfc2136
- Rocky Linux:
2.1.3 Настройка BIND
Сгенерируйте секретный TSIG-ключ:
1tsig-keygen -a HMAC-SHA512 example-key
- Здесь
example-key
— имя вашего ключа. Выбирается произвольно. Можно назвать по имени домена.
- Здесь
Добавьте ключ в файл конфигурации Bind
/etc/named.conf
:Перезапустите named:
1systemctl restart named.service
2.1.4 Настройка certbot
- Сгенерируйте файл конфигурации для плагина rfc2136
/etc/letsencrypt/rfc2136_domain.ltd.ini
: - Поправьте права доступа:
1chmod 600 /etc/letsencrypt/rfc2136_domain.ltd.ini
2.1.5 Получение сертификата
- Выполните команду
1certbot certonly --dns-rfc2136 --force-renewal --dns-rfc2136-credentials /etc/letsencrypt/rfc2136_domain.ltd.ini --server https://acme-v02.api.letsencrypt.org/directory --email admin@domain.ltd --agree-tos --no-eff-email --dns-rfc2136-propagation-seconds 60 -d 'domain.ltd' -d '*.domain.ltd' --non-interactive --quiet
- Сертификаты помещаются в каталог
/etc/letsencrypt/live/domain.ltd
.
2.2 Сертификаты HTTP
2.2.1 Сервер Apache
- Плагин
certbot-apache
предоставляет автоматическую настройку Apache HTTP Server. - Он пытается найти конфигурацию каждого домена, а также добавляет рекомендованные для безопасности параметры, настройки использования сертификатов и пути к сертификатам Let’s Encrypt.
- Первоначальная настройка виртуальных хостов:
1certbot --apache
- Обновление сертификатов:
1certbot renew
- Изменение сертификатов без изменения файлов конфигурации apache:
1certbot --apache certonly
2.2.2 Сервер Nginx
- Плагин
certbot-nginx
предоставляет автоматическую настройку Nginx HTTP Server. - Он пытается найти конфигурацию каждого домена, а также добавляет рекомендованные для безопасности параметры, настройки использования сертификатов и пути к сертификатам Let’s Encrypt.
- Первоначальная настройка виртуальных хостов:
1certbot --nginx
- Обновление сертификатов:
1certbot renew
- Изменение сертификатов без изменения файлов конфигурации nginx:
1certbot --nginx certonly
3 Установка
3.1 Установка certbot
- Проверьте, что установлен репозитории EPEL:
1dnf -y install epel-release
- Установите certbot:
1dnf -y install certbot
- Для веб-сервера Apache:
1dnf -y install python3-certbot-apache
- Для веб-сервера Nginx:
1dnf -y install python3-certbot-nginx
- Для сертификата DNS:
1dnf -y install python3-certbot-dns-rfc2136
3.2 Установка реализации snap certbot
- Установка Snap
- Centos
- Установите репозиторий Epel
- Установите Snap
1sudo dnf -y install snapd
- Centos
- Запустите Snap
- Обновите Snap (перед этим необходимо немного подождать, чтобы запустился snapd)
- Установка certbot
1sudo snap install --classic certbot
- Сделайте символьную ссылку для запуска:
1sudo ln -s /snap/bin/certbot /usr/local/bin/certbot