| Let’s Encrypt | |
|---|---|
| Административный центр |
|
| Адрес | Сан-Франциско, США |
| Тип организации | Центр сертификации |
| Основание | |
| Дата основания | 2014 |
| Отрасль | криптография |
| Продукция | Центр сертификацииX.509 |
| Число сотрудников |
|
| Материнская организация | Internet Security Research Group[en] |
| letsencrypt.org | |
| Медиафайлы на Викискладе | |
Let’s Encrypt — центр сертификации, начавший работу в бета-режиме с 3 декабря 2015 года [3] , предоставляющий бесплатные криптографические сертификаты X.509 для TLS-шифрования (HTTPS). Процесс выдачи сертификатов полностью автоматизирован [4] [5] .
Содержание
- Содержание
- Задачи [ править | править код ]
- Участники [ править | править код ]
- Технологии [ править | править код ]
- История [ править | править код ]
- Получение сертификата Let’s Encrypt
- ОСНОВНЫЕ ПРЕИМУЩЕСТВА
- ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
- УСТАНАВЛИВАЕМ SSL СЕРТИФИКАТ LET’S ENCRYPT (ИНСТРУКЦИЯ)
- О НЕДОСТАТКАХ LET’S ENCRYPT
- ЗАКЛЮЧЕНИЕ
Содержание
Задачи [ править | править код ]
Проект Let’s Encrypt создан для того, чтобы большая часть интернет-сайтов смогла перейти к шифрованным подключениям (HTTPS). В отличие от коммерческих центров сертификации, в данном проекте не требуется оплата, переконфигурация веб-серверов, использование электронной почты, обработка просроченных сертификатов, что делает процесс установки и настройки TLS-шифрования значительно более простым [6] . Например, на типичном веб-сервере на базе Linux требуется выполнить две команды, которые настроят HTTPS-шифрование, получат и установят сертификат примерно за 20-30 секунд [7] [8] .
Пакет с утилитами автонастройки и получения сертификата включен в официальные репозитарии дистрибутива Debian [9] . Разработчики браузеров Mozilla и Google намерены постепенно отказаться от поддержки незашифрованного протокола HTTP путём отказа от поддержки новых веб-стандартов для http-сайтов [10] [11] . Проект Let’s Encrypt имеет потенциал по переводу большей части Интернета на шифрованные соединения [12] .
Центр сертификации Let’s Encrypt выдаёт сертификаты Domain-val > [en] со сроком действия в 90 дней [13] . Не планируется предложение более надёжных сертификатов Organization Val >[14] .
Проект публикует множество информации с целью защиты от атак и попыток манипуляции [15] . Ведётся публичный лог всех транзакций ACME, используются открытые стандарты и программы с открытыми исходными кодами [7] .
13 марта 2018 объявлена поддержка «wildcard certificate» (сертификатов, включающих неограниченное множество поддоменов) [16] , ранее запланированная на 27 февраля 2018 [17] .
Участники [ править | править код ]
Сервис Let’s Encrypt предоставляется публичной организацией Internet Security Research Group [en] (ISRG).
Технологии [ править | править код ]
В июне 2015 года был создан корневой RSA-сертификат для проекта Let’s Encrypt, ключ от которого хранится в аппаратном HSM [en] -модуле, не подключённом к сетям [19] . Данный корневой сертификат используется для подписывания двух промежуточных сертификатов [19] , которые также были подписаны центром >[20] . Один из промежуточных сертификатов используется для выпуска конечных сертификатов сайтов, второй держится в качестве резервного в хранилище, не подключённом к Интернету, на случай проблем с первым сертификатом [19] . Поскольку корневой сертификат >[21] , несмотря на отсутствие корневого сертификата ISRG в списке доверенных.
Ещё в 2015 — начале 2016 года планировалось сгенерировать корневой сертификат с ключом по алгоритму ECDSA, но потом дата была перенесена на 2018 [19] [22] [23] .
Протокол аутентификации сайтов [ править | править код ]
Для автоматической выдачи сертификата конечному сайту используется протокол аутентификации класса «challenge-response» (вызов-ответ, вызов-отклик) под названием Automated Certificate Management Environment [en] (ACME). В этом протоколе к веб-серверу, запросившему подписание сертификата, производится серия запросов для подтверждения факта владения доменом (domain validation). Для получения запросов клиент ACME настраивает специальный TLS-сервер, который опрашивается сервером ACME с применением Server Name Indication (Domain Validation using Server Name Indication, DVSNI).
Валидация проводится многократно, с использованием различных сетевых путей. Записи DNS опрашиваются из множества географически распределённых мест для осложнения атак DNS spoofing.
Протокол ACME работает путём обмена JSON-документами через HTTPS-соединения [24] . Черновик протокола опубликован на GitHub [25] и отправлен в Internet Engineering Task Force (IETF) в качестве черновика [en] для интернет-стандарта [26] .
Программная реализация [ править | править код ]
![]()
Центр сертификации использует сервер ACME-протокола «Boulder», написанный на языке программирования Go (доступен в исходных текстах под лицензией Mozilla Public License 2) [27] . Сервер предоставляет RESTful-протокол, работающий через канал с шифрованием TLS.
Клиент протокола ACME, certbot (ранее letsencrypt ), открыт под лицензией Apache [28] и написан на языке Python. Этот клиент устанавливается на конечном сервере и используется для запроса сертификата, проведения валидации домена, инсталляции сертификата и настройки HTTPS-шифрования в веб-сервере. В дальнейшем этот клиент используется для регулярного перевыпуска сертификата по мере окончания срока действия [7] [29] . После установки и принятия лицензии достаточно выполнить одну команду для получения сертификата. Дополнительно могут быть включены опции OCSP stapling [en] и HTTP Strict Transport Security (HSTS, принудительное переключение с HTTP на HTTPS) [24] . Автоматическая настройка https-сервера изначально доступна для веб-серверов Apache и nginx.
История [ править | править код ]
Проект Let’s Encrypt был инициирован в конце 2012 года двумя сотрудниками компании Mozilla, Josh Aas и Eric Rescorla. Компания Internet Security Research Group была создана в мае 2013 года для управления проектом. В июне 2013 года проекты Electronic Frontier Foundation и University of Michigan были объединены в Let’s Encrypt [30] .
Впервые проект Let’s Encrypt был публично анонсирован 18 ноября 2014 года [31] .
28 января 2015 года протокол ACME был отправлен в IETF для принятия в качестве стандарта Интернета [32] .
9 апреля 2015 года ISRG и Linux Foundation объявили о сотрудничестве [18] . Корневой и промежуточные сертификаты были созданы в начале июня [21] .
16 июня 2015 года были объявлены планы по запуску сервиса, первые конечные сертификаты были выпущены в конце июля 2015 года для тестирования безопасности и масштабируемости. Широкая доступность сервиса планировалась на середину сентября 2015 года [33] . 7 августа 2015 года планы были сдвинуты, широкий запуск сервиса был перенесён на середину ноября [34] .
Подпись промежуточных сертификатов от >[20] .
14 сентября 2015 года был выпущен первый конечный сертификат для домена helloworld.letsencrypt.org. В тот же день организация ISRG выслала публичный ключ своего корневого сертификата для включения в список доверенных компаниям Mozilla, Microsoft, Google и Apple [35] .
12 ноября 2015 года Let’s Encrypt перенесла широкий запуск в бета-режиме на 3 декабря 2015 года [3] .
12 апреля 2016 года объявлено об окончании периода бета-тестирования [36] .
28 июня 2017 года Let’s Encrypt заявила о выпуске 100-миллионного сертификата [37] .
7 декабря 2017 объявлено о старте публичного бета-тестирования выдачи wildcard сертификатов с 4 января 2018 года. Планируемая дата окончания тестового периода — 27 февраля 2018 года [38] .
13 марта 2018 года Let’s Encrypt начал выдавать wildcard сертификаты, теперь каждый может получить бесплатный SSL/TLS сертификат вида *.example.com. [39] [40]
6 августа 2018 года Let’s Encrypt заявила, что с конца июля 2018 года их корневому сертификату ISRG Root X1 доверяют все основные списки корневых сертификатов включая Microsoft, Google, Apple, Mozilla, Oracle и Blackberry [41] [42] .
В последнее время забота о безопасности и приватности пользователей набирает обороты. Когда проектировался интернет и протокол HTTP, о таких понятиях не думали. Поэтому весь трафик, передаваемый между веб-сервером и пользователем по протоколу HTTP, может быть просмотрен кем угодно, кто находится на пути этого трафика, например провайдером или хакерами.
Поэтому был придуман протокол HTTPS, который позволяет шифровать трафик и таим образом обезопасить его от перехвата. Для шифрования используются SSL-сертификаты. Раньше эти сертификаты стояли денег, но благодаря компании Let’s Encrypt теперь любой веб-сайт может установить SSL-сертификат и настроить шифрование абсолютно бесплатно. В этой статье мы рассмотрим, как получить сертификат Let’s Encrypt с помощью официального клиента Certbot.
Получение сертификата Let’s Encrypt
Вообще, нам не обязательно использовать именно Certbot, мы могли бы создать сертификат в OpenSSL, а затем просто подписать его с помощью ACME API от Let’s Encrypt. Но к этому API надо выполнять запросы в формате JSON, что очень неудобно делать из командной строки, поэтому лучше использовать один из клиентов. Например Certbot. К тому же, большинство клиентов ACME уже включают автоматическую генерацию сертификата в OpenSSL.
1. Синтаксис и команды Certbot
Прежде чем перейти к работе, давайте рассмотрим синтаксис утилиты Certbot и её команды. Они выглядят достаточно просто:
certbot команда опции -d домен
Команды используются для того, чтобы сообщить утилите, что именно надо сделать. Вот основные из них:
- run — используется по умолчанию, если никакая команда не указана, получает и устанавливает сертификат;
- certonly — только получает или обновляет сертификат, но не устанавливает его;
- renew — обновляет сертификат;
- enhance — добавляет настройки безопасности для существующих сертификатов;
- certificates — отображает установленные сертификаты;
- revoke — отзывает сертификат;
- delete — удаляет сертификат;
- register — создает ACME-аккаунт;
Как видите, команд не так много, и теперь вы в них точно не запутаетесь, а теперь разберём основные опции:
- -d — указывает домен или список доменов, разделённых запятыми, для которых надо получить сертификаты;
- —apache — использовать плагин apache для установки сертификата;
- —nginx — использовать плагин nginx;
- —standalone — запускать собственный веб-сервер для аутентификации при получении сертификата;
- —preferred-challenges — позволяет выбрать способ аутентификации, по умолчанию http, но можно выбрать dns;
- —server — позволяет указать адрес ACME-сервера, нужно для WildCard-сертификатов, поскольку они поддерживаются только второй версией ACME;
- —webroot — поместить файлы аутентификации в папку веб-сервера;
- -w — указывает папку веб-сервера, куда надо поместить файлы аутентификации;
- —manual — создание сертификата в ручном режиме;
- -n — запустить утилиту в не интерактивном режиме;
- —dry-run — тестовый запуск без сохранения изменений на диск.
Теперь мы готовы к тому, чтобы перейти к работе с утилитой. Сначала установим её.
2. Установка Certbot
Сначала необходимо установить утилиту Certbot. Это официальный клиент, и он есть в репозиториях большинства дистрибутивов. Установка Certbot в Ubuntu выполняется из PPA:
sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install certbot


Если вы знаете, для какой платформы будут генерироваться сертификаты, то можно установить отдельные расширения для них, они позволяют автоматически редактировать конфигурацию. Например, вы можете установить модуль для apache или nginx:
sudo apt install python-certbot-apache
sudo apt install python-certbot-nginx
Эти плагины нужны, если вы собираетесь использовать соответствующие опции для автоматической установки.
3. Создание сертификата без установки
Если вам нужен сертификат для веб-сервера, который не поддерживается программой, вам придётся устанавливать его вручную. Получить такой сертификат можно с помощью команды certonly:
sudo certbot certonly —webroot -w /var/www/test.losst.ru -d test.losst.ru -d www.test.losst.ru

Эта команда получает сертификат для доменов test.losst.ru и www.test.losst.ru. Файлы для подтверждения аутентификации будут размещены в каталоге /var/www/example/. Также вы можете использовать встроенный веб-сервер для аутентификации:
sudo certbot certonly —standalone -d test.losst.ru -d www.test.losst.ru
Во время генерации сертификата утилита спросит ваш Email-адрес для аккаунта ACME, на который будут приходить уведомления о необходимости продления и другая информация:

Затем вам предложат подтвердить, что вы прочитали правила использования сервиса, ответьте А:

Далее вас спросят, хотите ли вы сделать ваш Email публичным:

Только после этого начнётся получение сертификата. Если всё прошло успешно, то ваш сертификат будет сохранён в /etc/letsencrypt/live/имя_домена/, оттуда вы уже можете использовать их в своих приложениях. Если же возникли ошибки, то утилита сообщит об этом.

4. Создание сертификата для Nginx
Вам не обязательно вручную устанавливать сертификаты, вы можете использовать один из доступных плагинов для автоматического обновления конфигурации. Например, рассмотрим использование плагина для Nginx:
sudo certbot run —nginx
Дополнительные параметры задавать не надо, потому что утилита сама прочитает конфигурацию и выведет список доступных доменов:

Введите цифру нужного домена или несколько цифр, разделённых запятой. Утилита сама установит всё, что нужно, а затем спросит вас, нужно ли перенаправлять http-трафик на https:

Затем утилита выдаст ту же информацию, что и в предыдущем варианте:

5. Обновление сертификата Let’s Encrypt
Чтобы выполнить обновление сертификата Let’s Encrypt, достаточно запустить команду certbot с опцией certonly. Учитывая, что сертификат находится в папке certbot, а конфигурация веб-сервера настроена именно на эту папку, то этой операции достаточно. Если же сертификаты копируются в другую папку, то вам понадобится скрипт для их автоматического копирования после обновления.
sudo certbot certonly -d test.losst.ru -d www.test.losst.ru

Если срок службы сертификата ещё не вышел и обновление не требуется, утилита спросит вас, действительно ли это надо сделать.
Если вы хотите обновлять сертификат в не интерактивном режиме, например с помощью скрипта, то нужно использовать опцию -n, также при использовании этой опции надо передать плагин, который будет использоваться для аутентификации:
sudo certbot certonly —nginx -n -d test.losst.ru -d www.test.losst.ru

Теперь можно добавить эту команду в планировщик cron, например раз в неделю:
0 0 * * 0 /usr/bin/certbot certonly —nginx -n -d test.losst.ru -d www.test.losst.ru
Если вы хотите обновить сертификаты для всех доменов одной командной в не интерактивном режиме, достаточно выполнить команду:
sudo certbot renew
6. Получение Wildcard сертификата Let’s Encrypt
Let’s Encrypt Wildcard-сертификаты появились относительно недавно. Они позволяют использовать один сертификат для всех поддоменов определённого домена, например *.test.losst.ru. Но и работает это всё сложнее — вам надо будет подтвердить, что этот домен принадлежит именно вам. Для этого надо добавить TXT-запись к зоне домена.
Вы можете сделать это вручную или же использовать dns-плагин для Certbot, чтобы добавить её автоматически. Правда, плагин поддерживается только для популярных сервисов, таких, как DigitalOcean, Linode, Cloudflare и так далее. В этой статье рассмотрим ручной вариант. Команда для генерации сертификата будет выглядеть вот так:
sudo certbot certonly —agree-tos -d test.losst.ru -d *.test.losst.ru —preferred-challenges dns —manual —server https://acme-v02.api.letsencrypt.org/directory

Вам надо будет разрешить публикацию вашего IP-адреса, а потом добавить TXT-запись с нужным именем и значением к вашей доменной зоне. В моем случае это _acme-challenge.test.losst.ru со специальным хэшем:

Нужная TXT-запись в службе dmains.webmoney.ru выглядит вот так:

На обновление доменной зоны может уйти несколько часов, поэтому команду придётся выполнить ещё пару раз позже. После генерации сертификата вы можете использовать его как обычный сертификат для всех поддерживаемых доменов.
В статье рассмотрим плюсы и минусы бесплатного Let’s Encrypt, для кого подойдет, как получить и установить его на сайт с панелью Plesk 12.5
Let’s Encrypt— бесплатный, автоматизированный проект, с открытым CA (certificate authority — центр сертификации).
ОСНОВНЫЕ ПРЕИМУЩЕСТВА
бесплатно: любой владелец сайта (в частности, доменного имени) может получить и установить доверенный TLS-сертификат Let’s Encrypt (TLS — наследник SSL);
автоматизация: все функции установки, конфигурации и обновления проводятся в автоматическом режиме;
безопасность: все методы шифрования Let’s Encrypt отвечают текущим стандартам;
прозрачность: публичная доступность информации о выпуске и отзыве каждого сертификата для любого желающего;
свободно: будет использован принцип open standard для протоколов взаимодействия с CA (certificate authority).
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
Центр Сертификации выдаёт сертификаты, которые генерируются на АСМЕ сервере по протоколу Boulder, написанные на языке GO (доступный в исходниках под лицензией MPL2).
Данный сервер предоставляет RESTful-протокол, который функционирует через канал с TLS шифрованием.
Клиентская часть протокола АСМЕ , т.е. certbot, написанный на языке Python, также открыт под APACHE лицензией . Certbot устанавливается на клиентском сервере, чтобы создавать запрос сертификата, проверить валидность домена и после этого устанавливает сертификат с последующей настройкой шифрования HTTPS веб-сервера.
Также в функцию certbot входит обновление сертификата после истечения срока действия. Установка сертификата производится одной командой после того как принимается лицензия.
Certbot позволяет устанавливать сертификат с дополнительными опциями -OCSP stapling и HTTP Strict Transport Security
УСТАНАВЛИВАЕМ SSL СЕРТИФИКАТ LET’S ENCRYPT (ИНСТРУКЦИЯ)
Рассмотрим использование сертификата применительно к серверам , используемым на нашем хостинге.
Подавляющее большинство наших серверов используют версию Plesk 12.5 где данный модуль уже включён в дистрибутив Plesk 12.5 и установка его проста и удобна. Достаточно зайти в панель плеск в раздел «Сайты и домены », кликнуть на модуль Let’s Encrypt,

выбрать нужные опции и после нажатия кнопки «Установить», установка произойдёт менее чем за минуту.

Так как данный сертификат рассчитан на срок не более 90 дней, то в панели плеск создана соответствующая задача cron в разделе Инструменты и настройки — Планировщик задач

Стоит заметить, что существуют некоторые ограничения на генерацию сертификата:
- дублирующие сертификаты — не более 5 в неделю;
- количество попыток генерации сертификата не более 5 раз в час.
О НЕДОСТАТКАХ LET’S ENCRYPT
В конце этой статьи хотим отметить, что несмотря на все преимущества данного типа сертификата, существуют недостатки, которые нужно учитывать при выборе SSL:
- Бесплатный сертификат Let’s Encrypt кратковременный и рассчитан на срок не более 90 дней, в отличии от платного, который можно выпустить сроком до 3 лет. Вы можете , конечно, перевыпускать сертификат каждые 3 месяца, но обязательно следите за сроками. Перевыпуск сертификата можно осуществить тремя способами: вручную, за счет настройки планировщика задач cron или автоматически.
Если вы выбрали способ обновления вручную, то следите четко за сроками и вовремя перевыпускайте сертификат. Иначе рискуете получить наплыв недовольных пользователей сайта и их последующий отток.
Планировщик задач cron — это способ настройки автоматического обновления. Способ хорош для тех, кто владеет навыками администрирования Linux и умеет работать с кронами. Нужно еще учитывать, что в работе крона не исключены ошибки, которые могут помешать перевыпуску сертификата. Вывод: следить за обновлением все равно придется.
Автоматическое обновление. Этот способ подразумевает, что вы принимаете автоматические настройки, предусмотренные Центром сертификации. И тут нужно понимать, что вы таким образом, даете свое согласие на то, что ЦС может вносить изменения по своему усмотрению в ПО и настройки вашего сервера.
Не все домены можно защитить бесплатным Let’s Encrypt. Данный сертификат рассчитан только на защиту одного домена без проверки компании, так называемые DV SSL (Domain Validation).
Так, при помощи Let’s Encrypt нельзя создать следующие типы сертификатов:
— WildCard сертификат для защиты поддоменов определённого домена;
— Сертификаты OV SSL(organization validation), предполагающие проверку не только домена, но и компании;
— Сертификаты EV SSL (extended validation). Сертификат с максимальной степенью защиты и зелёной адресной строкой браузера;
— Multi-Domain сертификат типа UCC;
ЗАКЛЮЧЕНИЕ
Подводя итоги, можно сказать, что Центр Сертификации Let’s Encrypt достаточно успешный проект, популярность которого растет с каждым годом среди пользователей сети.
И если вам нужен простой сертификат для одного домена, вы обладаете соответствующими навыками администрирования, а также если нет необходимости в SSL с проверкой компании (OV- organization validation) или наличие зеленой адресной строки и указания названия компании в сертификате, то данный сертификат можно использовать.
Тем не менее, мы рекомендуем крупным компаниям, интернет-магазинам, банкам и другим e-commerce проектам устанавливать коммерческие SSL — сертификаты от известных Центров сертификации, таких как, например, GlobalSign, Comodo.
Так вы заручитесь доверием пользователей и покажете, что вы серьезная компания, которая заботится о безопасности данных клиентов.
- Поделиться:




