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

Введение

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

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

Этот учебник кратко рассмотрит центры сертификации и принцип работы Let’s Encrypt, а затем рассмотрит несколько популярных клиентов ACME.

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

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

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

Для получения дополнительной информации о сертификатах и различных типах сертифицирующих центров вы можете прочитать “Сравнение Let’s Encrypt, коммерческих и частных сертифицирующих центров и самоподписанных SSL-сертификатов”.

Далее мы рассмотрим, как Let’s Encrypt выполняет автоматическую проверку домена.

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

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

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

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

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

Клиент Certbot для Let’s Encrypt

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

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

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

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

  1. sudo certbot renew

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

Если вы хотите узнать больше о cron и кронтабах, обратитесь к учебнику “Как использовать cron для автоматизации задач”.

Другие клиенты

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

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

Некоторые из более популярных клиентов:

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

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

Заключение

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

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt