DNS 認証を使用すると、Google マネージド証明書のドメインの所有権を確認できます。Google マネージド証明書を作成するときに、プロビジョニングと更新に使用する DNS 認証を 1 つ以上指定できます。
このページでは、Google マネージド証明書で使用する DNS 認証を作成および管理する方法について説明します。
詳細については、ドメイン認証をご覧ください。
DNS 認証を作成する
DNS 認証は 1 つのドメイン名のみを対象とします。ターゲット証明書で使用するドメイン名ごとに個別の DNS 認証を作成する必要があります。
*.myorg.example.com
などのワイルドカード証明書用の DNS 認証を作成する場合は、親ドメイン(myorg.example.com
など)の DNS 認証を構成します。
複数のプロジェクトで証明書を個別に管理するには、PER_PROJECT_RECORD
DNS 認証を使用します。Certificate Manager は、 Google Cloud内でプロジェクトごとに証明書の発行と管理を個別に処理できます。プロジェクト内で使用する DNS 認証と証明書は自己完結型であり、他のプロジェクトのものとはやり取りしません。
コンソール
DNS 認証を作成することも、証明書の作成時に既存の DNS 認証を添付することもできます。詳細については、DNS 認証を参照する Google マネージド証明書を作成するをご覧ください。
gcloud
DNS 認証を作成するには、certificate-manager
dns-authorizations create
コマンドを使用します。
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ [--type=TYPE] \ [–-location="LOCATION"]
以下を置き換えます。
AUTHORIZATION_NAME
: DNS 認証の名前。DOMAIN_NAME
: この DNS 認証を作成するターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.com
など)にする必要があります。TYPE
: DNS 認証のタイプ。FIXED_RECORD
またはPER_PROJECT_RECORD
を指定できます。詳細については、DNS 認証をご覧ください。LOCATION
: DNS 認証を作成するターゲット Google Cloud ロケーション。
DNS 認証を作成したら、certificate-manager dns-authorizations describe
コマンドで確認します。
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
出力は次のようになります。出力で dnsResourceRecord
行を見つけ、CNAME
レコード(data
、name
、type
)を取得して DNS 構成に追加します。
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge.myorg.example.com. type: CNAME domain: myorg.example.com name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization updateTime: '2022-01-14T13:35:01.571086137Z'
Terraform
DNS 認証を作成するには、google_certificate_manager_dns_authorization
リソースを使用します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
API
DNS 認証を作成するには、dnsAuthorizations.create
メソッドに POST
リクエストを送信します。
POST /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME" { "domain": "DOMAIN_NAME", "type": "PER_PROJECT_RECORD" //optional }
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: DNS 認証を作成するターゲット Google Cloud ロケーション。グローバル ロケーションにはglobal
を使用します。AUTHORIZATION_NAME
: DNS 認証の名前。DOMAIN_NAME
: この DNS 認証を作成するターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.com
など)にする必要があります。
DNS 構成に CNAME レコードを追加する
サードパーティの DNS ソリューションを使用して DNS を管理している場合は、そのドキュメントを参照して CNAME レコードを DNS 構成に追加します。Google Cloud を使用して DNS を管理している場合は、このセクションの手順に沿って操作します。
コンソール
レコードセットを作成する手順は次のとおりです。
Google Cloud コンソールで、[DNS ゾーン] ページに移動します。
レコードを追加する DNS ゾーンの名前をクリックします。
[ゾーンの詳細] ページで、[標準を追加] をクリックします。
[レコードセットの作成] ページの [DNS 名] フィールドに、DNS ゾーンのサブドメインを入力します。
サブドメイン名を入力する際は、[DNS 名] フィールドに表示されるグレー表示のテキストを含むサブドメイン名が、
gcloud certificate-manager dns-authorizations describe
コマンドの出力に表示されるdnsResourceRecord.name
フィールドの完全な値と一致していることを確認します。次の例をご覧ください。
dnsResourceRecord.name
フィールドの値が_acme-challenge.myorg.example.com.
で、[DNS 名] フィールドのグレー表示のテキストが.example.com.
の場合は、_acme-challenge.myorg
を入力します。dnsResourceRecord.name
フィールドの値が_acme-challenge.myorg.example.com.
で、[DNS 名] フィールドのグレー表示のテキストが.myorg.example.com.
の場合は、_acme-challenge
を入力します。dnsResourceRecord.name
フィールドの値が_acme-challenge_ujmmovf2vn55tgye.myorg.example.com.
で、[DNS 名] フィールドのグレー表示のテキストが.myorg.example.com.
の場合は、_acme-challenge_ujmmovf2vn55tgye
を入力します。
[リソース レコードのタイプ] フィールドで [CNAME] を選択します。
[TTL] フィールドに、リソース レコードの有効期間を数値で入力します。これはキャッシュに保存できる時間です。
[TTL ユニット] リストから、時間の単位(例:
30 minutes
)を選択します。[正規名] フィールドに、
gcloud certificate-manager dns-authorizations describe
コマンドの出力に表示されているdnsResourceRecord.data
フィールドの完全な値を入力します。追加情報を入力するには、[項目を追加] をクリックします。
[作成] をクリックします。
gcloud
DNS 認証を作成するとき、gcloud CLI コマンドは対応する CNAME レコードを返します。ターゲット ドメインの DNS ゾーンの DNS 構成に CNAME レコードを追加する手順は次のとおりです。
DNS レコード トランザクションを次のように開始します。
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
DNS_ZONE_NAME
は、ターゲット DNS ゾーンの名前に置き換えます。CNAME レコードをターゲット DNS ゾーンに追加します。
gcloud dns record-sets transaction add CNAME_RECORD \ --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \ --ttl="30" \ --type="CNAME" \ --zone="DNS_ZONE_NAME"
以下を置き換えます。
CNAME_RECORD
: 対応する DNS 認証を作成した Google Cloud CLI コマンドによって返される CNAME レコードの完全なデータ値。VALIDATION_SUBDOMAIN_NAME
: DNS ゾーンの接頭辞サブドメイン(_acme-challenge
など)。DNS 認証を作成するの説明に従って、gcloud certificate-manager dns-authorizations describe
コマンドログから名前をコピーできます。DOMAIN_NAME
: ターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.com
など)にする必要があります。また、ターゲット ドメイン名の後にピリオドを含める必要があります。DNS_ZONE_NAME
: ターゲット DNS ゾーンの名前。
次の例をご覧ください。
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge.myorg.example.com." \ --ttl="30" \ --type="CNAME" \ --zone="myorg-example-com"
DNS レコード トランザクションを実行して変更を保存します。
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
DNS_ZONE_NAME
は、ターゲット DNS ゾーンの名前に置き換えます。
Terraform
DNS 構成に CNAME レコードを追加するには、google_dns_record_set
リソースを使用します。
DNS 認証を更新する
DNS 認証を更新すると、次のことができます。
- 新しいラベルを指定する
- 新しい説明を指定する
gcloud
DNS 認証を更新するには、certificate-manager dns-authorizations
update
コマンドを使用します。
gcloud certificate-manager dns-authorizations update AUTHORIZATION_NAME \ [--update-labels="LABELS"] \ [--description="DESCRIPTION"] \ [--location="LOCATION"]
以下を置き換えます。
AUTHORIZATION_NAME
: DNS 認証の名前。LABELS
: この DNS 認証のラベル。このフラグは省略可能です。DESCRIPTION
: この DNS 認証の説明。このフラグは省略可能です。LOCATION
: ターゲット Google Cloud ロケーション。デフォルトの場所はglobal
です。
API
次のように、dnsAuthorizations.patch
メソッドに PATCH
リクエストを送信して、DNS 認証を更新します。
PATCH /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations/AUTHORIZATION_NAME?updateMask=labels,description" { description: "DESCRIPTION", labels: { "LABEL_KEY": "LABEL_VALUE" } }
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: ターゲット Google Cloud ロケーション。デフォルトの場所はglobal
です。AUTHORIZATION_NAME
: DNS 認証の名前。DESCRIPTION
: この DNS 認証の説明を指定するオプション フィールド。LABEL_KEY
は、この DNS 認証に適用されるラベルキーです。LABEL_VALUE
は、この DNS 認証に適用されるラベル値です。
DNS 認証を一覧表示する
プロジェクトのすべての DNS 認証とその詳細を確認できます。
gcloud
DNS 認証を一覧表示するには、certificate-manager dns-authorizations
list
コマンドを使用します。
gcloud certificate-manager dns-authorizations list \ --filter="FILTER" \ --page-size="PAGE_SIZE" \ --limit="LIMIT" \ --sort-by="SORT_BY" \ [--location="LOCATION"]
以下を置き換えます。
FILTER
: 返される結果を特定の値に制限する式。たとえば、次の条件で結果をフィルタできます。
- ドメイン:
--filter='domain=myorg.example.com'
- ラベルと作成時刻:
--filter='labels.key:value AND create_time > "2021-09-01T00:00:00Z"'
Certificate Manager で使用できるその他のフィルタリングの例については、Cloud Key Management Service のドキュメントのリストの結果の並べ替えとフィルタリングをご覧ください。
- ドメイン:
PAGE_SIZE
: ページごとに返す結果の数LIMIT
: 返される結果の最大件数です。SORT_BY
: 返される結果の並べ替えの基準とするname
フィールドのカンマ区切りリスト。 デフォルトの並べ替え順は昇順です。降順で並べ替えるには、フィールドの先頭にチルダ(~
)を付けます。LOCATION
: ターゲット Google Cloud ロケーション。デフォルトの場所はglobal
です。
API
次のように、dnsAuthorizations.list
メソッドに GET
リクエストを送信して、構成済みのすべての DNS 認証を一覧表示します。
GET /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?filter=FILTER&pageSize=PAGE_SIZE&sortBy=SORT_BY
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: ターゲット Google Cloud ロケーション。デフォルトの場所はglobal
です。FILTER
: 返される結果を特定の値に制限する式。たとえば、次の条件で結果をフィルタできます。
- ドメイン:
--filter='domain=myorg.example.com'
- ラベルと作成時刻:
--filter='labels.key:value AND create_time > "2021-09-01T00:00:00Z"'
- ドメイン:
PAGE_SIZE
: ページごとに返す結果の数SORT_BY
: 返される結果の並べ替えの基準とするname
フィールドのカンマ区切りリスト。 デフォルトの並べ替え順は昇順です。降順で並べ替えるには、フィールドの先頭にチルダ(~
)を付けます。
DNS 認証を削除する
Google マネージド証明書に割り当てられた DNS 認証を削除するには、DNS 認証を削除する前に証明書を削除します。
gcloud
DNS 認証を削除するには、certificate-manager dns-authorizations
delete
コマンドを使用します。
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME \ [--location="LOCATION"]
以下を置き換えます。
AUTHORIZATION_NAME
: DNS 認証の名前。LOCATION
: ターゲット Google Cloud ロケーション。デフォルトの場所はglobal
です。
API
DNS 認証を削除するには、次のように dnsAuthorizations.delete
メソッドに DELETE
リクエストを送信します。
DELETE /v1/projects/PROJECT_ID/locations/LOCATION>/dnsAuthorizations/AUTHORIZATION_NAME
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの ID。LOCATION
: ターゲット Google Cloud ロケーション。デフォルトの場所はglobal
です。AUTHORIZATION_NAME
: DNS 認証の名前。