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
要件に応じて、FIXED_RECORD または PER_PROJECT_RECORD のいずれかのタイプの DNS 認証を作成できます。詳細については、DNS 認可をご覧ください。
FIXED_RECORD DNS 認証
FIXED_RECORD DNS 認証を作成するには、次の gcloud certificate-manager
dns-authorizations create コマンドを使用します。
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
--domain="DOMAIN_NAME" \
--type=[FIXED_RECORD] \
[--location="LOCATION"]
次のように置き換えます。
AUTHORIZATION_NAME: DNS 認証の名前。DOMAIN_NAME: この DNS 認証を作成するターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.comなど)にする必要があります。LOCATION: DNS 認証を作成するターゲット Google Cloud ロケーション。
FIXED_RECORD DNS 認証を作成したら、gcloud 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'
PER_PROJECT_RECORD DNS 認証
PER_PROJECT_RECORD DNS 認証を作成するには、次の gcloud certificate-manager dns-authorizations create コマンドを使用します。
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
--domain="DOMAIN_NAME" \
--type=PER_PROJECT_RECORD \
[--location="LOCATION"]
次のように置き換えます。
AUTHORIZATION_NAME: DNS 認証の名前。DOMAIN_NAME: この DNS 認証を作成するターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.comなど)にする必要があります。LOCATION: DNS 認証を作成するターゲット Google Cloud ロケーション。
PER_PROJECT_RECORD DNS 認証を作成したら、gcloud 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_ujmmovf2vn55tgye.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 プロジェクトの IDLOCATION: DNS 認証を作成するターゲット Google Cloud ロケーション。グローバル ロケーションの場合は、globalを使用します。AUTHORIZATION_NAME: DNS 認証の名前。DOMAIN_NAME: この DNS 認証を作成するターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.comなど)にする必要があります。
DNS 構成に CNAME レコードを追加する
サードパーティの DNS ソリューションを使用して DNS を管理している場合は、そのドキュメントを参照して、DNS 構成に CNAME レコードを追加してください。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 ゾーンの名前。
FIXED_RECORDとPER_PROJECT_RECORDの DNS 認証の違いについては、次の例をご覧ください。2 つの例の違いは、--nameフラグの値だけです。FIXED_RECORD 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"PER_PROJECT_RECORD DNS 認証
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge_ujmmovf2vn55tgye.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
CNAME レコードを DNS 構成に追加するには、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 プロジェクトの IDLOCATION: ターゲット 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 ロケーション。すべてのリージョンの DNS 認証を一覧表示するには、値として-を使用します。デフォルト値は-です。このフラグは省略可能です。
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 プロジェクトの IDLOCATION: ターゲット Google Cloud ロケーション。すべてのロケーションのすべての DNS 認証を表示するには、単一のハイフン(-)を指定します。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 プロジェクトの IDLOCATION: ターゲット Google Cloud ロケーション。デフォルトの場所はglobalです。AUTHORIZATION_NAME: DNS 認証の名前。