Перейти к содержимому

Let s encrypt что это

  • автор:

Что такое Let's Encrypt

Let’s Encrypt — это бесплатный, автоматизированный и открытый Центр сертификации (ЦС), работающий на благо общества. Это сервис, предоставляемый Исследовательской группой по безопасности Интернета (ISRG).

Мы помогаем людям выпускать SSL/TLS сертификаты для их сайтов с доступом по HTTPS, бесплатно, максимально облегчая процесс выдачи. Потому что хотим сделать интернет безопасным, и уважающим конфиденциальность его пользователей.

О наших успехах за последний год вы можете узнать, скачав наш годовой отчёт.

Ключевые принципы Let’s Encrypt:

  • Бесплатность: Любой владелец домена может использовать Let’s Encrypt для получения SSL/TLS сертификатов, не тратя ни копейки.
  • Автоматизированность: Программное обеспечение, запущенное на веб-сервере, может взаимодействовать с Let’s Encrypt и само позаботится о получении, безопасной настройке и обновлении сертификата.
  • Безопасность: Let’s Encrypt будет платформой для передовых технологии в области безопасности TLS, и на стороне ЦС, и помогая владельцам сайтов защищать их серверы.
  • Прозрачность: Все выданные или отозванные сертификаты будут сохранены открыто и доступно для любых проверок.
  • Открытость: Протокол автоматического выпуска и обновления сертификатов опубликован как открытый стандарт, готовый для использования другими.
  • Взаимодействие: Подобно лежащим в основе Интернета протоколам, Let’s Encrypt — это результат совместных усилий на благо сообщества, неподконтрольных какой-либо одной организации.

У нас есть страница с более подробной информацией о том, как работает ЦС Let’s Encrypt.

Помогите сделать Интернет безопасным и уважающим вашу конфиденциальность.

Let’s Encrypt — это бесплатный, автоматизированный и открытый Центр Сертификации, созданный для вас некоммерческой организацией Internet Security Research Group (ISRG).

Получение SSL-сертификата от Let’s Encrypt на VPS

SSL-сертификат (TLS-сертификат) – это специальный цифровой документ, который связывает между собой криптографический ключ и информацию о сайте, для которого он был выпущен. Наличие SSL-сертификата, выпущенного доверенным центром сертификации, является обязательным условием для установления безопасного соединения между сервером и клиентами по протоколу HTTPS.

SSL-сертификат обеспечивает защиту личной информации, позволяет шифровать данные, передаваемые между браузером и сервером, гарантируя сохранность персональной информации пользователей.

Существует несколько разновидностей SSL-сертификатов, различающихся степенью глубины проверки данных о владельце сайта. Из-за того, что такие SSL-сертификаты являлись платными, их достаточно редко использовали для небольших сайтов, домашних страниц, личных блогов и т.п. В результате, большая часть сайтов в интернете не использовала защищенные протоколы для связи с клиентами.

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

Let’s Encrypt – это некоммерческий центр сертификации, предоставляющий сертификаты для 260 миллионов сайтов. Let’s Encrypt занимается выпуском сертификатов, поддерживаемых современными браузерами (полный их список доступен на официальном форуме поддержки Let’s Encrypt). Подробную информацию о совместимости сертификатов можно найти здесь.

Мы считаем, что каждый сайт должен работать через SSL, поэтому сделали установку сертификатов простой и быстрой. Наши пользователи могут защитить свои домены с помощью бесплатного SSL-сертификата, который зашифрован 256-битным симметричным ключом, автоматически устанавливается и обновляется. На VPS сертификат устанавливается вручную либо через сторонние панели. Подробные инструкции по установке представлены ниже.

Стандартный сертификат защищает домен и до 39 поддоменов, а Wildcard используется для сайтов с большим или динамическим числом поддоменов. Сертификаты Let’s Encrypt можно устанавливать на домены в зоне .РФ или кириллические домены в любой другой зоне. Среди ключевых достоинств сертификатов от Let’s Encrypt – легкость получения и надежность (сертификат бесплатный, однако степень шифрования не уступает платным аналогам).

В Let’s Encrypt можно получить бесплатный SSL‑сертификат сроком действия в 90 дней. Для получения такого сертификата необходимо подтвердить факт владения доменом с использованием протокола аутентификации ACME (Automated Certificate Management Environment), согласно которому к веб-серверу, запросившему выпуск сертификата, производится серия запросов для валидации домена. После выполнения этой процедуры владельцу домена выдается SSL-сертификат, который следует установить и настроить на своем сервере.

Мы подготовили простые инструкции, которые позволят вам выпустить бесплатный SSL-сертификат и настроить его автоматическое обновление для веб-серверов Nginx, Apache и панели управления VestaCP, в зависимости от того, что вы используете на своем виртуальном сервере.

Выпуск и настройка сертификата для панели управления VestaCP

VestaCP – это панель управления с открытым исходным кодом, которая может использоваться для управления сайтами, учетными записями электронной почты, FTP и т. д. Интерфейс VestaCP позволяет добавлять новые сайты и домены, прямо из панели работать с почтой, создавать резервные копии и добавлять SSL‑сертификаты.

Поддержка Let’s Encrypt доступна в VestaCP из коробки.

Для выпуска и установки сертификата вы можете отметить дополнительные опции сразу при добавлении домена в разделе WEB панели VestaCP:

Или отредактировать настройки домена в разделе WEB, выбрав опции поддержки SSL уже после добавления:

Выпуск и автоматическая установка сертификата занимают до 5 минут. После этого данные SSL-сертификата будут доступны также в настройках домена.

Помимо этого, при установке добавляется cron-задание для автоматического обновления сертификатов, истекающих через 30 и менее дней. Проверить это можно в разделе CRON панели VestaCP:

Решение возможных проблем

Error: Let’s Encrypt validation status 400
  • Убедитесь, что ваше доменное имя было введено правильно.
  • При использовании АААА записей убедитесь, что в DNS присутствуют также записи типа А.
  • Убедитесь, что записи DNS типа A для этого домена и www-поддомена содержат правильный IP-адрес (адрес текущего VPS сервера).
  • Убедитесь, что в конфигурационном файле NGINX отсутствует 301-й редирект на HTTPS (для выпуска или перевыпуска сертификата домен должен быть доступен по HTTP).
Error: LetsEncrypt challenge request 429
  • Попробуйте удалить домен из панели VestaCP и добавить его снова, после чего повторить попытку выпуска сертификата.
  • Повторите попытку выпуска сертификата через 1 час.

Выпуск и настройка сертификата для веб-серверов Apache и Nginx

В случае использования веб-сервера без панели управления выпуск, дальнейшее обновление сертификата и настройку веб-сервера удобно будет выполнять при помощи Certbot.

Certbot — это клиент протокола ACME, который устанавливается на конечном сервере и используется для запроса сертификата, валидации домена, установки сертификата и дальнейшего автоматического продления сертификатов от Let’s Encrypt. Для получения сертификатов у Certbot есть несколько плагинов, которые делятся на два типа — аутентификаторы и установщики.

Аутентификатор используется только для получения сертификатов — он проверяет, что вы имеете доступ к домену, для которого запрашиваете сертификат, получает сертификат для указанного домена и помещает файлы сертификата в каталог /etc/letsencrypt/ на вашем сервере. Аутентификатор не устанавливает сертификат и не редактирует конфигурацию вашего веб-сервера для настройки сертификата.

Установщик — это плагин, который помимо получения сертификатов устанавливает его путем изменения конфигурации вашего веб-сервера. На сегодняшний день установка сертификатов полностью автоматизирована и для Apache, и для Nginx.

Для веб-сервера Apache

Apache – это выпущенное в 1995 году свободное ПО для размещения и поддержки веб-сервера.

Установка Certbot на Ubuntu 16.04 и выше с веб-сервером Apache:

CentOS 8 и выше с веб-сервером Nginx:

Debian 9 с веб-сервером Apache:

Инструкция по установке Certbot на другие дистрибутивы доступна на официальном сайте Certbot.

После установки Certbot можно приступать к выпуску сертификата. Самый простой и быстрый способ — использовать плагин Apache для выпуска и автоматической установки сертификата:

Плагин получает сертификат для домена (доменов) и автоматически устанавливает его, конфигурируя соответствующим образом Apache.

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

Если вы запускаете Certbot впервые, вам будет предложено указать email для регистрации в Let’s Encrypt и получения важных уведомлений, а также ознакомиться с условиями использования и принять их.

После окончания установки сертификата Certbot предоставит вам дополнительную информацию, а также ссылку для проверки установленного сертификата:

Плагин Webroot

Чтобы получить только SSL-сертификат для дальнейшей самостоятельной установки, используйте плагин apache с командой certonly:

Плагин apache с командой certonly внесет временные изменения в конфигурацию веб-сервера (добавит новый виртуальный хост для проверки прав на домен согласно протоколу ACME) и откатит их назад после получения подтверждения, а также при необходимости активирует mod_ssl.

Если вы не хотите, чтобы Certbot каким-либо образом конфигурировал файлы Apache, используйте плагин webroot.

