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'
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 專案的 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 區域的名稱。
請參閱以下範例:
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 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 授權的名稱。