Краткий обзор сервиса Let’s Encrypt

Let’s Encrypt – это открытый автоматизированный центр сертификации, который выдает бесплатные сертификаты TLS/SSL с помощью протокола ACME. Эти сертификаты позволяют шифровать взаимодействие между веб-сервером и пользователями. Let’s Encrypt предоставляет десятки доступных клиентов, написанных на разных языках программирования, и множество интеграций с популярными инструментами администрирования, сервисами и серверами.

Самый популярный ACME-клиент, Certbot, теперь разрабатывается командой Electronic Frontier Foundation. Помимо проверки прав на домен и выдачи сертификатов, Certbot может автоматически настраивать TLS/SSL на веб-серверах Apache и Nginx.

В этом руководстве кратко рассказывается о центрах сертификации и ACME-клиентах, а также о том, как работает шифрование Let’s Encrypt.

Что такое центр сертификации?

Центр сертификации (ЦС) – это объект, который может поставить на сертификатах TLS/SSL криптографическую подпись, чтобы таким образом подтвердить их подлинность. Браузеры и операционные системы имеют список доверенных ЦС, который они используют для проверки сертификатов сайтов.

До недавнего времени все ЦС были коммерческими организациями, которые брали деньги за подпись сертификата. Центр Let’s Encrypt автоматизировал эту услугу и сделал ее бесплатной. Финансирование инфраструктуры Let’s Encrypt осуществляет за счет спонсорства и пожертвований.

Читайте также: Краткое сравнение центров сертификации SSL

Как работает Let’s Encrypt?

Протокол ACME, который использует центр Let’s Encrypt, определяет, как клиенты взаимодействуют с серверами ЦС для подтверждения прав собственности на домен, запроса и загрузки сертификатов. В настоящее время он становится официальным стандартом IETF.

Let’s Encrypt выдает сертификаты только сайтам, у которых есть домен; прежде чем ЦС выдаст сертификат, он должен убедиться, что запрос поступает от человека, который фактически обладает всеми правами на домен. Для этого клиенту отправляется уникальный токен, а затем ЦС создает веб- или DNS- запрос для извлечения ключа из этого токена.

К примеру, в случае с HTTP клиент должен вычислить ключ из уникального токена, а затем поместить результаты в файл, который будет обслуживаться веб-сервером. После этого серверы Let’s Encrypt смогут извлечь файл по ссылке http://example.com/.well-known/acme-challenge/token. Если он содержит правильный ключ, клиент проходит проверку прав на домен, и сервер подписывает и возвращает сертификат.

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

Клиент Certbot

Certbot на сегодняшний день является самым популярным клиентом Let’s Encrypt. Он входит в большинство основных дистрибутивов Linux и включает удобные функции автоматической настройки для Apache и Nginx. После установки вы можете получить сертификат и обновить конфигурации Apache с помощью команды:

sudo certbot --apache -d www.example.com

Certbot задаст несколько вопросов, загрузит сертификат, обновит конфигурации Apache и перезапустит сервер. Затем вы можете открыть https://www.example.com с помощью веб-браузера. В адресной строке появится зеленый замочек, указывающий, что сертификат действителен и соединение зашифровано.

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

sudo certbot renew

Поместите эту команду в crontab. Демон cron будет автоматически запускать ее каждый день, и сертификаты будут автоматически обновляться за тридцать дней до истечения срока их действия. Если изначально сертификат создавался с параметрами -apache или -nginx, Certbot перезагрузит сервер после успешного обновления сертификата.

Читайте также: Автоматизация задач с помощью Cron

Другие клиенты Let’s Encrypt

Поскольку протокол ACME открыт и хорошо документирован, на его основе разработаны многие альтернативные клиенты. Let’s Encrypt ведет список клиентов ACME на своем веб-сайте. Большинство других клиентов, в отличие от Certbot, не имеют функций автоматической настройки веб-сервера, но у них есть другие функции, которые могут вам пригодиться:

  • У Let’s Encrypt есть клиенты на большинстве языков программирования, включая сценарии оболочки, Go и Node.js. Это может быть важно, если вы создаете сертификаты в ограниченной среде и не можете добавить Python и другие зависимости Certbot.
  • Некоторые клиенты не требуют привилегий root. В отдельных ситуациях рекомендуется использовать минимальное количество кода с привилегиями администратора.
  • Многие клиенты могут автоматизировать процедуру проверки домена по DNS, автоматически создав  соответствующую запись TXT через API-интерфейс DNS-провайдера.
  • Некоторые клиенты интегрированы в веб-серверы, обратные прокси-серверы или балансировщики нагрузки, что упрощает настройку и развертывание.

Наиболее популярными клиентами являются:

  • lego: написанный на Go клиент, состоит из одного бинарного файла и поддерживает множество DNS-провайдеров при проверке по DNS.
  • acme.sh: простой сценарий оболочки, который работает без привилегий администратора и поддерживает более 30 DNS-провайдеров.
  • Caddy: полноценный веб-сервер, написанный на Go, со встроенной поддержкой Let’s Encrypt.

Сегодня существует еще много клиентов, и многие другие серверы автоматизируют настройку TLS/SSL, интегрируя поддержку Let’s Encrypt.

Заключение

Теперь вы знакомы с основами работы Let’s Encrypt, главными клиентами этого ЦС и их базовыми функциями.

Читайте также:

Tags: , , ,