Men-deploy sertifikat yang dikelola Google lintas wilayah dengan otorisasi DNS

Tutorial ini menunjukkan cara menggunakan Certificate Manager untuk men-deploy sertifikat yang dikelola Google global dengan otorisasi DNS ke Load Balancer Aplikasi internal lintas region.

Jika Anda ingin men-deploy ke load balancer eksternal global atau load balancer regional, lihat artikel berikut:

Membuat sertifikat yang dikelola Google dengan otorisasi DNS

Sebelum membuat sertifikat, buat zona DNS publik. Kemudian, buat otorisasi DNS dan tambahkan data CNAME ke zona DNS target.

Buat otorisasi DNS

Otorisasi DNS hanya mencakup satu nama domain. Anda harus membuat otorisasi DNS terpisah untuk setiap nama domain yang ingin Anda gunakan dengan sertifikat target.

Jika Anda membuat otorisasi DNS untuk sertifikat karakter pengganti, seperti *.myorg.example.com, konfigurasi otorisasi DNS untuk domain induk—misalnya, myorg.example.com.

Konsol

Anda dapat membuat otorisasi DNS atau melampirkan otorisasi DNS yang ada saat membuat sertifikat. Untuk mengetahui informasi selengkapnya, lihat Membuat sertifikat yang dikelola Google yang merujuk pada otorisasi DNS.

gcloud

Anda dapat membuat dua jenis otorisasi DNS: FIXED_RECORD atau PER_PROJECT_RECORD. Untuk mengetahui informasi selengkapnya, lihat Otorisasi DNS.

Otorisasi DNS FIXED_RECORD

Untuk membuat otorisasi DNS FIXED_RECORD, gunakan perintah gcloud certificate-manager dns-authorizations create berikut:

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --type=[FIXED_RECORD]

Ganti kode berikut:

  • AUTHORIZATION_NAME: nama otorisasi DNS.
  • DOMAIN_NAME: nama domain target tempat Anda membuat otorisasi DNS ini. Nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, seperti myorg.example.com.

Setelah membuat otorisasi DNS FIXED_RECORD, verifikasi dengan perintah gcloud certificate-manager dns-authorizations describe:

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME

Outputnya mirip dengan yang berikut ini. Di output, temukan bagian dnsResourceRecord. Temukan data CNAME dan tambahkan detail data (data,name, dan type) ke konfigurasi DNS Anda.

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'

Otorisasi DNS PER_PROJECT_RECORD

Untuk membuat otorisasi DNS PER_PROJECT_RECORD, gunakan perintah gcloud certificate-manager dns-authorizations create berikut:

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --type=PER_PROJECT_RECORD

Ganti kode berikut:

  • AUTHORIZATION_NAME: nama otorisasi DNS.
  • DOMAIN_NAME: nama domain target tempat Anda membuat otorisasi DNS ini. Nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, seperti myorg.example.com.

Setelah membuat otorisasi DNS PER_PROJECT_RECORD, verifikasi dengan perintah gcloud certificate-manager dns-authorizations describe:

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME

Outputnya mirip dengan yang berikut ini. Di output, temukan bagian dnsResourceRecord. Temukan data CNAME dan tambahkan detail data (data,name, dan type) ke konfigurasi DNS Anda.

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'

API

Untuk membuat otorisasi DNS, buat permintaan POST ke metode dnsAuthorizations.create:

POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME"
{
  "domain": "DOMAIN_NAME",
  "type": "PER_PROJECT_RECORD" //optional
}

Ganti kode berikut:

  • PROJECT_ID: ID Google Cloud project.
  • AUTHORIZATION_NAME: nama otorisasi DNS.
  • DOMAIN_NAME: nama domain target tempat Anda membuat otorisasi DNS ini. Nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, seperti myorg.example.com.

Buat sertifikat yang dikelola Google yang merujuk pada otorisasi DNS

Untuk membuat sertifikat yang dikelola Google yang merujuk ke otorisasi DNS yang Anda buat pada langkah sebelumnya, lakukan hal berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman Certificate Manager.

    Buka Certificate Manager

  2. Di tab Sertifikat, klik Tambahkan Sertifikat.

  3. Di kolom Nama sertifikat, masukkan nama unik untuk sertifikat.

  4. Opsional: Di kolom Deskripsi, masukkan deskripsi untuk sertifikat. Deskripsi memungkinkan Anda mengidentifikasi sertifikat.

  5. Untuk Location, pilih Global.

  6. Untuk Cakupan, pilih Semua wilayah.

  7. Untuk Certificate type, pilih Create Google-managed certificate.

  8. Untuk Certificate Authority type, pilih Public.

  9. Di kolom Nama Domain, tentukan daftar nama domain yang dibatasi koma dari sertifikat. Setiap nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, seperti myorg.example.com. Nama domain juga dapat berupa nama domain karakter pengganti, seperti *.example.com.

  10. Untuk Authorization type, pilih DNS authorization.

    Halaman ini mencantumkan otorisasi DNS nama domain. Jika nama domain tidak memiliki otorisasi DNS terkait, ikuti langkah-langkah berikut untuk membuatnya:

    1. Klik Buat otorisasi DNS yang tidak ada.
    2. Di kolom Nama otorisasi DNS, tentukan nama otorisasi DNS. Jenis otorisasi DNS default adalah FIXED_RECORD. Untuk mengelola sertifikat secara independen di beberapa project, pilih kotak centang Otorisasi per project.
    3. Klik Buat otorisasi DNS.
  11. Di kolom Labels, tentukan label yang akan dikaitkan dengan sertifikat. Untuk menambahkan label, klik Tambahkan label, lalu tentukan kunci dan nilai untuk label Anda.

  12. Klik Buat.

    Sertifikat baru akan muncul dalam daftar sertifikat.

gcloud

Untuk membuat sertifikat yang dikelola Google lintas-region dengan otorisasi DNS, gunakan perintah certificate-manager certificates create dengan flag dns-authorizations dan --scope:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME, *.DOMAIN_NAME" \
    --dns-authorizations="AUTHORIZATION_NAMES" \
    --scope=all-regions

Ganti kode berikut:

  • CERTIFICATE_NAME: nama sertifikat.
  • DOMAIN_NAME: nama domain target. Nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, seperti myorg.example.com, atau domain karakter pengganti, seperti *.myorg.example.com. Awalan titik bintang (*.) menandakan sertifikat karakter pengganti.
  • AUTHORIZATION_NAMES: daftar nama otorisasi DNS yang dipisahkan koma.

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"],
  "dnsAuthorizations": [
   "projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME",
  ],
  "scope": "ALL_REGIONS"
 }
}

Ganti kode berikut:

  • PROJECT_ID: ID Google Cloud project.
  • CERTIFICATE_NAME: nama sertifikat.
  • DOMAIN_NAME: nama domain target. Nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, seperti myorg.example.com, atau domain karakter pengganti, seperti *.myorg.example.com. Awalan titik bintang (*.) menandakan sertifikat karakter pengganti.
  • AUTHORIZATION_NAMES: daftar nama otorisasi DNS yang dipisahkan koma.

Tambahkan data CNAME ke konfigurasi DNS Anda

Jika Anda menggunakan solusi DNS pihak ketiga untuk mengelola DNS, lihat dokumentasinya untuk menambahkan data CNAME ke konfigurasi DNS. Jika Anda menggunakan Google Cloud untuk mengelola DNS, selesaikan langkah-langkah di bagian ini.

Konsol

Untuk membuat set data, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman DNS zones.

    Buka Cloud DNS zones

  2. Klik nama zona DNS tempat Anda ingin menambahkan data.

  3. Di halaman Zone details, klik Add standard.

  4. Di halaman Create record set, di kolom DNS name, masukkan subdomain zona DNS.

    Saat memasukkan nama subdomain, pastikan nama subdomain, termasuk teks yang berwarna abu-abu yang ditampilkan di kolom DNS name, cocok dengan nilai lengkap kolom dnsResourceRecord.name seperti yang ditampilkan di output perintah gcloud certificate-manager dns-authorizations describe.

    Lihat contoh berikut:

    • Jika nilai kolom dnsResourceRecord.name adalah _acme-challenge.myorg.example.com., dan teks yang berwarna abu-abu di kolom Nama DNS adalah .example.com., masukkan _acme-challenge.myorg.

    • Jika nilai kolom dnsResourceRecord.name adalah _acme-challenge.myorg.example.com. , dan teks yang berwarna abu-abu di kolom Nama DNS adalah .myorg.example.com., masukkan _acme-challenge.

    • Jika nilai kolom dnsResourceRecord.name adalah _acme-challenge_ujmmovf2vn55tgye.myorg.example.com., dan teks yang ditampilkan berwarna abu-abu di kolom Nama DNS adalah .myorg.example.com., maka masukkan _acme-challenge_ujmmovf2vn55tgye.

  5. Di kolom Jenis data resource, pilih CNAME.

  6. Di kolom TTL, masukkan nilai numerik positif untuk waktu aktif data resource, yaitu lamanya waktu data dapat di-cache.

  7. Dari daftar TTL unit, pilih unit waktu—misalnya, 30 minutes.

  8. Di kolom Nama kanonis, masukkan nilai lengkap kolom dnsResourceRecord.data seperti yang ditampilkan di output perintah gcloud certificate-manager dns-authorizations describe.

  9. Untuk memasukkan informasi tambahan, klik Tambahkan item.

  10. Klik Buat.

gcloud

Saat Anda membuat otorisasi DNS, perintah gcloud CLI akan menampilkan data CNAME yang sesuai. Untuk menambahkan data CNAME ke konfigurasi DNS di zona DNS domain target, ikuti langkah-langkah berikut:

  1. Mulai transaksi data DNS:

    gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
    

    Ganti DNS_ZONE_NAME dengan nama zona DNS target.

  2. Tambahkan data CNAME ke zona DNS target:

    gcloud dns record-sets transaction add CNAME_RECORD \
        --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \
        --ttl="30" \
        --type="CNAME" \
        --zone="DNS_ZONE_NAME"
    

    Ganti kode berikut:

    • CNAME_RECORD: nilai data lengkap dari data CNAME yang ditampilkan oleh perintah Google Cloud CLI yang membuat otorisasi DNS yang sesuai.
    • VALIDATION_SUBDOMAIN_NAME: subdomain awalan zona DNS, seperti _acme-challenge. Anda dapat menyalin nama dari log perintah gcloud certificate-manager dns-authorizations describe, seperti yang dijelaskan dalam Membuat otorisasi DNS.
    • DOMAIN_NAME: nama domain target.Nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, seperti myorg.example.com. Anda juga harus menyertakan titik di akhir setelah nama domain target.
    • DNS_ZONE_NAME: nama zona DNS target.

    Untuk mengetahui informasi selengkapnya tentang perbedaan antara otorisasi DNS FIXED_RECORD dan PER_PROJECT_RECORD, lihat contoh berikut. Satu-satunya perbedaan antara kedua contoh adalah nilai flag --name.

    Otorisasi DNS FIXED_RECORD

    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"
    

    Otorisasi DNS PER_PROJECT_RECORD

    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"
    
  3. Jalankan transaksi data DNS untuk menyimpan perubahan:

    gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
    

    Ganti DNS_ZONE_NAME dengan nama zona DNS target.

Terraform

Untuk menambahkan data CNAME ke konfigurasi DNS, Anda dapat menggunakan resource google_dns_record_set.

resource "google_dns_record_set" "cname" {
  name         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].name
  managed_zone = google_dns_managed_zone.default.name
  type         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].type
  ttl          = 300
  rrdatas      = [google_certificate_manager_dns_authorization.default.dns_resource_record[0].data]
}

Verifikasi status sertifikat

Sebelum men-deploy sertifikat ke load balancer, pastikan sertifikat tersebut aktif. Mungkin diperlukan waktu beberapa menit agar status sertifikat berubah menjadi ACTIVE.

Konsol

  1. Di konsol Google Cloud , buka halaman Certificate Manager.

    Buka Certificate Manager

  2. Di tab Sertifikat, periksa kolom Status untuk sertifikat.

gcloud

Untuk memverifikasi status sertifikat, jalankan perintah berikut:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Ganti CERTIFICATE_NAME dengan nama sertifikat yang dikelola Google target.

Outputnya mirip dengan hal berikut ini:

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  - domain: myorg.example.com
    state: AUTHORIZED
  dnsAuthorizations:
    - projects/myProject/locations/global/dnsAuthorizations/myCert
  domains:
  - myorg.example.com
  state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Jika status sertifikat bukan ACTIVE setelah beberapa jam, periksa apakah Anda telah menambahkan data CNAME dengan benar ke konfigurasi DNS Anda.

Untuk mengetahui langkah-langkah pemecahan masalah lainnya, lihat Memecahkan Masalah Certificate Manager.

Men-deploy sertifikat ke load balancer

Untuk men-deploy sertifikat global yang dikelola Google, lampirkan langsung ke proxy target.

Lampirkan sertifikat langsung ke proxy target

Anda dapat melampirkan sertifikat ke proxy target baru atau proxy target yang ada.

Untuk melampirkan sertifikat ke proxy target baru, gunakan perintah gcloud compute target-https-proxies create:

gcloud compute target-https-proxies create PROXY_NAME \
    --url-map=URL_MAP \
    --certificate-manager-certificates=CERTIFICATE_NAME \
    --global

Ganti kode berikut:

  • PROXY_NAME: nama proxy target.
  • URL_MAP: nama peta URL. Anda membuat peta URL saat membuat load balancer.
  • CERTIFICATE_NAME: nama sertifikat.

Untuk melampirkan sertifikat ke proxy HTTPS target yang ada, gunakan perintah gcloud compute target-https-proxies update. Jika Anda tidak mengetahui nama proxy target yang ada, buka halaman Target proxy dan catat nama proxy target.

gcloud compute target-https-proxies update PROXY_NAME \
    --global \
    --certificate-manager-certificates=CERTIFICATE_NAME

Setelah membuat atau memperbarui proxy target, jalankan perintah berikut untuk memverifikasinya:

gcloud compute target-https-proxies list

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus resource tersebut.

  1. Hapus load balancer dan sumber dayanya.

    Lihat Membersihkan penyiapan load balancing.

  2. Hapus sertifikat yang dikelola Google:

    Konsol

    1. Di konsol Google Cloud , buka halaman Certificate Manager.

      Buka Certificate Manager

    2. Di tab Certificates, centang kotak sertifikat.

    3. Klik Hapus.

    4. Pada dialog yang muncul, klik Hapus untuk mengonfirmasi.

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Ganti CERTIFICATE_NAME dengan nama sertifikat target.

  3. Hapus otorisasi DNS:

    gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
    

    Ganti AUTHORIZATION_NAME dengan nama otorisasi DNS target.