Cryptology Academy · Урок

Let's Encrypt и автоматизация протокола ACME

Автоматизируйте выпуск и продление сертификатов с помощью протокола ACME, Certbot и других клиентов.

Урок 4 из 413 шагов

«Let's Encrypt и автоматизация протокола ACME» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Введение в Let's Encrypt

Let's Encrypt — бесплатный автоматизированный открытый центр сертификации, управляемый Исследовательской группой по безопасности Интернета (ISRG), запущенный в общедоступной бета-версии в декабре 2015 года. Он выдал более 3 миллиардов сертификатов и значительно ускорил распространение HTTPS в Интернете, устранив стоимость и сложность получения общедоверенных TLS-сертификатов.

Обзор протокола ACME

Протокол автоматизированного управления сертификатами (ACME), стандартизированный в RFC 8555 в 2019 году, определяет, как клиенты автоматически подтверждают владение доменом и получают сертификаты от CA. ACME заменяет ручные процессы проверки домена криптографически проверяемым автоматизированным обменом, обеспечивая управление жизненным циклом сертификатов без ручного вмешательства.

Проверка HTTP-01

Проверка HTTP-01 подтверждает владение доменом: клиент ACME должен разместить специальный файл с TOKEN по адресу "http://DOMAIN/.well-known/acme-challenge/TOKEN". CA запрашивает этот URL, чтобы проверить TOKEN. HTTP-01 легко реализовать, но для неё требуется доступный порт 80, и её нельзя использовать для сертификатов с подстановочным знаком.

Проверка DNS-01

Проверка DNS-01 подтверждает владение доменом: клиент ACME должен создать TXT-запись DNS по адресу "_acme-challenge.DOMAIN" с определённым значением. CA запрашивает DNS, чтобы проверить эту запись. DNS-01 — единственный тип проверки, поддерживающий выпуск сертификатов с подстановочным знаком ("*.example.com"); она работает даже в случаях, когда веб-серверы находятся за межсетевыми экранами.

Проверка TLS-ALPN-01

Проверка TLS-ALPN-01 подтверждает владение доменом на уровне TLS с помощью специального идентификатора протокола ALPN "acme-tls/1". Клиент ACME временно предоставляет самоподписанный сертификат с TOKEN проверки в специальном расширении на порту 443. Эта проверка работает без запущенного веб-сервера и поддерживает среды с балансировкой нагрузки.

Эталонный клиент Certbot

Certbot — эталонный клиент ACME Фонда электронных рубежей для Let's Encrypt. Он автоматизирует весь жизненный цикл сертификата: проверку домена, выпуск сертификата и автоматическое продление. Certbot включает модули для Apache и nginx, которые автоматически настраивают параметры TLS. Установите его с помощью команды "snap install --classic certbot" в современных дистрибутивах Linux.

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

Помимо Certbot существуют многочисленные клиенты ACME для разных сценариев использования. acme.sh — клиент ACME, реализованный как обычный скрипт командной оболочки и широко используемый в лёгких средах. Веб-сервер Caddy имеет встроенную поддержку ACME и автоматически продлевает сертификаты. Traefik, используемый в контейнерных средах, обрабатывает ACME с помощью своей конфигурации certificatesResolvers для рабочих нагрузок в контейнерах.

Автоматизация продления сертификатов

Сертификаты Let's Encrypt по замыслу действуют 90 дней, что поощряет автоматизацию и сокращает период риска при компрометации закрытых ключей. Certbot устанавливает таймер systemd или задание cron, которое дважды в день запускает команду "certbot renew" и продлевает все сертификаты, срок действия которых истекает в течение 30 дней. Ручное продление — антишаблон, приводящий к сбоям в работе.

Ограничения частоты запросов Let's Encrypt

Let's Encrypt вводит ограничения частоты запросов для предотвращения злоупотреблений. Основные ограничения — 50 сертификатов на зарегистрированный домен в неделю и 5 дубликатов сертификатов в неделю. Неудачные попытки проверки также ограничены: не более 5 попыток для одного имени узла в час. Во время разработки тестовая среда Let's Encrypt предоставляет неограниченный выпуск сертификатов с использованием тестового CA, которому нет публичного доверия.

Многодоменные сертификаты и сертификаты с подстановочным знаком

Один сертификат ACME может охватывать несколько доменов (альтернативные имена субъекта). Команда "certbot --domains example.com,www.example.com,api.example.com" выпускает сертификат с тремя SAN. Сертификаты с подстановочным знаком ("*.example.com") требуют проверки DNS-01 и охватывают все поддомены одного уровня. Они не охватывают сам корневой домен (example.com), поэтому требуется дополнительный SAN.

ACME для внутренней PKI

Протокол ACME не ограничивается Let's Encrypt. Внутренние CA, такие как Step-CA (smallstep), EJBCA и HashiCorp Vault, могут предоставлять конечные точки ACME для автоматизации выпуска внутренних сертификатов. Благодаря этому такое же автоматизированное управление жизненным циклом сертификатов, которое используется для общедоступных сервисов, можно применять к внутренней инфраструктуре mTLS и частным сервисам.

Проверка типов ACME

Какой тип проверки ACME требуется для выпуска сертификата с подстановочным знаком, например "*.example.com"?

Итоги урока: Let's Encrypt и ACME

Let's Encrypt предоставляет бесплатные сертификаты через протокол ACME (RFC 8555). Проверка HTTP-01 подходит для обычных сертификатов на порту 80, но не для сертификатов с подстановочным знаком. DNS-01 позволяет выпускать сертификаты с подстановочным знаком, подтверждая контроль над зоной DNS. TLS-ALPN-01 работает без веб-сервера. Certbot и acme.sh автоматизируют весь жизненный цикл. Сертификаты сроком действия 90 дней требуют автоматизации. Ограничения частоты запросов делают необходимым использование тестовой среды во время тестирования.

Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «Let's Encrypt и автоматизация протокола ACME» бесплатный?

Да — полный текст урока «Let's Encrypt и автоматизация протокола ACME» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Let's Encrypt и автоматизация протокола ACME»?

Автоматизируйте выпуск и продление сертификатов с помощью протокола ACME, Certbot и других клиентов. Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Let's Encrypt и автоматизация протокола ACME»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы командной строки OpenSSL
  2. Создание и управление цепочками сертификатов
  3. OCSP Stapling и прозрачность сертификатов
  4. Let's Encrypt и автоматизация протокола ACME
← Назад к Cryptology Academy