7 хв читанняМожливості

TLS для власного домену коротких посилань за 5 хвилин

Додайте власний домен в Elido, опублікуйте запис TXT і CNAME, і HTTPS видається при першому використанні.

Marius Voß
DevRel · edge infra

Налаштування власного домену з HTTPS потребує одного запису TXT, одного запису CNAME і короткого очікування. Ви додаєте hostname в Elido, копіюєте два DNS-значення, які він дає, і TLS-сертифікат видається автоматично, коли хтось уперше відкриє посилання на цьому домені. Повільна частина - поширення DNS, яким ви керуєте через TTL. Ця стаття проходить п'ять кроків, а потім пояснює механізм, щоб ви знали, куди дивитися, коли якийсь крок застрягає.

Усе нижче перевірено за поточним кодом і дашбордом Elido станом на 2026-10-09. Де пов'язана функція ще не збудована, стаття про це каже.

Чому TLS важливий на короткому посиланні

Коротке посилання - це редирект, і відповідь редиректу є всім корисним навантаженням. 301 або 302 із заголовком Location несе ваш URL призначення. Якщо перший запит іде по звичайному HTTP, будь-хто на мережевому шляху може прочитати це призначення, перш ніж браузер за ним піде.

QR-коди роблять це гіршим. Людина, що сканує код на вітрині чи плакаті, не має попередніх стосунків з URL, тож адресний рядок - єдиний сигнал довіри, який вона отримує. Попередження браузера при скануванні - найгірше можливе перше враження, а за тираж ви вже заплатили.

На спільних коротких доменах Elido сертифікат належить Elido, тож замок справжній, але ім'я на ньому не ваше. На go.acme.com ім'я ваше. Основи DNS і TLS, що за цим стоять, дивіться в ключовій статті про короткі посилання на власному домені.

Список власних доменів Elido з одним активним доменом, одним із очікуваною перевіркою DNS і одним із невдалою верифікацією та підказкою, як виправити

Крок 1: оберіть hostname

Оберіть короткий піддомен, який ви контролюєте і не використовуєте ні для чого іншого: go.example.com, links.example.com чи подібний. Префікс з'являється в кожному посиланні, яке ви надсилаєте, тож коротший краще.

Використовуйте піддомен, а не голий корінь. RFC 1034, розділ 3.6.2 каже, що ім'я з CNAME не може містити інших даних, а корінь зони завжди містить записи SOA і NS, тож CNAME там не дозволений. Деякі DNS-провайдери імітують його через ALIAS або сплощені записи, але ті відповідають IP-адресами замість CNAME. Верифікація Elido питає саме про CNAME, тож сплощений корінь не пройде.

При реєстрації імені діють ще два правила. Hostname має бути повним доменним іменем у нижньому регістрі, а імена під elido.me або elido.app зарезервовані.

Крок 2: додайте домен в Elido

Відкрийте Domains на бічній панелі дашборда, введіть hostname і натисніть Add domain. Позначте прапорець wildcard, лише якщо хочете, щоб працював кожен піддомен цього імені, як у *.go.example.com. Зазвичай це не потрібно. Після цього Elido показує два DNS-записи з кнопкою копіювання біля кожного.

Сторінка Domains у дашборді Elido з полем hostname, прапорцем wildcard, кнопкою Add domain і таблицею з одним доменом, його статусом та кліками за 30 днів

Той самий крок через API, для скриптів онбордингу або клієнтських робочих просторів:

curl -X POST https://api.elido.app/v1/workspaces/{workspace_id}/domains \
  -H "Authorization: Bearer $ELIDO_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"hostname": "go.example.com", "is_wildcard": false}'

Виклик потребує ролі, що може керувати доменами. Новий домен повертається зі статусом pending, verify_token та об'єктом instructions із точними значеннями записів:

{
  "domain": {
    "id": 42,
    "hostname": "go.example.com",
    "status": "pending",
    "is_wildcard": false
  },
  "instructions": {
    "txt_record": "_elido-verify.go.example.com TXT \"verify=<token>\"",
    "cname_record": "go.example.com CNAME edge.elido.me"
  }
}

Власні домени потребують платного плану. Спробуйте зареєструвати домен на безкоштовному робочому просторі, понад кількість доменів вашого плану або на призупиненій чи скасованій підписці - і API відповість 402. Цей код я б обробляв першим у будь-якому скрипті онбордингу, бо саме на нього клієнт натрапляє в перший же день. Дублікат hostname отримує 409. Агенціям із багатьма клієнтськими доменами варто прочитати сторінку рішень для агенцій про модель робочих просторів.

Крок 3: опублікуйте два DNS-записи

Додайте обидва записи в свого DNS-провайдера точно так, як показано:

go.example.com                  CNAME  edge.elido.me.
_elido-verify.go.example.com    TXT    "verify=<your-token>"

CNAME спрямовує трафік на Elido. Запис TXT доводить, що зона ваша. Потрібні обидва, а значення TXT має точно збігатися з токеном.

Для wildcard-реєстрації CNAME стає *.go.example.com, а запис TXT лишається на _elido-verify.go.example.com, на батьківському імені без зірочки.

Задайте TTL 300 секунд для обох записів, якщо провайдер дозволяє. У багатьох зонах типове значення 3600 секунд, і довгий TTL перетворює п'ятихвилинну справу на годинну.

Одна примітка щодо провайдера важливіша за решту. Якщо ви користуєтеся Cloudflare, залиште CNAME у режимі DNS-only. Документація Cloudflare каже, що запис із проксуванням відповідає власними IP-адресами Cloudflare замість вмісту запису (дата звернення 2026-10-09). Тож ім'я з проксуванням ніколи не поверне CNAME, який шукає Elido, і верифікація не пройде.

Крок 4: дочекайтеся верифікації

Нічого натискати не потрібно. Фоновий воркер усередині API Elido перевіряє кожен домен в очікуванні за таймером, типово кожні 30 секунд, через публічний резолвер Google 8.8.8.8. Він пропускає домен, лише коли виконано обидві умови:

  1. Запис TXT на _elido-verify.<hostname> містить точно verify=<token>.
  2. Hostname має CNAME, що резолвиться на edge-ціль Elido.

Коли обидві умови виконано, статус змінюється на verified. Опитуйте його самі, якщо скриптуєте налаштування:

curl https://api.elido.app/v1/workspaces/{workspace_id}/domains/42 \
  -H "Authorization: Bearer $ELIDO_API_TOKEN"

Щоб не чекати наступного такту, надішліть POST .../domains/42/verify. Він повертає 202 і переносить домен на початок черги. Домен, що залишається в очікуванні 24 години, позначається failed з причиною «verification timeout», а той самий виклик verify повертає домен у failed назад у pending, щоб ви могли повторити після виправлення DNS.

Якщо застрягло, запитайте записи так само, як це робить перевірка:

dig @8.8.8.8 TXT _elido-verify.go.example.com +short
dig @8.8.8.8 CNAME go.example.com +short

Перша команда має вивести "verify=<your-token>". Друга - edge.elido.me., разом із кінцевою крапкою.

Крок 5: перший запит видає сертифікат

Щойно статус стає verified, вам більше нічого робити. Elido не видає сертифікати наперед. TLS-шар видає його на вимогу, коли браузер уперше відкриває TLS-з'єднання для вашого hostname.

Перш ніж просити що-небудь у Let's Encrypt, edge викликає перевірку авторизації в API Elido. Відповідь «так» лише якщо hostname у стані verified або active, або якщо він підпадає під верифіковану wildcard-реєстрацію. Будь-яка інша відповідь, зокрема невідоме ім'я, відхиляє handshake, і сертифікат не запитується. Саме ця перевірка не дозволяє стороннім спрямувати мільйон hostname на Elido й вичерпати ліміти центру сертифікації.

Коли перевірка пройдена, видача використовує виклик HTTP-01 з RFC 8555: центр сертифікації запитує токен на /.well-known/acme-challenge/ вашого hostname по звичайному HTTP, edge відповідає, і сертифікат видається та кешується. Перший відвідувач на мить чекає на це. Наступні запити використовують кешований сертифікат.

Під час першого TLS-handshake edge питає шлюз авторизації; 404 зупиняє видачу, а 200 для верифікованого домену веде до виклику Let's Encrypt HTTP-01 і кешованого сертифіката.

Практична звичка: відкрийте https://go.example.com самі одразу після верифікації, щоб сертифікат існував до того, як першим запитом стане клієнт або скан QR.

Передайте id домену як domain_id, коли створюєте посилання. Посилання працює на https://go.example.com/<slug> одразу. Сторінка Domains також показує кліки за 30 днів на кожен hostname. Повний довідник, зокрема настанови щодо CAA, - у посібнику з власних доменів, а огляд продукту - на сторінці функції власних доменів.

Що означають значення статусу

СтатусЗначенняЩо робити
pendingДомен зареєстровано, DNS ще не видноПеревірте TXT і CNAME за допомогою dig
verifiedОбидва записи знайдено, сертифікати можна видаватиВідкрийте HTTPS-URL один раз, потім створюйте посилання
failedНе верифіковано протягом 24 годин, причина в рядкуВиправте DNS, потім знову викличте ендпоінт verify
activeПриймається шлюзом так само, як verifiedНічого; ставтеся як до verified

У поточній збірці здоровий домен залишається в verified. Значення active існує в моделі даних і у фільтрі дашборда, шлюз сертифікатів приймає обидва, але поки що ніщо не переводить домен у нього.

Типові підводні камені

Записи CAA, що виключають Let's Encrypt. Запис CAA обмежує, які центри можуть видавати сертифікати для імені, і успадковується піддоменами (дата звернення 2026-10-09). Якщо у вашій зоні є example.com CAA 0 issue "digicert.com", видачу для go.example.com буде відхилено. Додайте go.example.com CAA 0 issue "letsencrypt.org" або розширте запис на вершині.

Проксі чи CDN перед CNAME. Помаранчева хмарка Cloudflare - найчастіший випадок, розглянутий у кроці 3. Будь-який шар, що відповідає на DNS чи HTTP замість вас, ламає і перевірку CNAME, і виклик HTTP-01.

Wildcard - це не wildcard-сертифікати. Згідно з документацією Let's Encrypt щодо типів викликів, HTTP-01 не може видавати wildcard-сертифікати, а DNS-01 потребує доступу на запис до вашої зони (дата звернення 2026-10-09). Тож wildcard-реєстрація покриває маршрутизацію для кожного піддомену, але client1.go.example.com і client2.go.example.com отримують власні сертифікати при першому використанні. Let's Encrypt обмежує нові сертифікати на зареєстрований домен до 50 кожні 7 днів (дата звернення 2026-10-09), тож підключення сотень нових піддоменів за один тиждень потребує планування.

Пізніше видалення CNAME. Сьогодні DNS-перевірка виконується лише поки домен в очікуванні. Щойно домен верифіковано, Elido його не перевіряє повторно, тож видалений CNAME проявляється як збійні редиректи та збійне оновлення сертифікатів, а не як зміна статусу чи сповіщення. Моніторте запис на своєму боці. Періодична перевірка здоров'я зі станом деградації та пільговим періодом запланована, але не збудована.


Marius Voß - DevRel + edge infra в Elido. Він відповідає за шлях редиректу та потік власних доменів.

Читайте також у блозі

Поширені запитання

Скільки часу займає налаштування TLS для власного домену?

Додавання домену займає хвилину, публікація двох DNS-записів - ще кілька, а потім ви чекаєте на поширення DNS. Elido за замовчуванням перевіряє домени в очікуванні кожні 30 секунд, тож верифікація настає невдовзі після того, як ваші записи стають видимими. З TTL 300 секунд це зазвичай хвилини; з TTL 3600 секунд може тривати довше. Сертифікат видається при першому HTTPS-запиті до верифікованого hostname, а не раніше.

Які DNS-записи потрібні Elido для власного домену?

Два. Запис TXT на _elido-verify.<ваш hostname> зі значенням verify=<token> доводить, що ви контролюєте зону, а CNAME від вашого hostname на edge-ціль Elido спрямовує трафік. Elido показує обидва точні значення в момент додавання домену, у дашборді та у відповіді API, і обидва мають бути на місці, щоб домен пройшов верифікацію.

Чи можна використати кореневий домен, наприклад example.com, для коротких посилань?

Ненадійно. Стандарт DNS не дозволяє CNAME на вершині зони, а верифікація Elido шукає справжню відповідь CNAME, тож сплощений запис або ALIAS, що повертає лише IP-адреси, не пройде. Використовуйте піддомен, наприклад go.example.com або links.example.com. Його також коротше набирати в кожному посиланні, яким ви ділитеся.

Чи видає Elido wildcard-сертифікат для мого домену?

Ні. Реєстрація wildcard-домену дозволяє обслуговувати кожен піддомен під вашим іменем, але кожен hostname отримує власний сертифікат при першому запиті через виклик HTTP-01. Let's Encrypt видає wildcard-сертифікати лише через виклик DNS-01, який потребує доступу на запис до вашої DNS-зони, а в Elido такого доступу немає. Для відвідувачів результат той самий.

Чому мій домен залишається у статусі pending?

Або значення TXT не збігається з токеном точно, або CNAME не резолвиться на edge-ціль Elido, або проксі відповідає замість вашого CNAME. Elido шукає обидва записи через публічний резолвер, тож перевірте їх за допомогою dig ззовні вашої мережі. Домен, який лишається в очікуванні понад 24 години, позначається як failed з причиною, і після цього можна запросити нову верифікацію.

Чи працюють власні домени на кожному плані Elido?

Ні. Безкоштовні робочі простори не мають квоти на власні домени. Платні плани Pro і Business включають власні домени, а кількість, яку можна підключити, залежить від розміру плану, тож перегляньте сторінку цін для свого рівня. Додавання домену понад ліміт або на призупиненій чи скасованій підписці відхиляється помилкою payment-required.

Спробуйте Elido

Вставте URL - отримайте коротке посилання

Без реєстрації. Посилання живе 30 днів. Зареєструйтесь, щоб зберегти назавжди.

Без реєстрації. Зареєструйтеся безкоштовно і отримайте 50 посилань на місяць.

Спробуйте Elido

URL-скорочувач із хостингом у ЄС: власні домени, глибока аналітика, відкритий API. Безкоштовний тариф - без кредитної картки.

Теги
custom domain tls
branded short links setup
short url https
custom domain url shortener
on-demand tls
dns cname short link

Читати далі