透過憑證授權單位服務部署全球 Google 代管憑證

本教學課程說明如何使用 Certificate Manager,透過憑證授權單位服務部署全球適用的 Google 管理憑證。

下列全球負載平衡器支援搭配憑證授權單位服務使用的 Google 代管憑證:

  • 全域外部應用程式負載平衡器
  • 傳統版應用程式負載平衡器
  • 全域外部 Proxy 網路負載平衡器

如要部署至跨區域負載平衡器或區域負載平衡器,請參閱下列內容:

設定 CA 服務與 Certificate Manager 的整合

如要將 CA 服務與 Certificate Manager 整合,請按照下列步驟操作:

  1. 在目標 Google Cloud 專案中,建立 Certificate Manager 服務帳戶:

    gcloud beta services identity create --service=certificatemanager.googleapis.com \
        --project=PROJECT_ID
    

    PROJECT_ID 替換為目標專案的 ID。Google Cloud

    指令會傳回所建立服務身分的名稱。請參閱以下範例:

    service-520498234@gcp-sa-certificatemanager.iam.gserviceaccount.com
    
  2. 在目標 CA 集區中,將 CA 服務憑證要求者角色 (roles/privateca.certificateRequester) 授予 Certificate Manager 服務帳戶:

    gcloud privateca pools add-iam-policy-binding CA_POOL \
        --location LOCATION \
        --member "serviceAccount:SERVICE_ACCOUNT" \
        --role roles/privateca.certificateRequester
    

    更改下列內容:

    • CA_POOL:目標 CA 集區的 ID。
    • LOCATION:目標 Google Cloud 位置。
    • SERVICE_ACCOUNT:您在步驟 1 中建立的服務帳戶完整名稱。
  3. 為 CA 集區建立憑證核發設定資源:

    主控台

    1. 前往 Google Cloud 控制台的「Certificate Manager」頁面,然後點選「Issuance configs」分頁標籤。

      前往 Certificate Manager

    2. 點按「Create」(建立)。系統隨即會顯示「建立憑證核發設定」頁面。

    3. 在「Name」(名稱) 欄位中,輸入憑證核發設定的專屬名稱。

    4. 選用:在「說明」欄位中,輸入核發設定的說明。

    5. 在「Location」(位置) 部分,選取「Global」

    6. 選用:在「生命週期」欄位中,以天為單位指定核發憑證的生命週期。值必須介於 21 至 30 天之間 (含首尾值)。

    7. 選用:在「Rotation window percentage」(輪替視窗百分比) 中,指定憑證效期百分比,達到這個百分比時就會開始更新程序。如要瞭解有效值的範圍,請參閱「生命週期和輪替窗口百分比」。

    8. 選用:從「金鑰演算法」清單中,選取產生私密金鑰時要使用的金鑰演算法。

    9. 從「CA pool」(CA 集區) 清單中,選取要指派給這個憑證核發設定資源的 CA 集區名稱。

    10. 在「標籤」欄位中,指定要與憑證建立關聯的標籤。如要新增標籤,請按一下「新增標籤」,然後指定標籤的鍵和值。

    11. 點選「建立」

    gcloud

    gcloud certificate-manager issuance-configs create ISSUANCE_CONFIG_NAME \
        --ca-pool=CA_POOL
    

    更改下列內容:

    • ISSUANCE_CONFIG_NAME:憑證核發設定資源的名稱。
    • CA_POOL:您要指派給這個憑證核發設定資源的 CA 集區完整資源路徑和名稱。

    如要進一步瞭解憑證核發設定資源,請參閱「管理憑證核發設定資源」。

建立由 CA 服務執行個體核發的 Google 代管憑證

如要建立由 CA 服務執行個體核發的 Google 代管憑證,請按照下列步驟操作:

主控台

  1. 前往 Google Cloud 控制台的「Certificate Manager」頁面。

    前往 Certificate Manager

  2. 在「憑證」分頁中,按一下「新增憑證」

  3. 在「憑證名稱」欄位中,輸入憑證的專屬名稱。

  4. 選用:在「說明」欄位中輸入憑證說明。說明可協助您識別憑證。

  5. 在「Location」(位置) 部分,選取「Global」

  6. 在「範圍」部分,選取「預設」

  7. 在「Certificate type」(憑證類型) 部分,選取「Create Google-managed certificate」(建立 Google 代管的憑證)

  8. 在「Certificate Authority type」(憑證授權單位類型) 部分,選取「Private」(私人)

  9. 在「網域名稱」欄位中,指定以半形逗號分隔的憑證網域名稱清單。每個網域名稱都必須是完整網域名稱,例如 myorg.example.com

  10. 在「選取憑證核發設定」中,選取參照目標 CA 集區的憑證核發設定資源名稱。

  11. 在「標籤」欄位中,指定要與憑證建立關聯的標籤。如要新增標籤,請按一下「新增標籤」,然後指定標籤的鍵和值。

  12. 點選「建立」

    新憑證會顯示在憑證清單中。

gcloud

如要使用憑證授權單位服務建立 Google 代管的全球憑證,請使用 certificate-manager certificates create 指令搭配 issuance-config 旗標:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAMES" \
    --issuance-config=ISSUANCE_CONFIG_NAME

更改下列內容:

  • CERTIFICATE_NAME:憑證名稱。
  • DOMAIN_NAME:目標網域的名稱。網域名稱必須是完整網域名稱,例如 myorg.example.com
  • ISSUANCE_CONFIG_NAME:參照目標 CA 集區的憑證核發設定資源名稱。

API

certificates.create 方法發出 POST 要求,建立憑證,如下所示:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME"
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "issuanceConfig": "ISSUANCE_CONFIG_NAME",
 }
}

更改下列內容:

  • PROJECT_ID: Google Cloud 專案的 ID。
  • CERTIFICATE_NAME:憑證名稱。
  • DOMAIN_NAME:目標網域的名稱。網域名稱必須是完整網域名稱,例如 myorg.example.com
  • ISSUANCE_CONFIG_NAME:參照目標 CA 集區的憑證核發設定資源名稱。

驗證憑證狀態

將憑證部署至負載平衡器之前,請先確認憑證是否有效。憑證狀態可能需要幾分鐘的時間才會變更為 ACTIVE

主控台

  1. 前往 Google Cloud 控制台的「Certificate Manager」頁面。

    前往 Certificate Manager

  2. 在「認證」分頁中,查看「狀態」欄中的認證。

gcloud

如要驗證憑證狀態,請執行下列指令:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

CERTIFICATE_NAME 替換為目標 Google 管理的憑證名稱。

輸出結果會與下列內容相似:

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  domains:
  - myorg.example.com
  issuanceConfig: projects/myproject/locations/global/issuanceConfigs/myissuanceConfig
  state: ACTIVE
name: projects/myproject/locations/global/certificates/mycertificate
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  - myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

如需更多疑難排解步驟,請參閱「排解憑證管理工具問題」。

將憑證部署至負載平衡器

如要部署全球 Google 代管憑證,請使用憑證對應。

建立憑證對應關係

建立憑證對應,參照與憑證相關聯的憑證對應項目:

gcloud

如要建立憑證對應,請使用 gcloud certificate-manager maps create 指令

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

CERTIFICATE_MAP_NAME 替換為目標憑證對應的名稱。

Terraform

如要建立憑證對應關係,可以使用 google_certificate_manager_certificate_map 資源

resource "google_certificate_manager_certificate_map" "certificate_map" {
  name        = "${local.name}-certmap-${random_id.tf_prefix.hex}"
  description = "${local.domain} certificate map"
  labels = {
    "terraform" : true
  }
}

建立憑證對應關係項目

建立憑證對應關係項目,並將其與憑證和憑證對應關係建立關聯:

gcloud

如要建立憑證對應項目,請使用 gcloud certificate-manager maps entries create 指令

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAME" \
    --hostname="HOSTNAME"

更改下列內容:

  • CERTIFICATE_MAP_ENTRY_NAME:憑證對應項目的名稱。
  • CERTIFICATE_MAP_NAME:憑證對應項目所附加的憑證對應名稱。
  • CERTIFICATE_NAME:要與憑證對應項目建立關聯的憑證名稱。
  • HOSTNAME:您要與憑證對應項目建立關聯的主機名稱。

    如要建立涵蓋萬用字元網域和根網域的憑證,請指定含有根網域和萬用字元的主機名稱,例如 example.com*.example.com。此外,您必須指定兩個憑證對應項目,一個用於 example.com,另一個用於 *.example.com

Terraform

如要使用根網域建立憑證對應項目,請使用 google_certificate_manager_certificate_map_entry 資源

resource "google_certificate_manager_certificate_map_entry" "first_entry" {
  name        = "${local.name}-first-entry-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = local.domain
}

如要使用萬用字元網域建立憑證對應項目,請使用 google_certificate_manager_certificate_map_entry 資源

resource "google_certificate_manager_certificate_map_entry" "second_entry" {
  name        = "${local.name}-second-entity-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = "*.${local.domain}"
}

確認憑證對應項目已啟用

請先確認憑證對應項目是否有效,再將對應的憑證對應項目附加至目標 Proxy。

如要驗證憑證對應項目,請使用 gcloud certificate-manager maps entries describe 指令

gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME"

更改下列內容:

  • CERTIFICATE_MAP_ENTRY_NAME:憑證對應項目的名稱。
  • CERTIFICATE_NAME:要與憑證對應項目建立關聯的憑證名稱。

輸出結果會與下列內容相似:

certificates:
createTime: '2021-09-06T10:01:56.229472109Z'
hostname: example.com
name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry
state: ACTIVE
updateTime: '2021-09-06T10:01:58.277031787Z'

將憑證對應附加至目標 Proxy

您可以將憑證對應項附加至新的或現有的目標 Proxy。

gcloud

如要將憑證對應附加至新的目標 Proxy,請使用 gcloud compute target-https-proxies create 指令

gcloud compute target-https-proxies create PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --url-map="URL_MAP" \
    --global

更改下列內容:

  • PROXY_NAME:目標 Proxy 的名稱。
  • CERTIFICATE_MAP_NAME:參照憑證對應關係項目和相關聯憑證的憑證對應關係名稱。
  • URL_MAP:網址對應表名稱

如要將憑證對應附加至現有的目標 HTTPS Proxy,請使用 gcloud compute target-https-proxies update 指令。如果不知道現有目標 Proxy 的名稱,請前往「目標 Proxy頁面,並記下目標 Proxy 的名稱。

gcloud compute target-https-proxies update PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --global

建立或更新目標 Proxy 後,請執行下列指令進行驗證:

gcloud compute target-https-proxies list

Terraform

如要將憑證對應附加至目標 Proxy,可以使用 google_compute_target_https_proxy 資源

設定目標 Proxy 時,如果您直接附加 TLS (SSL) 憑證,也透過憑證對應附加憑證,Proxy 會使用憑證對應參照的憑證,並忽略直接附加的 TLS (SSL) 憑證。

排解 CA 服務核發的憑證相關問題

如需疑難排解步驟,請參閱「與 CA 服務執行個體核發的憑證相關的問題」。

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取這個教學課程所用資源的費用,請將資源全數刪除。

  1. 刪除負載平衡器及其資源。

    請參閱「清除負載平衡設定」。

  2. 從 Proxy 刪除或分離憑證對應關係。

    如要刪除憑證對應,請執行下列指令:

    gcloud compute target-https-proxies delete PROXY_NAME
    

    如要保留目標 HTTPS Proxy,請從 Proxy 分離憑證對應。

    • 如果 Proxy 直接附加任何 TLS (SSL) 憑證,卸離憑證對應後,Proxy 會繼續使用這些直接附加的 TLS (SSL) 憑證。
    • 如果沒有直接附加至 Proxy 的 TLS (SSL) 憑證,就無法從 Proxy 分離憑證對應。您必須先將至少一個 TLS (SSL) 憑證直接附加至 Proxy,才能卸離憑證對應。

    如要卸離憑證對應,請執行下列指令:

    gcloud compute target-https-proxies update PROXY_NAME \
        --clear-certificate-map
    

    PROXY_NAME 替換為目標 Proxy 的名稱。

  3. 從憑證對應關係中刪除憑證對應關係項目:

    gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \
        --map="CERTIFICATE_MAP_NAME"
    

    更改下列內容:

    • CERTIFICATE_MAP_ENTRY_NAME:憑證對應項目的名稱。
    • CERTIFICATE_MAP_NAME:憑證對應關係的名稱。
  4. 刪除憑證對應:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    CERTIFICATE_MAP_NAME 替換為憑證對應的名稱。

  5. 刪除 Google 代管的憑證:

    主控台

    1. 前往 Google Cloud 控制台的「Certificate Manager」頁面。

      前往 Certificate Manager

    2. 在「憑證」分頁中,勾選憑證的核取方塊。

    3. 點選「刪除」。

    4. 在出現的對話方塊中,按一下 [Delete] (刪除) 以進行確認。

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    CERTIFICATE_NAME 替換為目標憑證的名稱。

  6. 刪除憑證核發設定資源:

    主控台

    1. 前往 Google Cloud 控制台的「Certificate Manager」頁面,然後點選「Issuance configs」分頁標籤。

      前往 Certificate Manager

    2. 選取要刪除的核發設定資源核取方塊。

    3. 點選「刪除」。

    4. 在出現的對話方塊中,按一下 [Delete] (刪除) 以進行確認。

    gcloud

     gcloud certificate-manager issuance-configs delete ISSUANCE_CONFIG_NAME
     

    ISSUANCE_CONFIG_NAME 替換為目標憑證核發設定資源的名稱。

  7. 刪除 CA 集區。

    如要刪除 CA 集區,或停用憑證核發設定資源參照的 CA 集區中最後一個已啟用的 CA,請刪除參照該 CA 集區的所有憑證核發設定資源。詳情請參閱「刪除 CA 集區」。