19-09-2023
Let's Encrypt | |
Административный центр: | |
---|---|
Адрес: |
Сан-Франциско, США |
Тип организации: | |
Основание | |
2014 | |
Продукция | |
Материнская организация | |
Let's Encrypt на Викискладе |
Let’s Encrypt — центр сертификации, начавший работу в бета-режиме с 3 декабря 2015 года[1], предоставляющий бесплатные криптографические сертификаты X.509 для TLS-шифрования (HTTPS). Процесс выдачи сертификатов полностью автоматизирован[2][3].
Проект Let’s Encrypt создан для того, чтобы большая часть интернет-сайтов смогла перейти к шифрованным подключениям (HTTPS). В отличие от коммерческих центров сертификации, в данном проекте не требуется оплата, переконфигурация веб-серверов, использование электронной почты, обработка просроченных сертификатов, что делает процесс установки и настройки TLS-шифрования значительно более простым[4]. Например, на типичном веб-сервере на базе Linux, требуется выполнить две команды, которые настроят HTTPS-шифрование, получат и установят сертификат примерно за 20-30 секунд[5][6].
Пакет с утилитами автонастройки и получения сертификата планируется включить в официальные репозитарии дистрибутива Debian[7]. Разработчики браузеров Mozilla и Google намерены постепенно отказаться от поддержки незашифрованного протокола HTTP путём отказа от поддержки новых веб-стандартов для http-сайтов[8][9]. Проект Let’s Encrypt имеет потенциал по переводу большей части Интернета на шифрованные соединения[10].
Центр сертификации Let’s Encrypt выдаёт сертификаты Domain-validated certificate[en] со сроком действия в 90 дней[11]. Не планируется предложение более надёжных сертификатов Organization Validation и Extended Validation Certificate[en][12].
Проект публикует множество информации с целью защиты от атак и попыток манипуляции[13]. Ведётся публичный лог всех транзакций ACME, используются открытые стандарты и программы с открытыми исходными кодами[5].
На 27 февраля 2018 года запланирована полная поддержка сертификатов «wildcard certificate» (включающих неограниченное множество поддоменов)[14].
Сервис Let’s Encrypt предоставляется публичной организацией Internet Security Research Group[en] (ISRG).
Основные спонсоры проекта: Electronic Frontier Foundation (EFF), Mozilla Foundation, Akamai, Cisco Systems.
Партнёрами проекта являются центр сертификации IdenTrust[en], University of Michigan (U-M), Stanford Law School[en], Linux Foundation[15]; Stephen Kent (из Raytheon/BBN Technologies[en]) и Alex Polvi (из CoreOS)[5].
В июне 2015 года был создан корневой RSA-сертификат для проекта Let’s Encrypt, ключ от которого хранится в аппаратном HSM[en]-модуле, не подключённом к сетям[16]. Данный корневой сертификат используется для подписывания двух промежуточных сертификатов[16], которые также были подписаны центром IdenTrust[17]. Один из промежуточных сертификатов используется для выпуска конечных сертификатов сайтов, второй держится в качестве резервного в хранилище, не подключённом к Интернету, на случай проблем с первым сертификатом[16]. Поскольку корневой сертификат IdenTrust предустановлен в большинстве операционных систем и браузеров в качестве доверенного корневого сертификата, выдаваемые проектом Let’s Encrypt сертификаты проходят проверку и принимаются клиентами[18], несмотря на отсутствие корневого сертификата ISRG в списке доверенных.
Ещё в 2015 — начале 2016 года планировалось сгенерировать корневой стандарт с ключом по алгоритму ECDSA, но потом дата была перенесена на 2018[16][19][20].
Для автоматической выдачи сертификата конечному сайту используется протокол аутентификации класса «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-соединения[21]. Черновик протокола опубликован на GitHub,[22] и отправлен в Internet Engineering Task Force (IETF) в качестве черновика[en] для интернет-стандарта[23].
Центр сертификации использует сервер ACME-протокола «Boulder», написанный на языке программирования Go (доступен в исходных текстах под лицензией Mozilla Public License 2)[24]. Сервер предоставляет RESTful-протокол, работающий через канал с шифрованием TLS.
Клиент протокола ACME, certbot
(ранее letsencrypt
), открыт под лицензией Apache[25] и написан на языке Python. Этот клиент устанавливается на конечном сервере и используется для запроса сертификата, проведения валидации домена, инсталляции сертификата и настройки HTTPS-шифрования в веб-сервере. В дальнейшем этот клиент используется для регулярного перевыпуска сертификата по мере окончания срока действия[5][26]. После установки и принятия лицензии достаточно выполнить одну команду для получения сертификата. Дополнительно могут быть включены опции OCSP stapling[en] и HTTP Strict Transport Security (HSTS, принудительное переключение с HTTP на HTTPS)[21]. Автоматическая настройка 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[27].
Впервые проект Let’s Encrypt был публично анонсирован 18 ноября 2014 года[28].
28 января 2015 года протокол ACME был отправлен в IETF для принятия в качестве стандарта Интернета[29].
9 апреля 2015 года ISRG и Linux Foundation объявили о сотрудничестве[15]. Корневой и промежуточные сертификаты были созданы в начале июня[18].
16 июня 2015 года были объявлены планы по запуску сервиса, первые конечные сертификаты были выпущены в конце июля 2015 года для тестирования безопасности и масштабируемости. Широкая доступность сервиса планировалась на середину сентября 2015 года[30]. 7 августа 2015 года планы были сдвинуты, широкий запуск сервиса был перенесён на середину ноября[31].
Подпись промежуточных сертификатов от IdenTrust была запланирована на период начала широкой доступности Let’s Encrypt[17].
14 сентября 2015 года был выпущен первый конечный сертификат для домена [32].
12 ноября 2015 года Let’s Encrypt перенесла широкий запуск в бета-режиме на 3 декабря 2015 года[1].
Let’s Encrypt на Викискладе |
Let’s Encrypt.