После запуска плагина вы сможете указать доменное имя (или имена) для запроса сертификата, а также путь к директории с файлами сайта.

По результатам работы Certbot уведомит вас и в случае успеха укажет путь к файлам сертификата. В нашем примере файлы размещены по пути:

Путь к этим файлам необходимо указать в ssl конфигурации Apache. Если для домена нет отдельной конфигурации — скопируйте и переименуйте файл дефолтной конфигурации, например:

Затем откройте файл для правки и исправьте значения следующих директив на соответствующие вашему домену пути:

В том же файле в директиве <VirtualHost> необходимо вместо хоста по умолчанию указать «*» :

Теперь необходимо активировать mod_ssl и включить новую конфигурацию, после чего перезагрузить веб-сервер:

Обновление сертификатов

Сразу при установке Certbot добавляет cron-задание для автоматического обновления полученных им сертификатов. Задание будет запускаться дважды в день и обновлять те сертификаты, срок действия которых истекает через 30 дней и менее. Чтобы убедиться в этом, откройте файл /etc/cron.d/certbot и проверьте наличие задания, если задания нет, проверьте список системных таймеров командой systemctl list-timers.

Протестировать автоматическое обновление сертификатов вы можете, выполнив команду:

Для веб-сервера Nginx

Nginx – это ПО с открытым исходным кодом, которое работает под управлением ОС семейства Linux/Unix и Microsoft. Nginx выпущен в 2004 году, он позиционируется как простой и быстрый веб-сервер.

Установка Certbot на Ubuntu 16.04 и выше с веб-сервером Nginx:

CentOS 7 с веб-сервером Nginx:

Debian 9 с веб-сервером Nginx:

Инструкция по установке Certbot на другие дистрибутивы доступна на официальном сайте Certbot.

После установки Certbot можно приступать к выпуску сертификата. Самый простой и быстрый способ — использовать плагин Nginx для выпуска и автоматической установки сертификата

Плагин получает сертификат для домена (доменов) и автоматически устанавливает его, конфигурируя соответствующим образом Nginx.

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

Если вы запускаете Certbot впервые, вам будет предложено указать email для регистрации в Let’s Encrypt и получения важных уведомлений, а также ознакомиться с условиями использования и принять их.

После окончания установки сертификата Certbot предоставит вам дополнительную информацию, а также ссылку для проверки установленного сертификата:

Плагин Webroot

Чтобы получить только SSL-сертификат для дальнейшей самостоятельной установки, используйте плагин nginx с командой certonly:

Плагин nginx с командой certonly внесет временные изменения в конфигурацию веб-сервера (добавит новый блок server для проверки прав на домен согласно протоколу ACME) и откатит их назад после получения подтверждения.

Если вы не хотите, чтобы Certbot каким-либо образом конфигурировал файлы Nginx, используйте плагин webroot.

После запуска плагина вы сможете указать доменное имя (или имена) для запроса сертификата, а также путь к директории с файлами сайта.

По результатам работы Certbot уведомит вас и в случае успеха укажет путь к файлам сертификата. В нашем примере файлы размещены по пути:

Путь к этим файлам необходимо указать в блоке server конфигурации Nginx. Пример настроек SSL для Nginx в файле /etc/nginx/sites-available/default:

После этого проверим корректность конфигурации:

После чего перезагрузим веб-сервер:

Обновление сертификатов

Сразу при установке Certbot добавляет cron-задание для автоматического обновления полученных им сертификатов. Задание будет запускаться дважды в день и обновлять те сертификаты, срок действия которых истекает через 30 дней и менее. Чтобы убедиться в этом, откройте файл /etc/cron.d/certbot и проверьте наличие задания.

Протестировать автоматическое обновление сертификатов вы можете, выполнив команду:

Использование Let’s Encrypt для внутренних серверов

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

В этом посте описывается, как выдавать сертификаты Let’s Encrypt для внутренних серверов.

Хотя и существует множество инструментов для автоматического обновления сертификатов для общедоступных веб-серверов (certbot, simp_le, я писал о том, как это сделать), трудно найти какую-либо полезную информацию о том, как выдавать сертификаты для внутренних серверов, не подключенных к Интернету, и / или устройства с Let’s Encrypt.

В Datto мы выдали сертификат на каждую из наших 90 000+ устройств BCDR, использующих именно этот механизм.

  1. Как это работает?
  2. Пример: внутренний сервер 10.1.1.4, он же. xi8qz.example.com
    2.1. Предварительные требования: назначение домена для каждой машины (шаги 1-3)
    2.2. Запрос сертификата (шаги 4-14)
  3. Рекомендации по развертыванию: ограничения скорости Let’s Encrypt.

