DNS 認証を管理する

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 レコード(datanametype)を取得して 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 リソースを使用します。

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

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 を管理している場合は、このセクションの手順に沿って操作します。

コンソール

レコードセットを作成する手順は次のとおりです。

  1. Google Cloud コンソールで、[DNS ゾーン] ページに移動します。

    Cloud DNS の [ゾーン] に移動

  2. レコードを追加する DNS ゾーンの名前をクリックします。

  3. [ゾーンの詳細] ページで、[標準を追加] をクリックします。

  4. [レコードセットの作成] ページの [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 を入力します。

  5. [リソース レコードのタイプ] フィールドで [CNAME] を選択します。

  6. [TTL] フィールドに、リソース レコードの有効期間を数値で入力します。これはキャッシュに保存できる時間です。

  7. [TTL ユニット] リストから、時間の単位(例: 30 minutes)を選択します。

  8. [正規名] フィールドに、gcloud certificate-manager dns-authorizations describe コマンドの出力に表示されている dnsResourceRecord.data フィールドの完全な値を入力します。

  9. 追加情報を入力するには、[項目を追加] をクリックします。

  10. [作成] をクリックします。

gcloud

DNS 認証を作成するとき、gcloud CLI コマンドは対応する CNAME レコードを返します。ターゲット ドメインの DNS ゾーンの DNS 構成に CNAME レコードを追加する手順は次のとおりです。

  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="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"
    
  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 認証を更新すると、次のことができます。

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

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 認証の名前。

次のステップ