1分で読了機能

短縮リンクのカスタムドメインTLS: 5分で設定

Elidoにカスタムドメインを追加し、TXTとCNAMEのレコードを1つずつ公開すれば、初回利用時にHTTPSが発行されます。各ステップの役割と。

Marius Voß
DevRel · edge infra

HTTPS付きのカスタムドメインの設定に必要なのは、TXTレコード1つ、CNAMEレコード1つ、そして短い待ち時間です。Elidoにホスト名を追加し、表示される2つのDNSの値をコピーすれば、そのドメインのリンクが初めて開かれたときにTLS証明書が自動で発行されます。時間がかかるのはDNSの伝播で、これはTTLで調整できます。この記事では5つのステップを順に説明したあと、仕組みを解説するので、どこかで止まったときにどこを見ればよいか分かります。

以下の内容はすべて、2026-10-09時点のElidoの現行コードとダッシュボードで確認しました。関連する機能がまだ作られていない場合は、記事中でそう明記しています。

短縮リンクでTLSが重要な理由

短縮リンクはリダイレクトであり、リダイレクトのレスポンスがペイロードのすべてです。Locationヘッダー付きの301または302が、あなたの行き先URLを運びます。最初のリクエストが平文のHTTPで送られると、ブラウザーがそれに従う前に、ネットワーク経路上の誰もがその行き先を読めてしまいます。

QRコードはこれをさらに悪化させます。店のショーウィンドウやポスターのコードをスキャンする人は、そのURLと事前の関係がなく、アドレスバーが唯一の信頼の手がかりになります。スキャンした時点でブラウザーの警告が出るのは、考えうる最悪の第一印象であり、しかも印刷の費用はすでに払い済みです。

Elidoの共有短縮ドメインでは、証明書はElidoのものなので、南京錠は本物でも、そこに表示される名前はあなたのものではありません。go.acme.comなら、その名前はあなたのものです。その背景にあるDNSとTLSの基礎は、コーナーストーン記事のカスタムドメインの短縮リンクをご覧ください。

有効なドメイン 1 件、DNS 確認待ち 1 件、修正のヒント付きで検証に失敗した 1 件を表示した Elido のカスタムドメイン一覧

ステップ1: ホスト名を選ぶ

自分で管理していて、ほかの用途には使っていない短いサブドメインを選びます。go.example.com、links.example.comなどです。接頭辞は送るすべてのリンクに現れるので、短いほどよいです。

ルートそのものではなく、サブドメインを使ってください。RFC 1034 section 3.6.2は、CNAMEを持つ名前はほかのデータを持てないとしており、ゾーンのルートには常にSOAとNSのレコードがあるため、そこにCNAMEは置けません。DNSプロバイダーによっては、ALIASやフラット化されたレコードで擬似的に実現していますが、それらはCNAMEではなくIPアドレスで応答します。Elidoの検証はCNAMEそのものを要求するため、フラット化されたルートは通りません。

名前を登録するときには、さらに2つのルールがあります。ホスト名は小文字の完全修飾ドメイン名でなければならず、elido.meやelido.appの下の名前は予約されています。

ステップ2: Elidoにドメインを追加する

ダッシュボードのサイドバーで Domains を開き、ホスト名を入力して Add domain をクリックします。*.go.example.com のように、その名前のすべてのサブドメインを動かしたい場合だけ、ワイルドカードのチェックボックスをオンにします。通常は不要です。するとElidoが2つのDNSレコードを表示し、それぞれにコピー用のボタンが付きます。

ElidoダッシュボードのDomainsページ。ホスト名の入力欄、ワイルドカードのチェックボックス、Add domainボタン、そして1つのドメインとそのステータス、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"
  }
}

カスタムドメインには有料プランが必要です。Freeのワークスペースで登録しようとした場合、プランのドメイン数を超えた場合、サブスクリプションが一時停止または解約されている場合は、APIが 402 を返します。このコードは、顧客が初日にぶつかるものなので、どのオンボーディングスクリプトでも最初に処理するようにしています。ホスト名が重複すると 409 になります。多数のクライアントドメインを運用する代理店は、ワークスペースのモデルについて代理店向けソリューションのページを読んでください。

ステップ3: 2つのDNSレコードを公開する

DNSプロバイダーで、表示されたとおりに両方のレコードを追加します。

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

CNAMEはトラフィックをElidoにルーティングします。TXTレコードは、あなたがそのゾーンを所有していることを証明します。両方が必要で、TXTの値はトークンと完全に一致していなければなりません。

ワイルドカード登録の場合、CNAMEは*.go.example.comになり、TXTレコードはアスタリスクなしの親の名前である_elido-verify.go.example.comのままです。