Hello Hacker News, впервые на главной странице HN! Для меня это большая честь! Я ответил на все вопросы в разделе комментариев.

Если вы ищете реализацию этой идеи, вам может быть интересен localtls. Я сам не тестировал, но похоже, что он делает то же самое, что я здесь описываю.

Как это работает?
Чтобы выпустить сертификат с помощью Let’s Encrypt, вы должны доказать, что вы либо являетесь владельцем веб-сайта, для которого хотите выпустить сертификат, либо владеете доменом, на котором он работает. Обычно автоматизированные инструменты, такие как certbot, используют HTTP-запрос для подтверждения права собственности на сайт с использованием .well-known каталога. Хотя это прекрасно работает, если сайт подключен к Интернету (и Let’s Encrypt может проверять файлы HTTP-запросов с помощью простого HTTP-запроса), он не работает, если ваш сервер работает на 10.1.1.4 или на любом другом внутреннем адресе.

DNS решает эту проблему, позволяя подтвердить право собственности на домен с помощью TXT -записи DNS _acme-challenge.example.com . Let’s Encrypt проверит, что запись соответствует ожидаемому, и выдаст ваш сертификат, если все сложится.

Итак, действительно волшебными ингредиентами для выдачи сертификатов для внутренних компьютеров, не подключенных к Интернету, являются:

Выделенная зона DNS для всех ваших внутренних устройств, например xi8qz.example.com и динамический DNS-сервер для управления этой зоной (здесь: example.com )

Клиент ACME, способный использовать DNS-запрос Let’s Encrypt для подтверждения права собственности на домен.

Пример: внутренний сервер 10.1.1.4, он же. xi8qz.example.com

На следующей диаграмме показано, как мы реализовали интеграцию Let’s Encrypt для наших устройств резервного копирования Datto. Каждое устройство (читайте: внутренний сервер) находится за NAT и имеет собственный локальный IP-адрес.

Общий подход прост: устройство регулярно обращается к нашему серверу управления, чтобы обеспечить доступ к нему через его собственный поддомен. Если его локальный IP-адрес изменяется, он запускает обновление своего собственного поддомена. Кроме того, он регулярно проверяет, действителен ли сертификат, и запрашивает обновление, если он устарел.

Вот немного подробностей об этом процессе:

Участники этого процесса:

  • Внутренний сервер (ip: 10.1.1.4, id: xi8qz)
  • Сервер управления
  • DDNS-сервер (владеет example.com)
  • Let’s Encrypt ACME
Порядок прохождения запроса на сертификат
1. Проверка, если локальный IP-адрес изменился
2. Обновление записи DNS для xi8qz.example.com с 10.1.1.4.
3. Установка запись A для xi8qz.example.com на 10.1.1.4.
xi8qz.example.com теперь резолвится до 10.1.1.4
4. Если необходимо продление, генерация CSR для xi8qz.example.com
5. Запрос продления с CSR для xi8qz.example.com
6. Запрос DNS-запрос для xi8qz.example.com (new-aithz)
7. URL запроса DNS и токен
8. Установка записи TXT для acme challenge.xi8qz.example.com.
9. Уведомление о размещении вызова (вызов)
10. Подтверждение вызов
11. Убедждение, что вызов был подтвержден (повтор до успешного завершения).
12. Запрос сертификат с CSR (new-cert)
13. Сертификат (и цепочка)
14. Сертификат (и цепочка)

В этом примере предположим, что мы пытаемся выпустить сертификат для устройства с идентификатором xi8qz и локальным IP-адресом 10.1.1.4 . С точки зрения этого устройства необходимо сделать два запроса:

  • Шаги 1-3: Во-первых, ему необходимо установить / обновить свой собственный DNS-домен (здесь: xi8qz.example.com ). Этот домен позже будет использоваться в сертификате как общее имя ( CN ). Кроме того, необходимо убедиться, что эта запись обновляется каждый раз при изменении IP-адреса сервера.
  • Шаги 4-14: необходимо регулярно проверять, нужно ли обновлять локальный сертификат, и запрашивать обновление, если пришло время. Очевидно, что если сертификата нет, его нужно «обновить».
    Давайте теперь рассмотрим эти шаги более подробно.

2.1. Предварительные требования: назначение домена для каждой машины (шаги 1-3)

Как упоминалось выше, нам нужно дать каждому устройству правильное доменное имя, чтобы иметь возможность подтвердить право собственности на Let’s Encrypt, поэтому нам нужно купить домен (здесь: example.com ) и делегировать его NS-записи нашему серверу DDNS:

