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

Вступление

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

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

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

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

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

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

Для получения дополнительной информации о сертификатах и ​​различных типах центров сертификации вы можете прочитать «https://www.digitalocean.com/community/tutorials/a-comparison-of-let-s-encrypt-commercial-and-private-certificate -authorities-and-self-подписанные ssl-сертификаты [Сравнение Let's Encrypt, коммерческих и частных центров сертификации и самоподписанных SSL-сертификатов]. »

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

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

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

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

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

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

Клиент Certbot Let Encrypt

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

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

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

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

sudo certbot renew

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

Если вы хотите узнать больше о cron и crontabs, пожалуйста, обратитесь к учебнику «https://www.digitalocean.com/community/tutorials/how-to-use-cron-to-automate-tasks-on-a -vps [Как использовать Cron для автоматизации задач]. »

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

Поскольку протокол ACME открыт и хорошо документирован, было разработано много альтернативных клиентов. Let's Encrypt поддерживаетlist of ACME clients на своем веб-сайте. Большинство других клиентов не имеют функций автоматической настройки веб-сервера 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 Encrypt.

Заключение

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

Related