プロバイダーが許すなら、両方のレコードにTTL 300秒を設定してください。多くのゾーンの既定は3600秒で、長いTTLが5分の作業を1時間に変えてしまいます。

ほかのどれよりも重要なプロバイダー別の注意点が1つあります。Cloudflareを使う場合は、CNAMEを「DNS only」のままにしてください。Cloudflareのドキュメントによれば、プロキシ経由のレコードは、レコードの内容ではなくCloudflare自身のIPアドレスで応答されます(2026-10-09に確認)。そのためプロキシ経由の名前は、ElidoのCNAME検証が探すCNAMEを返さず、検証は通りません。

ステップ4: 検証を待つ

クリックする必要はありません。ElidoのAPI内のバックグラウンドワーカーが、保留中のすべてのドメインをタイマーで確認します。既定では30秒ごとで、Googleのパブリックリゾルバー8.8.8.8を使います。ドメインが通るのは、次の両方の条件が満たされたときだけです。

  1. _elido-verify.<hostname>のTXTレコードが、ちょうどverify=<token>を含んでいる。
  2. ホスト名に、Elidoのエッジターゲットに解決されるCNAMEがある。

両方が通ると、ステータスがverifiedに変わります。セットアップをスクリプト化している場合は、自分でポーリングしてください。

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

次のタイマーを待たずに済ませるには、POST .../domains/42/verifyを送ります。202が返り、そのドメインがキューの先頭に移ります。24時間pendingのままのドメインは、「verification timeout」という理由付きでfailedになり、同じ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

1つ目は"verify=<your-token>"を出力するはずです。2つ目は、末尾のドットも含めてedge.elido.me.を出力するはずです。

ステップ5: 最初のリクエストが証明書を発行する

ステータスがverifiedになれば、やることは残っていません。Elidoは証明書を事前に発行しません。TLS層が、ブラウザーがあなたのホスト名に対して最初にTLS接続を開いたときに、オンデマンドで発行します。

Let's Encryptに何かを要求する前に、エッジはElido APIの認可チェックを呼び出します。答えが「はい」になるのは、ホスト名がverifiedまたはactiveの状態にあるか、検証済みのワイルドカード登録の配下にある場合だけです。未知の名前を含め、それ以外の答えはハンドシェイクを拒否し、証明書は要求されません。この関門のおかげで、第三者が100万個のホスト名をElidoに向けて、認証局のレート制限を使い果たすことができなくなっています。

チェックが通ると、発行にはRFC 8555のHTTP-01チャレンジが使われます。認証局がプレーンなHTTPであなたのホスト名の/.well-known/acme-challenge/にあるトークンを要求し、エッジがそれに応答して、証明書が発行されキャッシュされます。最初の訪問者は、このために少し待たされます。以降のリクエストは、キャッシュされた証明書を再利用します。

最初のTLSハンドシェイクでエッジが認可の関門に問い合わせる。404なら発行は止まり、検証済みドメインへの200ならLet's EncryptのHTTP-01チャレンジに進み、証明書がキャッシュされる。

実践的な習慣として、検証の直後に自分でhttps://go.example.comを開いてください。顧客やQRコードのスキャンが最初のリクエストになる前に、証明書が存在するようになります。

リンクを作成するとき、ドメインのidをdomain_idとして渡します。リンクはすぐにhttps://go.example.com/<slug>で有効になります。Domainsページには、ホスト名ごとの30日間のクリック数も表示されます。CAAのガイダンスを含む完全なリファレンスはカスタムドメインガイドに、製品の概要はカスタムドメイン機能のページにあります。

ステータスの値の意味

ステータス意味対応
pendingドメインは登録済みで、DNSはまだ確認できていないdigでTXTとCNAMEを確認する
verified両方のレコードを確認済みで、証明書を発行できるHTTPSのURLを一度開いてから、リンクを作成する
failed24時間以内に検証されなかった。理由は行に表示されるDNSを直してから、verifyエンドポイントを再度呼ぶ
activeverifiedと同様に関門で受け入れられる何もしない。verifiedと同じ扱いにする

現行のビルドでは、正常なドメインはverifiedのままです。activeの値はデータモデルとダッシュボードのフィルターには存在し、証明書の関門も両方を受け入れますが、ドメインをそこへ移す処理はまだありません。

よくある落とし穴

Let's Encryptを除外するCAAレコード。 CAAレコードは、ある名前に対して発行できる認証局を制限し、サブドメインに継承されます(2026-10-09に確認)。ゾーンにexample.com CAA 0 issue "digicert.com"があると、go.example.comの発行は拒否されます。go.example.com CAA 0 issue "letsencrypt.org"を追加するか、頂点のレコードを広げてください。

CNAMEの手前にあるプロキシやCDN。 Cloudflareのオレンジ色の雲が典型例で、ステップ3で説明したとおりです。あなたの代わりにDNSやHTTPで応答する層があれば、CNAMEの確認もHTTP-01チャレンジも壊れます。

