# Let's Encrypt и ACME

> Let's Encrypt — бесплатный автоматизированный центр сертификации; ACME — открытый протокол, по которому программы автоматически получают и продлевают TLS-сертификаты.

Источник: https://llmdocs.ru/wiki/lets-encrypt-acme/ · обновлено 2026-11-09 · лицензия CC BY-SA 4.0

- **Тип**: некоммерческий центр сертификации
- **Оператор**: Internet Security Research Group (ISRG)
- **Запуск**: первый сертификат — сентябрь 2015, публичная бета — декабрь 2015
- **Протокол**: ACME (RFC 8555, март 2019)
- **Срок действия сертификата**: 90 дней
- **Типы проверок**: HTTP-01, DNS-01, TLS-ALPN-01
- **Типы сертификатов**: DV, включая wildcard (через DNS-01)
- **Клиенты**: Certbot, acme.sh, lego, Caddy, cert-manager
**Let's Encrypt** — бесплатный, автоматизированный и открытый центр сертификации, выдающий сертификаты для [TLS](https://llmdocs.ru/wiki/tls.md). **ACME** (англ. *Automatic Certificate Management Environment*) — протокол, по которому программа на сервере сама доказывает владение доменом, получает сертификат и продлевает его без участия человека. Вместе они сделали HTTPS нормой: до их появления сертификат стоил денег и требовал ручной возни, а сегодня большая часть веб-страниц загружается по HTTPS.[6]

## История

Проект основала некоммерческая организация Internet Security Research Group (ISRG) при участии Mozilla, Electronic Frontier Foundation, Мичиганского университета и других. Первый сертификат был выпущен в сентябре 2015 года, публичная бета открылась в декабре 2015-го, а в апреле 2016 года сервис вышел из беты. Протокол ACME, созданный для Let's Encrypt, был стандартизирован IETF как RFC 8555 в марте 2019 года.[2] В 2018 году со второй версией протокола появились wildcard-сертификаты (`*.example.com`).

Let's Encrypt — один из крупнейших центров сертификации в мире: он обслуживает сотни миллионов сайтов.[6] Протокол ACME поддерживают и другие центры сертификации — ZeroSSL, Google Trust Services, Buypass, — поэтому клиент можно переключить на другого поставщика одной настройкой.

## Как работает ACME

Let's Encrypt выдаёт сертификаты с проверкой домена (DV): он удостоверяет только, что заявитель контролирует доменное имя (подробнее — [Сертификат X.509 и центры сертификации](https://llmdocs.ru/wiki/x509-certificates.md)).[1]

1. Клиент создаёт учётную запись — пару ключей, которой подписывает все запросы к серверу ACME.
2. Клиент оформляет **заказ** на сертификат для одного или нескольких имён.
3. Для каждого имени сервер выдаёт **проверку** (*challenge*), и клиент её выполняет.
4. Сервер проверяет выполнение со своей стороны (с нескольких точек в интернете).
5. Клиент отправляет запрос на подпись сертификата (CSR) и получает цепочку сертификатов.
6. Примерно за треть срока до окончания клиент повторяет процедуру автоматически.

## Типы проверок

| Проверка | Как подтверждается владение | Особенности |
|---|---|---|
| HTTP-01 | файл по адресу `http://<домен>/.well-known/acme-challenge/<токен>` | нужен доступ к порту 80; wildcard не поддерживает |
| DNS-01 | TXT-запись `_acme-challenge.<домен>` | единственный способ для wildcard; работает для серверов, закрытых из интернета; нужен API DNS-провайдера |
| TLS-ALPN-01 | особый сертификат при TLS-подключении к порту 443 | для прокси и балансировщиков, которым не нужен порт 80 |

Подробности — в документации Let's Encrypt.[3] Для DNS-01 нужно создать [TXT-запись](https://llmdocs.ru/wiki/dns-records.md), поэтому клиенты поддерживают API десятков DNS-провайдеров.

## Короткий срок жизни

Сертификаты Let's Encrypt действуют 90 дней, а не год или два, как было принято раньше. Это сделано сознательно: короткий срок уменьшает ущерб при утечке закрытого ключа и вынуждает автоматизировать продление — ручное продление раз в три месяца неудобно, поэтому его просто не делают вручную. Индустрия идёт дальше: Let's Encrypt предлагает и сертификаты на несколько дней, а требования браузеров к максимальному сроку действия сертификатов постепенно ужесточаются.

## Клиенты

```bash
# Certbot (EFF): получить сертификат и настроить nginx
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run          # проверить автопродление

# acme.sh: wildcard через DNS-API провайдера
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
```

- **Certbot** — эталонный клиент от EFF, умеет сам настраивать [nginx](https://llmdocs.ru/wiki/nginx.md) и Apache и ставит таймер продления (см. [cron и таймеры systemd](https://llmdocs.ru/wiki/cron-systemd-timers.md)).[5]
- **acme.sh** — клиент на чистом shell без зависимостей; **lego** — на Go.
- **[Caddy](https://llmdocs.ru/wiki/caddy.md)** и Traefik получают и продлевают сертификаты сами, без отдельного клиента: достаточно указать домен в конфигурации.
- **cert-manager** выпускает сертификаты для [Kubernetes](https://llmdocs.ru/wiki/kubernetes.md) и хранит их в объектах Secret.[7]

## Ограничения

- Только проверка домена (DV): нет сертификатов с проверкой организации (OV/EV) и сертификатов для IP-адресов в классическом виде.
- Лимиты на частоту выпуска: например, не больше 50 сертификатов на зарегистрированный домен в неделю и ограниченное число неудачных проверок. Для отладки используют тестовый сервер (*staging*) с мягкими лимитами.[4]
- Перед выпуском центр сертификации проверяет DNS-запись CAA: если владелец домена разрешил выпуск только другому центру, Let's Encrypt откажет.
- Все выпущенные сертификаты публикуются в журналах прозрачности сертификатов (Certificate Transparency) — по ним можно узнать имена поддоменов. Для внутренних имён это стоит учитывать или использовать wildcard.

## См. также

- [TLS](https://llmdocs.ru/wiki/tls.md)
- [Сертификат X.509 и центры сертификации](https://llmdocs.ru/wiki/x509-certificates.md)
- [Caddy](https://llmdocs.ru/wiki/caddy.md)
- [nginx](https://llmdocs.ru/wiki/nginx.md)
- [DNS](https://llmdocs.ru/wiki/dns.md)

## Источники

1. [Let's Encrypt — How It Works](https://letsencrypt.org/how-it-works/)
2. [RFC 8555 — Automatic Certificate Management Environment (ACME)](https://www.rfc-editor.org/rfc/rfc8555)
3. [Let's Encrypt — Challenge Types](https://letsencrypt.org/docs/challenge-types/)
4. [Let's Encrypt — Rate Limits](https://letsencrypt.org/docs/rate-limits/)
5. [Certbot — EFF](https://certbot.eff.org/)
6. [Let's Encrypt — Statistics](https://letsencrypt.org/stats/)
7. [cert-manager — documentation](https://cert-manager.io/docs/)
