DNS 授權可讓您證明Google 管理的憑證網域擁有權。建立 Google 代管的憑證時,可以指定一或多個 DNS 授權,用於佈建和續約。
本頁說明如何建立及管理 DNS 授權,以搭配 Google 代管的憑證使用。
詳情請參閱「網域授權」。
建立 DNS 授權
DNS 授權僅涵蓋單一網域名稱。您必須為要搭配目標憑證使用的每個網域名稱,分別建立 DNS 授權。
如要為萬用字元憑證 (例如 *.myorg.example.com) 建立 DNS 授權,請為父項網域設定 DNS 授權,例如 myorg.example.com。
如要跨多個專案獨立管理憑證,可以使用 PER_PROJECT_RECORD DNS 授權。憑證管理員可獨立處理 Google Cloud中每個專案的憑證核發和管理作業。專案中使用的 DNS 授權和憑證是獨立的,不會與其他專案中的授權和憑證互動。
主控台
建立憑證時,您可以建立 DNS 授權或附加現有的 DNS 授權。詳情請參閱「建立參照 DNS 授權的 Google 代管憑證」。
gcloud
您可以根據需求建立以下任一類型的 DNS 授權:FIXED_RECORD 或 PER_PROJECT_RECORD。詳情請參閱「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'
每個專案的記錄 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 專案的 ID。LOCATION:您建立 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 zones」頁面。
按一下要新增記錄的 DNS 區域名稱。
在「Zone details」(區域詳細資料) 頁面中,按一下「Add standard」(新增標準)。
在「Create record set」(建立記錄集) 頁面的「DNS name」(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 name」(DNS 名稱) 欄位中灰顯的文字為.myorg.example.com.,請輸入_acme-challenge_ujmmovf2vn55tgye。
在「資源記錄類型」欄位中選取「CNAME」。
在「TTL」TTL欄位中,輸入資源記錄存留時間的正數值,也就是記錄可快取的時間。
從「TTL 單位」清單中選取時間單位,例如
30 minutes。在「Canonical name」(標準名稱) 欄位中,輸入
dnsResourceRecord.data欄位的完整值,如gcloud certificate-manager dns-authorizations describe指令的輸出內容所示。如要輸入其他資訊,請按一下「新增項目」。
點選「建立」。
gcloud
建立 DNS 授權時,gcloud CLI 指令會傳回對應的 CNAME 記錄。如要在目標網域的 DNS 區域中,將 CNAME 記錄新增至 DNS 設定,請按照下列步驟操作:
啟動 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:Google Cloud CLI 指令傳回的 CNAME 記錄完整資料值,該指令會建立對應的 DNS 授權。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_RECORDDNS 授權之間的差異,請參閱下列範例。這兩個範例的唯一差異是--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"每個專案的記錄 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
如要更新 DNS 授權,請對 dnsAuthorizations.patch 方法發出 PATCH 要求,如下所示:
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 位置。如要列出所有區域的 DNS 授權,請使用-做為值。預設值為-。這個旗標是選用的。
API
如要列出所有已設定的 DNS 授權,請對 dnsAuthorizations.list 方法發出 GET 要求,如下所示:
GET /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?filter=FILTER&pageSize=PAGE_SIZE&sortBy=SORT_BY
更改下列內容:
PROJECT_ID: Google Cloud 專案的 ID。LOCATION:目標 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 專案的 ID。LOCATION:目標 Google Cloud 位置。預設位置為global。AUTHORIZATION_NAME:DNS 授權的名稱。