Открыть сервис

Certbot — клиент Let's Encrypt

Certbot — это свободная клиентская программа с открытым исходным кодом для автоматического получения, установки и обновления цифровых сертификатов TLS/SSL от удостоверяющего центра Let's Encrypt. Разработанная Фондом электронных рубежей (EFF), программа предназначена для упрощения процесса настройки HTTPS на веб-серверах. Certbot работает на операционных системах семейства Unix (Linux, BSD, macOS) и поддерживает интеграцию с популярными веб-серверами, такими как Apache и Nginx.

История

Проект был запущен в 2014 году как часть инициативы Let's Encrypt, созданной некоммерческим консорциумом Internet Security Research Group (ISRG) при поддержке EFF, Mozilla, Cisco и других компаний. Первая публичная версия Certbot вышла в мае 2015 года, став официальным клиентом для работы с сервисом Let's Encrypt. Изначально программа называлась letsencrypt, но в 2016 году была переименована в Certbot, чтобы избежать путаницы между клиентом и самим сервисом.

С момента запуска Certbot стал одним из самых распространённых инструментов для автоматизации управления сертификатами. В 2023 году Фонд электронных рубежей передал техническое сопровождение проекта компании ISRG, которая продолжает развивать клиент совместно с сообществом разработчиков.

Принцип работы

Основой функционирования Certbot является протокол ACME (Automatic Certificate Management Environment). Этот протокол позволяет автоматически проверять право владения доменом и выпускать сертификаты без участия человека. Certbot взаимодействует с сервером Let's Encrypt через API, отправляя запросы на выпуск, продление и отзыв сертификатов.

Процесс получения сертификата включает несколько этапов:

  • Проверка владения доменом. Клиент доказывает, что контролирует домен, с помощью одного из методов: размещения временного файла на веб-сервере (HTTP-01), создания специальной DNS-записи (DNS-01) или настройки TLS-расширения (TLS-ALPN-01).
  • Выпуск сертификата. После успешной проверки Let's Encrypt выпускает сертификат, который Certbot сохраняет в локальном хранилище.
  • Установка в веб-сервер. При наличии соответствующих плагинов Certbot автоматически изменяет конфигурацию Apache или Nginx, подключая полученный сертификат и настраивая автоматическое перенаправление HTTP-запросов на HTTPS.
  • Автоматическое продление. Сертификаты Let's Encrypt действуют 90 дней. Certbot настраивает системный планировщик задач (cron или systemd timer) для периодической проверки и продления сертификатов, срок действия которых подходит к концу.

Установка и настройка

Certbot распространяется через официальные репозитории большинства дистрибутивов Linux. В зависимости от операционной системы установка выполняется стандартными менеджерами пакетов: apt для Debian и Ubuntu, dnf для Fedora и CentOS, pacman для Arch Linux. Для macOS доступна установка через Homebrew.

Базовый синтаксис команды для получения сертификата с автоматической настройкой Nginx выглядит следующим образом:

`` sudo certbot --nginx -d example.com -d www.example.com ``

Команда запускает интерактивный процесс, в ходе которого Certbot определяет конфигурацию сервера, выполняет проверку домена и устанавливает сертификат. Для Apache используется аналогичный плагин --apache. Если автоматическая настройка не требуется или используется нестандартный веб-сервер, применяется режим certonly, который только получает сертификат и сохраняет его в файлы, не изменяя конфигурацию сервера.

Ключевые возможности

Certbot поддерживает широкий набор функций, делающих его универсальным инструментом для управления сертификатами:

  • Автоматическое продление. Планировщик задач запускает команду certbot renew дважды в сутки. Если срок действия сертификата истекает менее чем через 30 дней, программа выполняет его продление.
  • Поддержка wildcard-сертификатов. Для доменов с множеством поддоменов Certbot поддерживает выпуск сертификатов, покрывающих все поддомены первого уровня, через DNS-проверку.
  • Плагины для DNS-провайдеров. Для метода проверки DNS-01 существуют десятки плагинов, автоматизирующих создание записей у популярных DNS-хостингов (Cloudflare, Amazon Route 53, DigitalOcean и других).
  • Webroot-режим. Позволяет выполнять проверку HTTP-01 без остановки веб-сервера, размещая временные файлы в указанной директории.
  • Автономный режим. Встроенный временный веб-сервер используется для проверки домена, если основной веб-сервер не запущен или работает на другом устройстве.
  • Хуки. Механизм выполнения пользовательских скриптов до и после операций с сертификатами, что позволяет, например, перезагружать почтовый сервер или обновлять другие службы.
  • Экспорт в различные форматы. Certbot сохраняет сертификаты в стандартном формате PEM, а также может конвертировать их в PKCS#12 для использования в Java-приложениях или Windows-серверах.

Применение

Основная область применения Certbot — защита веб-сайтов и веб-приложений с помощью протокола HTTPS. Программа используется как частными владельцами небольших сайтов, так и крупными хостинг-провайдерами и облачными платформами, которые включают Certbot в свои панели управления.

Помимо веб-серверов Apache и Nginx, Certbot применяется для настройки защищённых соединений в почтовых серверах (Postfix, Dovecot), системах обмена мгновенными сообщениями (XMPP), VPN-серверах (OpenVPN, WireGuard) и других сервисах, использующих протокол TLS. Для этого используется режим получения сертификата без автоматической установки с последующей ручной настройкой служб.

Certbot также является эталонной реализацией клиента ACME. Его код служит справочным материалом для разработчиков других клиентов автоматического управления сертификатами, а протокол ACME, стандартизированный в RFC 8555, во многом развивался с учётом опыта, полученного при создании Certbot.

Альтернативы

Помимо Certbot, существуют другие клиенты ACME, которые могут использоваться для работы с Let's Encrypt и аналогичными сервисами. К числу наиболее известных относятся acme.sh (лёгкий клиент на языке shell), lego (библиотека и утилита на Go), dehydrated (минималистичный клиент на Bash) и Caddy (веб-сервер со встроенной автоматической поддержкой HTTPS). Выбор конкретного инструмента зависит от требований к интеграции, используемого стека технологий и предпочтений администратора.

Критика и ограничения

Certbot критикуется за относительно высокое потребление ресурсов по сравнению с более лёгкими альтернативами, а также за сложность конфигурации в нестандартных окружениях. Некоторые пользователи отмечают, что программа написана на Python и требует установки значительного числа зависимостей, что может быть проблематично для минималистичных серверов.

Другим ограничением является то, что Certbot ориентирован в первую очередь на серверы с постоянным доступом в интернет и не предоставляет встроенных средств для управления сертификатами на устройствах с периодическим подключением (например, встроенных системах или IoT-устройствах). Для таких сценариев обычно применяются специализированные решения или ручное копирование сертификатов.

Источники

  • Официальная документация Certbot на сайте certbot.eff.org
  • Документация Let's Encrypt на сайте letsencrypt.org
  • RFC 8555 «Automatic Certificate Management Environment (ACME)»
  • Репозиторий Certbot на GitHub

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →