ISRG celebrates 10 years of helping build a brighter Internet →

Типи викликів

Останнє оновлення: | Переглянути всю документацію

Примітка: Англійська версія була оновлена з моменту перекладу () Переглянути англійською

Коли ви отримуєте сертифікат від Let’s Encrypt, наші сервери перевіряють, чи ви контролюєте доменні імена в цьому сертифікаті за допомогою «викликів», відповідно до стандартів ACME. Зазвичай ця перевірка обробляється автоматично вашим клієнтом ACME, але якщо вам потрібно прийняти кілька складніших рішень щодо конфігурації, про них буде корисно дізнатися більше. Якщо ви не впевнені, використовуйте налаштування за замовчуванням для свого клієнта або перевірку HTTP-01.

Перевірка HTTP-01

Це найпопулярнійший тип перевірки на сьогодні. Let’s Encrypt надає ACME-клієнтові токен, і Ваш ACME-клієнт розміщує файл у Вашому веб-сервері на http://<YOUR_DOMAIN>/.well-known/acme-challenge/<TOKEN>. Цей файл містить токен, а також відбиток ключа вашого облікового запису. Як тільки ACME-клієнт повідомить Let’s Encrypt про готовність файлу, Let’s Encrypt спробує отримати цей файл (можливо, декілька разів із різних адрес). Якщо отримана відповідь з вашого сервера є правильною, перевірка вважається успішною, і ви можете видати ваш сертифікат. Якщо перевірка виявилась невдалою, вам доведеться спробувати ще раз з новим сертифікатом.

Реалізація перевірки HTTP-01 дозволяє виконувати не більше 10 редиректів запитів. Редиректи приймаються тільки з адрес, що починаються з “http:” або “https:” виключно на порти 80 або 443. На IP-адреси редиректи не приймаються. Якщо редирект виконувався на URL з HTTPS, то сертифікат вважається не підтвердженим (оскільки перевірка завантажує тільки дійсні сертифікати, вона також може виявити самопідписані або протерміновані сертифікати).

Перевірка HTTP-01 здійснюється виключно на порті 80. Дозволивши клієнтам вказувати довільні порти, перевірка стане менш надійною, а тому їх використання заборонено стандартом ACME.

Переваги:

Недоліки:

Перевірка DNS-01

Така перевірка вимагає у вас підтвердження прав на домен за допомогою спеціального значення в TXT-записі для цього доменного імені. Це складніше налаштувавати, ніж HTTP-01, але вона покриває сценарії, що не підлягають HTTP-01 перевірці. Дозволяє видачу wildcard-сертифікатів. Після того, як Let’s Encrypt видає ACME-клієнтові токен, клієнт створює TXT-запис на основі цього токена та ключа облікового запису, і записує його в_acme-challenge.<YOUR_DOMAIN>. Далі, Let’s Encrypt створює запит йього запису в DNS-системі. Якщо значення співпадають - ви можете переходити до видачі сертифікату!

Вкрай важливо автоматизувати процеси випуску та поновлення сертифікатів, тому є сенс використовувати перевірку DNS-01, якщо ваш DNS-провайдер надає API для автоматичних оновлень. Наша спільнота має список таких DNS-провайдерів тут . DNS-провайдером може бути реєстратор (компанія, у якої ви придбали доменне ім’я), або стороння організація. Якщо ви хочете змінити свого DNS-провайдера, то потрібно зробити деякі незначні зміни у вашому реєстраторі доменів. При цьому очікувати закінчення терміну дії домену не потрібно.

Зверніть увагу, що розміщення повної інформації про облікові записи для DNS API на веб-серверах значно збільшує шкоду у випадку взлому цього веб-сервера. Краще використовувати обліковий запис із обмеженими можливостями, або здійснювати DNS перевірку на окремому сервері з подальщим копіюванням сертифікатів на ваш веб-сервер.

Оскільки Let’s Encrypt притримується стандартів DNS для пошуку TXT-записів при перевірці DNS-01, використовуйте записи CNAME або NS для делегування відповідей за перевірку на інші DNS-зони. Для спеціального серверу або зони валідації налаштуйте делегування _acme-перевірки субдомену. Ви також можете використати це делегування якщо ваш DNS-провайдер повільно оновлюється і ви хочете використати сервер, що оновлюється швидше.

Більшість DNS-провайдерів мають “період обробки даних”, що визначає скільки часу пройде пройде з моменту оновлення запису DNS, доки він стане доступним для всіх серверах. Цей час складно виміряти, оскільки вони часто використовують anycast. Це означає, що декілька серверів можуть мати однакову IP-адресу, і, в залежності від місця вашого перебування, ви та Let’s Encrypt можете взаємодіяти з різними серверами (і отримувати різні результати). Найкращі DNS API автоматично сповістять про повне оновлення записів. Якщо DNS-провайдер такої інформації не надає, потрібно налаштувати вашого клієнта на тривале очікування (приблизно годину) запуску валідації для забезпечення повного оновлення.

Ви можете мати декілька TXT-записів для одного імені. Наприклад, при потребі виконати перевірку для wildcard-сертифікату та для простого сертифікату водночас. Видаляйте застарілі TXT-записи, оскільки через великий розмір відповіді, Let’s Encrypt може відхиляти перевірку.

Переваги:

Недоліки:

TLS-SNI-01

Ця перевірка визначена в чорновій версії ACME. Виконується TLS handshake на порті 443 і надсилається спеціальний SNI заголовок для пошуку сертифікату, що містить токен. була відключена у березні 2019 року через недостатню безпечність.

TLS-ALPN-01

Ця перевірка розроблена як окремий стандарт після визнання TLS-SNI-01 застарілою. Як і TLS-SNI-01, перевірка виконується через TLS на порті 443. Але при цьому використовується протокол ALPN, щоб на запити валідації відповідали тільки сервери, які знають про такий тип перевірки. Крім того, запити валідації для цього типу перевірки можуть використовувати SNI-поле, що збігається з доменним ім’ям, для якого проводиться валідація з метою збільшення надійності перевірки.

Ця перевірка не підходить для більшості людей. Швидше, вона призначена для власників TLS-кінцевих зворотних проксі-серверів для виконання перевірки типу HTTP-01, але всередині шару TLS для поділу відповідальності. Здебільшого це стосується великих хостинг-провайдерів, але розповсюджені веб-сервери як Apache та Nginx можуть колись це реалізувати (і Caddy вже реалізував).

Переваги:

Недоліки: