DNS 認証を管理する

このセクションでは、Google マネージド証明書で使用する DNS 認証を作成および管理する方法について説明します。

DNS 認証の詳細については、Certificate Manager の仕組みをご覧ください。

Certificate Manager を使用して証明書をデプロイする方法については、デプロイの概要をご覧ください。

このページで使用されている gcloud CLI コマンドの詳細については、Certificate Manager API をご覧ください。

DNS 認証 の作成

DNS 認証を作成するには、このセクションの手順を行います。各 DNS 認証には 1 つのドメイン名しか含まれていないため、ターゲット証明書で使用するドメイン名ごとに DNS 認証を作成する必要があります。

複数のプロジェクト間で証明書を個別に管理するには、プロジェクトごとの DNS 認証(プレビュー)を使用します。Certificate Manager は、Google Cloud 内でプロジェクトごとに証明書の発行と管理を個別に処理できます。プロジェクト内で使用する DNS 認証と証明書は自己完結型であり、他のプロジェクトのものとは相互作用しません。

このタスクを完了するには、ターゲットの Google Cloud プロジェクトに対する次のいずれかのロールが必要です。

  • Certificate Manager 編集者
  • Certificate Manager オーナー

詳細については、ロールと権限をご覧ください。

gcloud

 gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
     --domain="DOMAIN_NAME" \
 gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME

プロジェクトごとの DNS 認証(プレビュー)を使用するには、次のコマンドを実行します。

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --type="PER_PROJECT_RECORD" \
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME

次のように置き換えます。

  • AUTHORIZATION_NAME は、この DNS 認証を表す一意の名前です。
  • DOMAIN_NAME: この DNS 承認を作成するドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.com など)にする必要があります。

このコマンドは、DNS 構成に追加する必要がある CNAME レコードを返します。次に例を示します。

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 リソースを使用します。

resource "google_certificate_manager_dns_authorization" "default" {
  name        = "${local.name}-dnsauth-${random_id.tf_prefix.hex}"
  description = "The default dns auth"
  domain      = local.domain
  labels = {
    "terraform" : true
  }
}

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

API

次のように、dnsAuthorizations.create メソッドに POST リクエストを送信して DNS 認証を作成します。

POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME"
{
  "domain": "DOMAIN_NAME",
}

次のように置き換えます。

  • PROJECT_ID: ターゲットの Google Cloud プロジェクトの ID。
  • AUTHORIZATION_NAME は、この DNS 認証を表す一意の名前です。
  • DOMAIN_NAME: この DNS 承認を作成するドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.com など)にする必要があります。

DNS 構成に CNAME レコードを追加する

DNS 認証を作成すると、Google Cloud は検証サブドメインに対応する CNAME レコードを返します。この CNAME レコードを、移行先ドメインの DNS ゾーンの DNS 構成に追加する必要があります。Google Cloud を使用して DNS を管理している場合は、このセクションの手順に従ってください。それ以外の場合は、サードパーティ DNS ソリューションのドキュメントをご確認ください。

Certificate Manager がこの CNAME レコードを使用してドメインの所有権を確認する方法の詳細については、Google マネージド証明書に対するドメインの承認をご覧ください。

gcloud

  1. DNS レコード トランザクションを開始します。

    gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
    

    次のように置き換えます。

    • DNS_ZONE_NAME: ターゲット DNS ゾーンの名前。
  2. CNAME レコードをターゲット DNS ゾーンに追加します。

    gcloud dns record-sets transaction add CNAME_RECORD \
       --name="_acme-challenge.DOMAIN_NAME." \
       --ttl="30" \
       --type="CNAME" \
       --zone="DNS_ZONE_NAME"
    

    次のように置き換えます。

    • CNAME_RECORD は、対応する DNS 認証を作成した gcloud コマンドから返される CNAME レコードの完全な値です。
    • DOMAIN_NAME: ターゲット ドメインの名前。ドメイン名は完全修飾ドメイン名(myorg.example.com など)にする必要があります。 また、ターゲット ドメイン名の後にピリオドを含める必要があります。
    • DNS_ZONE_NAME: ターゲット DNS ゾーンの名前。
  3. DNS レコードのトランザクションを実行して変更を保存します。

    gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
    

    次のように置き換えます。

    • DNS_ZONE_NAME: ターゲット DNS ゾーンの名前。

Terraform

DNS 構成に CNAME レコードを追加するには、google_dns_record_set リソースを使用します。

resource "google_dns_record_set" "cname" {
  name         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].name
  managed_zone = google_dns_managed_zone.default.name
  type         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].type
  ttl          = 300
  rrdatas      = [google_certificate_manager_dns_authorization.default.dns_resource_record[0].data]
}

DNS レコードの詳細については、レコードの管理をご覧ください。

DNS 認証を更新する

DNS 認証を更新するには、このセクションの手順を行います。DNS 認証は、次の方法で更新できます。

  • 新しいラベルを指定する
  • 新しい説明を指定する

このタスクを完了するには、ターゲットの Google Cloud プロジェクトに対する次のいずれかのロールが必要です。

  • Certificate Manager 編集者
  • Certificate Manager オーナー

詳細については、ロールと権限をご覧ください。

gcloud

 gcloud certificate-manager dns-authorizations update AUTHORIZATION_NAME \
     --update-labels="LABELS" \
     --description="DESCRIPTION"

次のように置き換えます。

  • AUTHORIZATION_NAME: ターゲット DNS 認証の名前。
  • LABELS: この DNS 認証のラベルを指定するオプションのフラグ。
  • DESCRIPTION: この DNS 認証の説明を指定するオプションのフラグ。

API

次のように、dnsAuthorizations.patch メソッドに PATCH リクエストを送信して DNS 認証を更新します。

PATCH /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME?updateMask=labels,description"
{
    description: "DESCRIPTION",
    labels: { "LABEL_KEY": "LABEL_VALUE" }
}

次のように置き換えます。

  • PROJECT_ID: ターゲットの Google Cloud プロジェクトの ID。
  • AUTHORIZATION_NAME: ターゲット DNS 認証の名前。
  • DESCRIPTION: この DNS 認証の説明を指定するオプションのフィールド。
  • LABEL_KEY は、この DNS 認証に適用されるラベルキーです。
  • LABEL_VALUE は、この DNS 認証に適用されるラベル値です。

DNS 認証を一覧表示する

構成済みの DNS 認証を一覧表示するには、このセクションの手順を行います。

このタスクを完了するには、ターゲットの Google Cloud プロジェクトに対する次のいずれかのロールが必要です。

  • Certificate Manager 閲覧者
  • Certificate Manager 編集者
  • Certificate Manager オーナー

詳細については、ロールと権限をご覧ください。

gcloud

gcloud certificate-manager dns-authorizations list \
    --filter="FILTER" \
    --page-size="PAGE_SIZE" \
    --limit="LIMIT" \
    --sort-by="SORT_BY"

次のように置き換えます。

  • 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 フィールドのカンマ区切りリスト。デフォルトの並べ替え順は昇順です。 降順の場合、フィールドの先頭にチルダ(~)を付けます。

API

次のように、dnsAuthorizations.list メソッドに GET リクエストを送信して、構成されたすべての DNS 認証を一覧表示します。

GET /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?filter=FILTER&pageSize=PAGE_SIZE&sortBy=SORT_BY

次のように置き換えます。

  • PROJECT_ID: ターゲットの Google Cloud プロジェクトの ID。
  • FILTER: 返される結果を特定の値に制限する式。
  • PAGE_SIZE: ページごとに返す結果の数
  • SORT_BY: 返される結果の並べ替えの基準とするフィールド名のカンマ区切りリストデフォルトの並べ替え順は昇順です。 降順の場合、フィールドの先頭にチルダ(~)を付けます。

DNS 認証を削除する

DNS 認証を削除するには、このセクションの手順を行います。1 つ以上の Google マネージド証明書に割り当てられている DNS 認証を削除するには、DNS 認証を削除する前にそれらの証明書を削除する必要があります。

このタスクを完了するには、ターゲットの Google Cloud プロジェクトに対する Certificate Manager オーナーのロールが必要です。詳細については、ロールと権限をご覧ください。

gcloud

gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME

次のように置き換えます。

  • AUTHORIZATION_NAME: ターゲット DNS 認証の名前。

API

DNS 認証を削除するには、次のように dnsAuthorizations.delete メソッドに DELETE リクエストを送信します。

DELETE /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME

次のように置き換えます。

  • PROJECT_ID: ターゲットの Google Cloud プロジェクトの ID。
  • AUTHORIZATION_NAME: ターゲット DNS 認証の名前。

次のステップ