DNS CNAMEレコードを使用したAPIドメイン認証
CNAMEレコード(正規名レコード)は、DNSの基本的な構成要素であり、あるドメイン名を別のドメイン名のエイリアスとして利用できるようにします。CNAMEレコードは、ドメイン管理の簡素化、サードパーティサービスのサポート、コンテンツ配信ネットワーク(CDN)を介したトラフィックのルーティングによく使用されます。www.example.comをルートドメイン(example.com)にリンクする場合でも、カスタムサブドメインをSaaSプラットフォームに接続する場合でも、CNAMEレコードはDNS設定を柔軟かつ効率的に管理する方法を提供します。
CNAMEに関する重要な注意事項
CNAMEレコードの動作は他のDNSレコードとは少し異なり、いくつかの重要なルールがあります。DNSリゾルバーがAレコードやMXレコードなどの別の種類のレコードを検索中にCNAMEレコードに遭遇した場合、リゾルバーはエイリアスを辿り、新しいターゲット名を使用してクエリを再開します。ただし、リゾルバーがCNAMEレコードのみを検索している場合は、検索を再開せずにCNAMEレコードそのものを返します。
CNAMEの宛先は、同じDNSゾーン内であっても、全く別のサーバーであっても、有効なドメインであればどれでも指定できます。ただし、いくつか重要な制限事項がありますので、留意してください。
-
CNAME レコードを持つドメインには、他のレコード タイプ (A、MX、TXT など) を含めることはできません。
-
CNAME はドメインのルート (ゾーン アペックスとも呼ばれます) では使用できません。このレベルでは NS のようなレコードが必要であり、それらは独立して存在する必要があるためです。
CNAMEレコードの作成
まず、証明書で保護したいドメインのCNAMEレコードを手動で作成します。このレコードは、DNSチャレンジを、実際のTXTレコードがホストされる別のドメインに委任します。CNAMEレコードの名前は、アンダースコア「_」で始まる必要があります。CNAMEレコードの対象ドメイン(TXTレコードがホストされるドメイン)は、アンダースコアで始まっても構いませんが、必須ではありません。ドメインプレフィックスは「_acme-challenge」にしないでください。GlobalSign Atlas APIでは、CNAMEに他のプレフィックスを使用できます。
たとえば、example.com の証明書を発行するが、TXT レコードを example.net でホストする場合は、次のいずれかの CNAME レコードを作成します。
_globalsign-challenge.example.com CNAME _globalsign-challenge.example.net
_globalsign-challenge.example.com CNAME example.net
これにより、Atlas サーバーとリゾルバーに、example.com の TXT 認証トークンが example.net にあることが通知されます。
ドメインの認証
CNAMEレコードの設定が完了したら、ドメインの認証(ドメインクレームの作成とも呼ばれます)に進むことができます。example.comを認証する際は、API呼び出しで、前の手順で作成したCNAMEレコードで使用されているドメイン名(_globalsign-challenge.example.com)を、AtlasサーバーがTXTレコードを検索する場所として指定します。APIはexample.netへのCNAMEレコードが存在することを認識し、AtlasサーバーはそこからDNS TXTレコードを検索します。このドメイン認証のプロセスでexample.comのDNSを変更する必要はありません。
-
Atlas API を使用して、認証したいドメインをリクエストします: POST /claims/domains/{domain}。
-
認証用のトークンを受け取ります。
-
DNS を更新し、example.net にトークンを含む TXT レコードを追加してください(すでにいくつか存在していても問題ありません)。
-
Atlas API を使用して、ドメイン _globalsign-challenge.example.com を指定して /claims/domains/{claimID}/dns を POST します (これは CNAME レコードで使用されるドメイン名であり、認証対象の元のドメインではありません)。
-
Atlas サーバーは、example.net への CNAME をたどり、正しい TXT レコードを見つけることで、ドメインが有効であることを認識します。
-
有効な TXT レコードが example.net で見つかり、ドメインが承認されます。
認証完了後は当該TXT レコードを削除いただいて問題ございません。
証明書のリクエスト
ドメインの認証が完了したら、Atlas API(POST /certificates)を使用してexample.comの証明書をリクエストできます。Atlasサーバーは_globalsign-challenge.example.comレコードを照会し、認証が完了したことを確認し、example.comの証明書を発行します