Вдобавок к этому нам нужна возможность динамически добавлять и удалять записи из него (через какой-то API). Я ранее писал о том, как развернуть собственный DDNS-сервер, если вам интересно.

После того, как все это настроено, нам нужно убедиться, что запись A машины обновляется при изменении ее IP-адреса. Для нашей внутренней машины давайте назначим xi8qz.example.com в качестве домена. Если все работает правильно, вы сможете разрешить этот домен по его IP-адресу, используя обычный DNS-запрос:

2.2. Запрос сертификата (шаги 4-14)

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

В нашем примере устройства оно будет регулярно проверять, действителен ли существующий сертификат (шаг 4). Если сертификата нет или срок действия существующего скоро истечет, устройство сгенерирует пару ключей и запрос на подпись сертификата (CSR), используя назначенное ему имя хоста (здесь: xi8qz.example.com ) в качестве CN , и оно отправит этот CSR на управляющий сервер (шаг 5).

После авторизации запроса (важный шаг, не показанный на схеме!), Управляющий сервер запрашивает DNS-запрос для данного домена из ACME API через вызов Pre-Authorization / new-authz API (шаг 6). ACME API отвечает запросом DNS (шаг 7). Если все идет хорошо, это выглядит примерно так:

Используя этот ответ, управляющий сервер должен установить запись DNS TXT на _acme-challenge.xi8qz.example.com (шаг 8) и уведомить ACME API о том, что ответ на запрос был размещен (шаг 9).

После того, как ответ на запрос был проверен с помощью Let’s Encrypt (шаг 10-11), сертификат можно, наконец, запросить с помощью CSR (шаг 12-13).

После того, как Let’s Encrypt ответит сертификатом, вы увидите на проводе что-то вроде этого:

Если декодировать с помощью openssl , мы увидим, что это настоящая сделка:

Этот сертификат затем возвращается в машину (шаг 14). После перезапуска веб-сервера устройства / сервера к его веб-интерфейсу можно будет получить доступ через HTTPS в браузере или из командной строки:

Рекомендации по развертыванию: ограничения скорости Let’s Encrypt.

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

По умолчанию Let’s Encrypt позволяет выдавать только 20 сертификатов (в 2018 году) в неделю для одного и того же домена или одной и той же учетной записи. Чтобы увеличить это число, вы должны либо запросить более высокий лимит выдачи, либо добавить свой домен в список общедоступных суффиксов (обратите внимание: добавление вашего домена здесь имеет другие последствия!).

Из-за этих ограничений скорости жизненно важно, чтобы вы распределили начальное развертывание настолько, чтобы оставаться ниже ограничения скорости, и чтобы вы оставили достаточно места для добавления будущих серверов. Также рассмотрите возможность продления в первоначальном плане развертывания.

Резюме

Как видите, это не так уж и сложно.

Сначала мы присвоили каждому устройству (так называемому внутреннему серверу) публичное доменное имя, используя наш собственный динамический DNS-сервер и выделенную зону DNS. Используя домен, назначенный серверу (здесь: xi8qz.example.com ), мы затем использовали предложение бесплатного сертификата Let’s Encrypt и их запрос DNS, чтобы выпустить сертификат для этого сервера.

Сделав это для всех внутренних серверов, мы можем обеспечить безопасную связь в нашей внутренней ИТ-инфраструктуре без необходимости развертывания настраиваемого сертификата CA или необходимости платить за сертификаты.

Facebook

Let's Encrypt, profile picture

Let’s Encrypt is a free, automated, and open certificate authority (CA), run for the public’s benefit. It is a service provided by the Internet Security Research Group (ISRG).

We give people the digital certificates they need in order to enable HTTPS (SSL/TLS) for websites, for free, in the most user-friendly way we can. We do this because we want to create a more secure and privacy-respecting Web.

The key principles behind Let’s Encrypt are:

Free: Anyone who owns a domain name can use Let’s Encrypt to obtain a trusted certificate at zero cost.
Automatic: Software running on a web server can interact with Let’s Encrypt to painlessly obtain a certificate, securely configure it for use, and automatically take care of renewal.
Secure: Let’s Encrypt will serve as a platform for advancing TLS security best practices, both on the CA side and by helping site operators properly secure their servers.
Transparent: All certificates issued or revoked will be publicly recorded and available for anyone to inspect.
Open: The automatic issuance and renewal protocol will be published as an open standard that others can adopt.
Cooperative: Much like the underlying Internet protocols themselves, Let’s Encrypt is a joint effort to benefit the community, beyond the control of any one organization.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Капельница от запоя — облегчение за 15–20 минут