Клиенты 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 Установка программного обеспечения
- Установка плагина
certbot-dns-rfc2136
для Snap:snap set certbot trust-plugin-with-root=ok sudo snap install certbot-dns-rfc2136
- Сам Certbot может находиться на произвольном сервере.
2.1.3 Настройка BIND
Сгенерируйте секретный TSIG-ключ:
tsig-keygen -a HMAC-SHA512 example-key
- Здесь
example-key
— имя вашего ключа. Выбирается произвольно. Можно назвать по имени домена.
- Здесь
Добавьте ключ в файл конфигурации Bind
/etc/named.conf
:// /etc/named.conf zone "domain.ltd" IN { // this is for certbot update-policy { grant example-key name _acme-challenge.domain.ltd. txt; }; }; key "example-key" { algorithm hmac-sha512; secret "секретный_ключ"; };
Перезапустите named:
systemctl restart named.service
2.1.4 Настройка certbot
- Сгенерируйте файл конфигурации для плагина rfc2136
/etc/letsencrypt/rfc2136_domain.ltd.ini
:# Target DNS server dns_rfc2136_server = IP-адрес # Target DNS port dns_rfc2136_port=53 # TSIG key name dns_rfc2136_name = example-key # TSIG key secret dns_rfc2136_secret = ключ_без_кавычек # TSIG key algorithm dns_rfc2136_algorithm = HMAC-SHA512
- Поправьте права доступа:
chmod 600 /etc/letsencrypt/rfc2136_domain.ltd.ini
2.1.5 Получение сертификата
- Выполните команду
certbot certonly \ --dns-rfc2136 --force-renewal \ --dns-rfc2136-credentials /etc/letsencrypt/rfc2136_domain.ltd.ini \ --server https://acme-v02.api.letsencrypt.org/directory \ --email example@domain.ltd \ --agree-tos --no-eff-email \ --dns-rfc2136-propagation-seconds 60 \ -d 'domain.ltd' -d '*.domain.ltd'
- Сертификаты помещаются в каталог
/etc/letsencrypt/live/domain.ltd
.
2.2 Сертификаты HTTP
2.2.1 Сервер Apache
- Плагин
certbot-apache
предоставляет автоматическую настройку Apache HTTP Server. - Он пытается найти конфигурацию каждого домена, а также добавляет рекомендованные для безопасности параметры, настройки использования сертификатов и пути к сертификатам Let’s Encrypt.
- Первоначальная настройка виртуальных хостов:
certbot --apache
- Обновление сертификатов:
certbot renew
- Изменение сертификатов без изменения файлов конфигурации apache:
certbot --apache certonly
2.2.2 Сервер Nginx
- Плагин
certbot-nginx
предоставляет автоматическую настройку Nginx HTTP Server. - Он пытается найти конфигурацию каждого домена, а также добавляет рекомендованные для безопасности параметры, настройки использования сертификатов и пути к сертификатам Let’s Encrypt.
- Первоначальная настройка виртуальных хостов:
certbot --nginx
- Обновление сертификатов:
certbot renew
- Изменение сертификатов без изменения файлов конфигурации nginx:
certbot --nginx certonly
3 Установка
3.1 Установка certbot
- Проверьте, что установлен репозитории EPEL:
dnf -y install epel-release
- Установите certbot:
dnf -y install certbot
- Для веб-сервера Apache:
dnf -y install python3-certbot-apache
- Для веб-сервера Nginx:
dnf -y install python3-certbot-nginx
- Для сертификата DNS:
dnf -y install python3-certbot-dns-rfc2136
3.2 Установка реализации snap certbot
- Установка Snap
- Centos
- Установите репозиторий Epel
sudo dnf install epel-release sudo dnf upgrade
- Установите Snap
sudo dnf -y install snapd
- Установите репозиторий Epel
- Centos
- Запустите Snap
sudo systemctl enable --now snapd.socket sudo ln -s /var/lib/snapd/snap /snap
- Обновите Snap (перед этим необходимо немного подождать, чтобы запустился snapd)
sudo snap install core sudo snap refresh core
- Установка certbot
sudo snap install --classic certbot
- Сделайте символьную ссылку для запуска:
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot