Men-deploy sertifikat global yang dikelola Google dengan otorisasi load balancer


Tutorial ini akan memandu Anda melalui proses deployment sertifikat menggunakan sertifikat yang dikelola Google dengan otorisasi load balancer sebagai contohnya.

Untuk membandingkan jenis otorisasi domain yang didukung, lihat Otorisasi domain.

Load balancer berikut mendukung sertifikat yang dikelola Google dengan otorisasi load balancer:

  • Load Balancer Aplikasi eksternal global
  • Load Balancer Aplikasi Klasik
  • Load Balancer Jaringan proxy eksternal global

Jika Anda ingin memigrasikan sertifikat yang ada ke Certificate Manager, ikuti langkah-langkah dalam Memigrasikan sertifikat ke Pengelola Sertifikat.

Tujuan

Tutorial ini menunjukkan kepada Anda cara menyelesaikan tugas-tugas berikut:

  • Buat sertifikat yang dikelola Google yang diterbitkan oleh CA yang dipercaya secara publik dengan otorisasi load balancer menggunakan Pengelola Sertifikat.
  • Deploy sertifikat ke load balancer yang didukung menggunakan proxy HTTPS target.

Untuk informasi selengkapnya tentang proses deployment sertifikat, lihat Ringkasan deployment.

Jika Anda mengikuti langkah-langkah dalam tutorial ini untuk men-deploy sertifikat untuk domain yang sudah menyalurkan traffic produksi, perlu diingat bahwa traffic untuk domain tersebut akan terganggu selama sertifikat disediakan dan diaktifkan pada load balancer yang terkait.

Sebelum memulai

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Pastikan Anda memiliki peran berikut untuk menyelesaikan tugas dalam tutorial ini:

    • Certificate Manager Owner: Diperlukan untuk membuat dan mengelola resource Certificate Manager.
    • Admin Load Balancer Compute atau Admin Jaringan Compute: Diperlukan untuk membuat dan mengelola proxy target HTTPS.
    • Administrator DNS: Diperlukan jika Anda ingin menggunakan Cloud DNS sebagai solusi DNS.

    Untuk informasi selengkapnya, lihat referensi berikut:

Membuat sertifikat yang dikelola Google dengan otorisasi load balancer

Untuk membuat sertifikat yang dikelola Google dengan otorisasi load balancer, selesaikan langkah-langkah di bagian ini.

Agar dapat menentukan beberapa nama domain untuk sertifikat, berikan daftar nama domain target yang dipisahkan koma untuk sertifikat tersebut.

Untuk mengetahui informasi selengkapnya, lihat Izin dan peran.

gcloud

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

Ganti kode berikut:

  • CERTIFICATE_NAME: nama unik sertifikat.
  • DOMAIN_NAMES: daftar domain target yang dibatasi koma untuk sertifikat ini. Setiap nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, seperti myorg.example.com.

Terraform

Gunakan resource google_certificate_manager_certificate.

resource "google_certificate_manager_certificate" "default" {
  name        = "${local.name}-rootcert-${random_id.tf_prefix.hex}"
  description = "Cert with LB authorization"
  managed {
    domains = [local.domain]
  }
  labels = {
    "terraform" : true
  }
}

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

API

Buat sertifikat dengan membuat permintaan POST ke metode certificates.create sebagai berikut:

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

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud target.
  • CERTIFICATE_NAME: nama unik yang mendeskripsikan sertifikat ini.
  • DOMAIN_NAME: domain target untuk sertifikat ini. Nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, seperti myorg.example.com.

Untuk ringkasan proses deployment sertifikat, lihat Ringkasan deployment.

Men-deploy sertifikat ke load balancer

Selesaikan langkah-langkah di bagian ini untuk men-deploy sertifikat yang dikelola Google yang Anda buat pada langkah sebelumnya ke load balancer.

Membuat peta sertifikat

Buat peta sertifikat yang merujuk ke entri peta sertifikat yang terkait dengan sertifikat Anda.

gcloud

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Ganti CERTIFICATE_MAP_NAME dengan nama peta sertifikat target.

Terraform

Gunakan resource google_certificate_manager_certificate_map.

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

Membuat entri peta sertifikat

Buat entri peta sertifikat dan kaitkan dengan sertifikat Anda serta peta sertifikat Anda.

gcloud

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

Ganti kode berikut:

  • CERTIFICATE_MAP_ENTRY_NAME: nama unik entri peta sertifikat
  • CERTIFICATE_MAP_NAME: nama peta sertifikat tempat entri peta sertifikat ini dilampirkan
  • CERTIFICATE_NAME: nama sertifikat yang ingin Anda kaitkan dengan entri peta sertifikat ini
  • HOSTNAME: nama host yang ingin Anda kaitkan dengan entri peta sertifikat ini

Terraform

Gunakan resource google_certificate_manager_certificate_map_entry.

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

Memastikan entri peta sertifikat aktif

Gunakan perintah berikut untuk memverifikasi bahwa entri peta sertifikat aktif sebelum melampirkan peta sertifikat yang sesuai ke proxy target:

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

Ganti kode berikut:

  • CERTIFICATE_MAP_ENTRY_NAME: nama entri peta sertifikat target
  • CERTIFICATE_MAP_NAME: nama peta sertifikat tempat entri peta sertifikat ini dilampirkan

Perintah akan menampilkan output yang mirip dengan berikut ini:

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

Lampirkan peta sertifikat ke proxy target

Lampirkan peta sertifikat yang dikonfigurasi ke proxy target yang diinginkan.

Konsol

  1. Di konsol Google Cloud, buka halaman Target proxy.

Buka Target proxy

  1. Perhatikan nama proxy target.

  2. Lampirkan peta sertifikat ke proxy target:

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

Ganti kode berikut:

*   `PROXY_NAME`: the name of the target proxy
*   `CERTIFICATE_MAP_NAME`: the name of the certificate
    map referencing your certificate map entry and its associated
    certificate

Terraform

Gunakan resource google_compute_target_https_proxy.

resource "google_compute_target_https_proxy" "default" {
  name            = "test-proxy"
  certificate_map = "//certificatemanager.googleapis.com/${google_certificate_manager_certificate_map.default.id}"
  url_map         = google_compute_url_map.default.id
}

Jika sudah ada sertifikat TLS (SSL) yang dilampirkan langsung ke proxy, proxy akan memberikan preferensi ke sertifikat yang dirujuk oleh peta sertifikat dibandingkan sertifikat TLS (SSL) yang dilampirkan secara langsung.

Menunggu hingga sertifikat diaktifkan

Setelah melampirkan sertifikat ke proxy target, diperlukan waktu hingga beberapa jam agar sertifikat diterbitkan dan statusnya berubah menjadi ACTIVE. Setelah statusnya adalah ACTIVE, perlu waktu hingga 30 menit agar load balancer mulai menggunakan sertifikat.

Gunakan perintah berikut untuk memeriksa status sertifikat:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Ganti CERTIFICATE_NAME dengan nama target sertifikat yang dikelola Google.

Perintah akan menampilkan output yang mirip dengan berikut ini:

certificatePem: myPEM
createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  -   domain: myorg.example.com
    state: AUTHORIZED
  domains:
  -   myorg.example.com
    state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
scope: myScope
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Jika status sertifikat tidak berubah menjadi ACTIVE setelah beberapa jam, periksa hal berikut:

Untuk langkah pemecahan masalah lainnya, lihat Memecahkan masalah sertifikat SSL.

Pembersihan

Untuk mengembalikan perubahan yang Anda buat dalam tutorial ini, selesaikan langkah-langkah berikut:

  1. Lepaskan peta sertifikat dari proxy.

    Sebelum Anda melepaskan peta sertifikat, perhatikan hal-hal berikut:

    • Jika ada sertifikat TLS (SSL) yang dilampirkan langsung ke proxy, melepaskan peta sertifikat akan menyebabkan proxy melanjutkan penggunaan sertifikat TLS (SSL) yang dilampirkan secara langsung tersebut.
    • Jika tidak ada sertifikat TLS (SSL) yang dilampirkan langsung ke proxy, peta sertifikat tidak dapat dilepas dari proxy. Anda harus terlebih dahulu melampirkan setidaknya satu sertifikat TLS (SSL) langsung ke proxy sebelum dapat melepaskan peta sertifikat.

    Untuk melepaskan peta sertifikat, jalankan perintah berikut:

    gcloud compute target-https-proxies update PROXY_NAME \
       --clear-certificate-map
    
  2. Hapus entri peta sertifikat dari peta sertifikat:

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

    Ganti kode berikut:

    • CERTIFICATE_MAP_ENTRY_NAME: nama entri peta sertifikat target
    • CERTIFICATE_MAP_NAME: nama peta sertifikat target
  3. Hapus peta sertifikat:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Ganti CERTIFICATE_MAP_NAME dengan nama peta sertifikat target.

  4. Hapus sertifikat yang dikelola Google:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Ganti CERTIFICATE_NAME dengan nama sertifikat target.

Langkah selanjutnya