Клиенты 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 Установка программного обеспечения

  • Установка плагина 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
        
  • Запустите 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
    

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

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

Похожие