独自ドメイン / DNS / HTTPS

Webアプリに独自ドメインを設定する方法|DNS・CNAME・HTTPSを図解

Webアプリの独自ドメイン設定を、DNS・CNAME・TXT・HTTPSの役割から図解。KamuiDashの画面例で入力項目を説明し、設定後に開かないときの確認順序まで整理します。

Webアプリは公開できた。次は、サービスから発行されたURLを、自分の app.example.com にしたい。

ここで必要になるのは、ドメインの購入だけではありません。アプリの公開先に「この名前でアクセスを受ける」と登録し、DNSで接続先を示し、その名前で使えるHTTPSの証明書を用意します。

設定画面を行き来すると、この3つが同じ作業に見えがちです。この記事では役割を分けて説明し、KamuiDashを例に、入力する内容と公開後の確認までたどります。すでに既定のURLで動いているアプリと、DNS設定を編集できるドメインがあることを前提にします。

スクリーンショットは操作説明用のデモ画面です。ドメインや検証値はサンプルで、実際のドメイン登録・証明書発行・疎通成功を示すものではありません。画面の表記は2026年11月5日に確認したUIに基づきます。

この記事の内容

ドメイン・DNS・HTTPSを分けて考える

https://app.example.com/notes というURLでは、app.example.com がホスト名、/notes がアプリ内のパスです。ドメインを取得すると、その配下の名前を管理できるようになります。どのアプリにつなぐかは、別に設定します。

設定するもの 決めること 主な設定場所
アプリの独自ドメイン このホスト名のアクセスを、どのアプリで受けるか アプリを公開しているサービス
DNSレコード そのホスト名の接続先をどう調べるか ドメインのDNSを管理しているサービス
TLS証明書(画面ではSSLとも表記) そのホスト名でHTTPS接続を受けられるか 公開先の証明書・独自ドメイン設定
DNSとHTTPSとアプリ登録の役割ブラウザはDNSへ問い合わせて回答を受け取る。別の矢印でブラウザから公開先へ直接HTTPS接続する。自分のURLで開くまで役割を分ける概念図ブラウザhttps://app.example.com① 問い合わせ回答を返すDNS接続先を調べるためのレコードWebページの通信は中継しない② ブラウザが公開先へ直接HTTPS接続アプリの公開先ホスト名の登録 + TLS証明書登録された名前でアプリを返すDNSの回答を受けた後、ブラウザが接続。
図1:DNSへの問い合わせと、アプリへのHTTPS接続は別の処理。公開先にはホスト名の登録と証明書の準備も必要です。

複数のアプリを同じ公開基盤が受け付ける場合、接続先だけではどのアプリか決まりません。公開先への独自ドメイン登録が、その名前とアプリを結び付けます。Renderにも「公開先への追加 → DNSの設定 → 検証」という手順があります。Render公式:Custom Domains

ドメインの購入先と、DNSの編集先が同じとは限りません。DNSの管理を別サービスに移していれば、変更するのは移した先のDNSレコードです。どこで買ったかに加えて、現在どこでDNSを管理しているかを確認しておきます。

最初は app.example.com を接続する

この記事では、取得済みの example.com の配下にある app.example.com を使います。

example.com 自体はルートドメインとも呼ばれます。ルートに接続する場合は、公開先とDNSサービスの組み合わせによって設定方法が変わります。例えばCloudflareには、ルートでCNAMEの設定を使えるようにするCNAME flatteningがあります。まずサブドメインで流れを理解し、ルートを使うときは双方の案内を確認すると進めやすくなります。Cloudflare公式:CNAME flattening

接続前に、使いたい名前が既存のWebサイトなどに使われていないか確認します。新しい app の設定で、無関係な名前やメール用のレコードまで変更する必要はありません。すでに使っているホスト名を移す場合は、既存設定と戻し方を控えてから切り替えます。

また、ドメインの取得・更新費用と、公開先の独自ドメイン機能の料金は別です。KamuiDashでも独自ドメインは追加の課金対象になるため、設定前に公式ドキュメントと料金ページを確認してください。

1. 公開先にホスト名を登録する

KamuiDashでは、対象アプリの詳細画面から「カスタムドメインを設定」を開きます。入力するのは、使いたいホスト名です。

app.example.com

https:// や /notes は含めません。URL全体ではなく、アプリに接続したい名前を登録します。

カスタムドメインの追加ダイアログにapp.example.comを入力したデモ画面
画面1:ホスト名を入力し「設定して次へ」へ進みます。現行UIを使ったデモであり、実アカウントでの登録画面ではありません。 画像を拡大 ↗

登録後はDNS設定の案内を確認します。すでに設定済みなら「カスタムドメインを管理」から確認できます。KamuiDashは1アプリにつき1つの独自ドメインなので、既存ドメインのあるアプリでは、現在の設定を確認してから変更します。KamuiDash公式:カスタムドメイン

2. CNAMEと、画面に表示された検証レコードを設定する

DNS側では、まずホスト名の接続先を設定します。ここで使うCNAMEは「別のホスト名を参照する」レコードです。AレコードはIPv4アドレス、AAAAレコードはIPv6アドレスを指定します。公開先がどの種類を指定するかで、入力する値も変わります。Cloudflare公式:DNS record types

KamuiDashでは、独自ドメイン設定に表示されたCNAMEの接続先を使います。アプリの既定URLを推測して入れず、画面の値をコピーします。

SSL準備中の画面にCNAMEの接続先とTXTのKey・Valueが表示されているデモ
画面2:このデモではCNAMEと証明書検証用TXTが表示されています。表示されるレコードや値は、登録したドメインと検証状態によって変わります。 画像を拡大 ↗

例えば、この画面を example.com のDNSへ入力するなら、対応は次のようになります。表の値は説明用なので、そのまま登録しないでください。

種類 名前・ホスト欄 値・接続先欄
CNAME app または app.example.com 画面に表示された接続先。図の例では demo-target.example.net
TXT(画面に表示された場合) 表示されたKey。図の例では _acme-challenge.app 表示されたValue。図の例では demo-validation-value

DNSサービスによって、名前欄には app だけを入れるものと、app.example.com を入れるものがあります。保存後のレコード名が app.example.com になっているかを確認してください。末尾のドメインを自動で付ける画面に完全な名前を入れると、二重になる場合があります。

DNS入力欄と案内画面の対応CNAME Hostは接続先の値、TXT Keyは名前、Valueは値。例のレコードはサンプル。画面の値を、DNSのどこへ入れる?example.com の設定を編集する例CNAME:接続先を指定名前 app値 demo-target.example.net画面の Host → DNSの「値」TXT:検証用の値を指定名前 _acme-challenge.app値 demo-validation-value画面の Key → DNSの「名前」画面の Value → DNSの「値」保存後の名前を確認するapp.example.com名前欄の自動補完はDNSサービスごとに違う。レコード名・値はすべて説明用のサンプル。
図2:CNAME欄の「Host」は、画面2では接続先の値です。DNS側の「名前」欄に入れる app と区別します。

CNAMEの値に https:// やパスは付けません。また、CNAMEはDNS上の別名なので、設定しただけでブラウザのURLを別URLへ転送するものでもありません。Cloudflare公式:CNAMEレコード

TXTは、表示された目的と値を確かめる

証明書を発行するには、そのドメインを管理していることの検証が必要です。方式の一つに、指定されたTXTレコードをDNSへ置く方法があります。DNS以外の検証方法もあるため、どのサービスでもTXTが必須とは限りません。Let's Encrypt公式:Challenge Types

KamuiDashの現行UIでは、SSLの準備中に証明書検証用のTXTが表示される場合があります。SSLが有効になると、その案内が表示されない場合もあります。また、「TXTレコード(所有権確認)」が別に表示されたら、それも対象です。「CNAMEとTXTを1件ずつ」という固定の件数で判断せず、現在の画面に表示されたレコードを確認します。

同じ名前のTXTに複数の値が案内されている場合は、それぞれを独立した値として登録します。文字列を連結して1つにしません。複数の証明書検証レコードが必要になるケースは、CloudflareのTXTによる証明書検証の説明にも記載されています。

CloudflareでDNSを管理している場合も、公開先が指定するプロキシ状態などの条件に従ってください。DNSのみで使う設定と、Cloudflareが通信を中継する設定では挙動が異なります。Cloudflare公式:Proxy status

3. DNSとSSLを確認してから、アプリを開く

DNSレコードを保存しても、すべての問い合わせ先がすぐ同じ答えを返すとは限りません。DNSには応答を一定期間保存する仕組みがあり、その時間にTTLが関係します。「保存した時刻から必ず何分で使える」とは決めず、登録内容と応答を確認します。Cloudflare公式:TTL

KamuiDashの画面で状態を再確認し、「SSL有効」になっているかを見ます。

カスタムドメインの管理画面にSSL有効と表示され、証明書検証用TXTの案内がないデモ
画面3:「SSL有効」の表示例。デモデータによる表示で、証明書の実発行を示しません。CNAMEの接続先もあわせて確認します。 画像を拡大 ↗

SSLの表示だけで完了にはせず、ブラウザで https://app.example.com を開き、想定したアプリが表示されることを確認します。トップページに加え、実際に使うページやAPIにもアクセスします。

ログイン機能や外部API連携があるアプリでは、URLが変わる影響も確認します。例えば、認証サービスに登録したコールバックURL、別オリジンへのAPI接続、CookieのDomain設定などです。DNSとHTTPSが正しくても、アプリが以前のURLを前提にしていれば、その機能は別途調整が必要です。

HTTPからHTTPSへの転送も確認対象です。次の例はレスポンスヘッダーを表示するコマンドで、app.example.com は自分の名前に置き換えます。

curl -sS -D - -o /dev/null http://app.example.com/

HTTPSへの転送を期待する場合は、応答のステータスと Location を確認します。HTTPSが利用できることと、HTTPから自動転送されることは別です。挙動は公開先やアプリの設定で確認してください。

開かないときは、DNS・証明書・アプリの順に見る

DNS、証明書、アプリの順で調べるDNSの名前と接続先、TLS証明書の状態、アプリの応答と機能を順に確認する。開かないときの確認順序まず、どの段階で止まっているかを確かめる1 DNSで接続先を調べられる?管理先 / 名前 / 接続先 / 検証TXTCNAMEの応答だけで成否を決めない2 その名前の証明書は有効?SSL状態 / 検証レコード / 警告内容警告を無視して完了にしない3 想定したアプリが応答する?既定URL / 登録先 / ルーティングログインなど、普段の操作まで確認DNS・TLS・HTTPを混ぜずに確認する。
図3:「設定したのに開かない」を、確認できる3つの段階に分けます。

名前が見つからない・違う場所につながる

DNSを編集したサービスが、現在そのドメインのDNSを管理しているかを確認します。続いて、レコードの名前と値を見ます。名前の二重付加、接続先のコピー間違い、同じ名前に残っている競合レコードなどが確認点です。

ターミナルに dig があれば、次のようにDNSの応答を調べられます。

dig app.example.com CNAME +short
dig app.example.com A +short
dig _acme-challenge.app.example.com TXT +short

TXTの問い合わせ名は、画面に表示されたものに置き換えます。CNAMEの結果に接続先が出る設定もあれば、プロキシやCNAME flatteningによってAレコードとして返る設定もあります。CNAMEの結果が空という理由だけでは、設定失敗と断定できません。 公開先とDNSサービスの方式に合わせて読みます。Cloudflare公式:CNAME flattening

dig が使えない場合も、まずDNS管理画面で保存された名前と値を確認できます。コマンドの導入より先に、入力先と入力内容を確かめてください。

証明書の警告が出る・SSL準備中が続く

登録したホスト名、DNSの接続先、要求された検証レコードを確認します。SSL準備中のままなら、画面に示された検証が完了しているかを見ます。証明書の警告を無視して公開完了とせず、ブラウザに表示されたエラー内容と、公開先の状態を照らし合わせます。

KamuiDashで「要対応」や「確認できません」と表示された場合も、何度もドメインを削除・再登録する前に、現在のレコードとエラーを確認します。待つ必要がある状態と、入力を直す必要がある状態を分けて考えます。

HTTPSで開くが、404・502になる

この段階では、独自ドメインの登録先とアプリの状態を確認します。既定のURLでも同じエラーになるなら、起動状態やアプリ内のルーティングを調べる手掛かりになります。独自ドメインだけで起きる場合は、ホスト名の登録や、アプリ側の許可ホスト設定などを確認します。

ただし、404や502の発生元は公開基盤の場合もアプリの場合もあります。HTTPのエラー応答を受け取れたことだけでDNS以降がすべて正しいと決めず、表示内容やログでどこが返しているかを確認します。

自分のURLで、いつもの操作ができれば完了

独自ドメインの接続は、ホスト名を公開先に登録し、DNSの接続先と必要な検証レコードを設定し、HTTPSとアプリの応答を確かめる作業です。

最後に、入力したホスト名の https:// で目的のアプリが開くこと、必要なページやログインが動くこと、HTTPの扱いが想定どおりであることを確認します。ここまで分けて見ると、開かないときにも「反映待ちだろう」で止まらず、次に確認する場所を選べます。

アプリ自体の公開がまだなら、GitHubにpushしたら自動公開する手順から進められます。公開先を検討している場合は、個人開発のWebアプリの公開先も参考にしてください。

KamuiDashは、GitHubからWebアプリをデプロイできるPaaSです。

画像を拡大