SSL-сертификат
Certbot для хостинга, где certbot запустить нельзя. Введите домены, положите на сайт по маленькому файлу и заберите сертификат, ключ и CA bundle.
Браузер общается напрямую с Let’s Encrypt, через этот сайт ничего не идёт. Закрытый ключ создаётся в этой вкладке и никуда её не покидает.
- 1Домены
- 2Доказательство
- 3Сертификат
По одному на строку. До 100 имён в одном сертификате. Для wildcard вроде *.example.com нужно доказательство через DNS.
Для файла сайт уже должен отвечать на 80-м порту. DNS-запись подходит для wildcard и для сайтов, которые ещё не запущены.
RSA работает с любой панелью. ECDSA меньше и быстрее.
Staging это репетиция: те же шаги, ненастоящий сертификат, которому никто не доверяет, и гораздо больше лимиты.
Положите каждый файл на сайт так, чтобы он открывался по указанному адресу: имя файла как длинный токен, без расширения, внутри одна строка текста. Затем нажмите Проверить.
Добавьте запись TXT для каждого имени ниже. Некоторые DNS-панели сами дописывают домен; тогда имя просто _acme-challenge (или _acme-challenge.www).
Распакуйте его в корень сайта: папки .well-known/acme-challenge уже внутри. В cPanel загрузите zip через File Manager и нажмите Extract.
Есть терминал на сервере?
Выполните это в корне сайта вместо загрузки:
Сертификат
Настоящим удостоверяется, что следующие имена принадлежат владельцу ключа:
Сохраните закрытый ключ сейчас. Он создан в этой вкладке и больше нигде не существует: ни на моём сервере, ни у Let’s Encrypt. Закроете вкладку, и его не станет.
certificate.crtprivate.keyca_bundle.crtfullchain.pemДля Nginx и Apache 2.4: один файл вместо CRT + CABUNDLE.
Письма с напоминанием не будет: Let’s Encrypt перестал их рассылать. Поставьте напоминание в календарь месяца через два и возвращайтесь.
- Должен открываться по
- http://
- Имя файла
- Содержимое
- Имя
- Тип
TXT- Значение
Как пользоваться
- Введите домены, которые должен покрывать сертификат, по одному на строку. Если сайт открывают и через
www., добавьте и его. - Выберите, как доказать, что домены ваши: Загрузить файл (сайт уже должен отвечать на 80-м порту) или Добавить DNS-запись (нужно для wildcard вроде
*.example.com). - Нажмите Получить задание. Для файлов скачайте zip и распакуйте его в корень сайта (
public_html,www,htdocs) или скачайте каждый файл в.well-known/acme-challenge/. Для DNS добавьте каждую TXT-запись. - Откройте каждую ссылку и убедитесь, что там строка текста, затем нажмите Проверить. Let’s Encrypt сам скачает файлы.
- Скачайте сертификат, закрытый ключ и CA bundle и вставьте их в панель хостинга. Сохраните ключ до того, как закроете вкладку.
Что он делает
Это тот же ACME-диалог, который certbot ведёт с Let’s Encrypt, только в виде небольшого клиента прямо на этой странице. API Let’s Encrypt принимает запросы из браузеров, поэтому страница общается с ним напрямую: создаёт ключ аккаунта, заказывает сертификат, показывает вам, какое доказательство просит Let’s Encrypt, просит его проверить и, когда проверка прошла, подписывает запрос на сертификат. Платные сервисы «бесплатного SSL» вроде PunchSalad делают те же шаги, и сертификат у них тот же, от Let’s Encrypt.
Что и куда уходит, точно. Let’s Encrypt получает имена доменов, открытый ключ и подписанный запрос, то же самое он получил бы от certbot. Закрытый ключ создаётся через встроенный в браузер Web Crypto API и никуда не отправляется; откройте вкладку Network, и вы увидите только запросы к acme-v02.api.letsencrypt.org. Незаконченный заказ хранится в sessionStorage этой вкладки, чтобы перезагрузка посреди загрузки файлов его не потеряла; закрытие вкладки его стирает. Проверить DNS делает единственный дополнительный запрос: спрашивает TXT-запись у Google Public DNS (dns.google).
Ограничения, честно. Сертификаты Let’s Encrypt живут 90 дней (и в ближайшие годы срок будет сокращаться), а здесь ничего не продлевается само. Поставьте напоминание примерно на 60-й день и возвращайтесь или, если доберётесь до консоли, отдайте это certbot: в гайде по SSL есть оба варианта, а если у хостинга есть кнопка AutoSSL, просто нажмите её. Неудачные проверки ограничены пятью в час на имя, поэтому репетируйте на Staging: там всё то же самое, но с ненастоящим сертификатом и щедрыми лимитами.
Файлы названы так, как их просят панели хостинга. В cPanel, в разделе SSL/TLS → Manage SSL sites, certificate.crt идёт в CRT, private.key в KEY, а ca_bundle.crt в CABUNDLE. Nginx нужны ssl_certificate fullchain.pem; и ssl_certificate_key private.key;. Apache 2.4 принимает SSLCertificateFile fullchain.pem и SSLCertificateKeyFile private.key.
Вопросы
Почему проверка не прошла?
Прочитайте сообщение под именем, там дословно то, что увидел Let’s Encrypt. 404 значит, что файла нет там, где он искал: не та папка (нужен корень сайта именно этого домена) или файл по дороге получил расширение .txt. 403 обычно от плагина безопасности или правила в .htaccess, которое закрывает папки с точкой. Таймаут значит, что закрыт 80-й порт. И классика: если у домена есть AAAA-запись (IPv6), которая смотрит на старый сервер, Let’s Encrypt сначала проверит её. Редиректы на https не мешают, он по ним проходит.
Можно получить wildcard-сертификат?
Да, но только через DNS: файл доказывает один хост, а DNS-запись доказывает всю зону. Если нужен и голый домен, добавьте и example.com, и *.example.com. Оба получат TXT-запись на одно и то же имя, _acme-challenge.example.com, так что у этого имени будет два значения. Так и задумано, добавьте оба.
RSA или ECDSA?
RSA 2048 надёжный вариант по умолчанию: его принимают все панели, серверы и старые клиенты. Ключи ECDSA P-256 меньше, а рукопожатие быстрее, и почти всё, что сделано за последние десять лет, их поддерживает. Если панель не принимает ключ, выпустите заново с RSA.
После распаковки на Mac папка пропала.
Она на месте, просто скрыта: macOS прячет имена, которые начинаются с точки, вроде .well-known. Нажмите Cmd Shift . в Finder, чтобы её увидеть, или загрузите сам zip и распакуйте его на сервере (в File Manager cPanel есть кнопка Extract).
Бесплатный SSL-сертификат Let’s Encrypt хуже платного?
По шифрованию — нет. Замочек тот же, и TLS-соединение за ним тоже. Let’s Encrypt выдаёт только сертификаты с проверкой домена (DV): они доказывают, что домен ваш, и ничего больше. Платные OV и EV ещё проверяют компанию, но браузеры давно перестали показывать её название в адресной строке, так что посетитель разницы не увидит. За деньги вы получаете в основном более редкое продление, поддержку и гарантию, которой, скорее всего, никогда не воспользуетесь.