ワイルドカードはワイルドカード証明書ではありません。 Let's Encryptのチャレンジに関するドキュメントによれば、HTTP-01ではワイルドカード証明書を発行できず、DNS-01にはゾーンへの書き込み権限が必要です(2026-10-09に確認)。つまり、ワイルドカード登録はすべてのサブドメインのルーティングをカバーしますが、client1.go.example.comとclient2.go.example.comはそれぞれ、初回利用時に独自の証明書を受け取ります。Let's Encryptは、登録ドメインごとの新しい証明書を7日間で50件までに制限しているため(2026-10-09に確認)、新しいサブドメインを数百件、1週間でオンボーディングするには計画が必要です。

あとからCNAMEを削除すること。 現状、DNSのチェックはドメインが保留中のあいだだけ実行されます。ドメインがいったん検証されると、Elidoは再確認しないため、CNAMEを削除すると、ステータスの変化や通知ではなく、リダイレクトの失敗と証明書の更新の失敗として表面化します。レコードの監視は、そちら側で行ってください。劣化状態と猶予期間を持つ定期的なヘルスチェックは、計画中で、まだ作られていません。


Marius VoßはElidoのDevRel兼エッジインフラ担当です。リダイレクト経路とカスタムドメインのフローを担当しています。

ブログの関連記事

よくある質問

カスタムドメインのTLS設定にはどのくらいかかりますか?

ドメインの追加は1分、2つのDNSレコードの公開にはさらに数分かかり、そのあとDNSの伝播を待ちます。Elidoは保留中のドメインを既定で30秒ごとに確認するため、レコードが見えるようになった直後に検証が完了します。TTLが300秒なら通常は数分、3600秒ならもっとかかることがあります。証明書は、検証済みのホスト名への最初のHTTPSリクエストで発行され、それより前には発行されません。

カスタムドメインにはどのDNSレコードが必要ですか?

2つです。_elido-verify.<your hostname> にある値 verify=<token> のTXTレコードがゾーンを管理していることを証明し、ホスト名からElidoのエッジターゲットへのCNAMEがトラフィックをルーティングします。ドメインを追加した時点で、ダッシュボードとAPIレスポンスの両方に、正確な値が2つとも表示されます。ドメインが検証されるには、両方が存在している必要があります。

example.comのようなルートドメインを短縮リンクに使えますか?

確実には使えません。DNSの標準ではゾーンの頂点にCNAMEを置くことができず、Elidoの検証は本物のCNAMEの応答を探すため、IPアドレスだけを返すフラット化されたレコードやALIASレコードでは通りません。go.example.comやlinks.example.comのようなサブドメインを使ってください。共有するすべてのリンクで入力する文字数も短くなります。

Elidoは自分のドメイン用にワイルドカード証明書を発行しますか?

いいえ。ワイルドカードのドメイン登録をすると、あなたの名前の下にあるすべてのサブドメインを配信できますが、各ホスト名はHTTP-01チャレンジを通じて最初のリクエスト時に独自の証明書を受け取ります。Let's Encryptがワイルドカード証明書を発行するのはDNS-01チャレンジだけで、それにはDNSゾーンへの書き込み権限が必要ですが、Elidoにはその権限がありません。訪問者にとっての結果は同じです。

ドメインがpendingのままなのはなぜですか?

TXTの値がトークンと完全には一致していない、CNAMEがElidoのエッジターゲットに解決されない、またはプロキシがあなたのCNAMEの代わりに応答している、のいずれかです。Elidoは両方のレコードをパブリックリゾルバー経由で引くため、ネットワークの外部からdigで確認してください。24時間経ってもpendingのままのドメインは、理由付きでfailedになり、そのあとで新しい検証を依頼できます。

カスタムドメインはElidoのすべてのプランで使えますか?

いいえ。Freeワークスペースにはカスタムドメインの枠がありません。有料のProおよびBusinessプランにはカスタムドメインが含まれ、追加できる数はプランの規模によって異なるため、ご自身のプランは料金ページで確認してください。上限を超えて、または一時停止中や解約済みのサブスクリプションでドメインを追加しようとすると、payment-requiredエラーで拒否されます。

Elidoを試す

URLを貼り付けて短縮リンクを取得

登録不要。リンクは30日間有効。永久に保存するには登録してください。

登録不要。無料登録すると月 50 件のリンクを作成できます。

Elidoを試す

EUホスティングのURL短縮サービス。カスタムドメイン、詳細な分析、オープンAPI付き。無料プラン - クレジットカード不要。

タグ
custom domain tls
branded short links setup
short url https
custom domain url shortener
on-demand tls
dns cname short link

続きを読む