Клиенты 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-записей.
  • Документация: https://certbot-dns-rfc2136.readthedocs.io/

2.1.2 Установка программного обеспечения

  1. Snap

    • Установка плагина certbot-dns-rfc2136 для Snap:
      1snap set certbot trust-plugin-with-root=ok
      2sudo snap install certbot-dns-rfc2136
      
    • Сам Certbot может находиться на произвольном сервере.
  1. Пакетный менеджер

    • Rocky Linux:
      1sudo dnf -y install certbot python3-certbot-dns-rfc2136
      

2.1.3 Настройка BIND

  • Сгенерируйте секретный TSIG-ключ:

    1tsig-keygen -a HMAC-SHA512 example-key
    
    • Здесь example-key — имя вашего ключа. Выбирается произвольно. Можно назвать по имени домена.
  • Добавьте ключ в файл конфигурации Bind /etc/named.conf:

     1// /etc/named.conf
     2
     3zone "domain.ltd" IN {
     4        // this is for certbot
     5        update-policy {
     6                grant example-key name _acme-challenge.domain.ltd. txt;
     7        };
     8};
     9
    10key "example-key" {
    11        algorithm hmac-sha512;
    12        secret "секретный_ключ";
    13};
    
  • Перезапустите named:

    1systemctl restart named.service
    

2.1.4 Настройка certbot

  • Сгенерируйте файл конфигурации для плагина rfc2136 /etc/letsencrypt/rfc2136_domain.ltd.ini:
     1# Target DNS server
     2dns_rfc2136_server = IP-адрес
     3# Target DNS port
     4dns_rfc2136_port=53
     5# TSIG key name
     6dns_rfc2136_name = example-key
     7# TSIG key secret
     8dns_rfc2136_secret = ключ_без_кавычек
     9# TSIG key algorithm
    10dns_rfc2136_algorithm = HMAC-SHA512
    
  • Поправьте права доступа:
    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
        1sudo dnf install epel-release
        2sudo dnf upgrade
        
      • Установите Snap
        1sudo dnf -y install snapd
        
  • Запустите Snap
    1sudo systemctl enable --now snapd.socket
    2sudo ln -s /var/lib/snapd/snap /snap
    
  • Обновите Snap (перед этим необходимо немного подождать, чтобы запустился snapd)
    1sudo snap install core
    2sudo snap refresh core
    
  • Установка certbot
    1sudo snap install --classic certbot
    
  • Сделайте символьную ссылку для запуска:
    1sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие