このセクションでは、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
グローバル Google マネージド証明書のデフォルトの DNS 認証タイプは FIXED_RECORD
です。プロジェクトごとの 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
リソースを使用します。
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
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="_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 ゾーンの名前。
次のように DNS レコード トランザクションを実行して変更を保存します。
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
以下のように置き換えます。
DNS_ZONE_NAME
: ターゲット DNS ゾーンの名前。
Terraform
DNS 構成に CNAME レコードを追加するには、google_dns_record_set
リソースを使用します。
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 認証の名前。