Tutorial ini menunjukkan cara menggunakan Pengelola Sertifikat untuk men-deploy sertifikat yang dikelola Google regional dengan otorisasi DNS ke Load Balancer Aplikasi eksternal regional atau ke Load Balancer Aplikasi internal regional.
Jika Anda ingin men-deploy ke load balancer eksternal global atau load balancer lintas-region, lihat hal berikut:
Tujuan
Tutorial ini menunjukkan kepada Anda cara menyelesaikan tugas-tugas berikut:
- Buat sertifikat yang dikelola Google yang dikeluarkan oleh certificate authority yang tepercaya secara publik dengan otorisasi DNS menggunakan Pengelola Sertifikat. Untuk membuat sertifikat regional yang dikelola Google, Anda harus menggunakan otorisasi DNS per project.
- Deploy sertifikat ke load balancer yang didukung menggunakan proxy HTTPS target.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Certificate Manager APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Certificate Manager APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Membuat zona DNS publik
Peran yang diperlukan
Pastikan Anda memiliki peran berikut untuk menyelesaikan tugas dalam tutorial ini:
- Pemilik Pengelola Sertifikat (
roles/certificatemanager.owner
): Wajib untuk membuat dan mengelola resource Pengelola Sertifikat. - Compute Load Balancer Admin (
roles/compute.loadBalancerAdmin
) atau Compute Network Admin (roles/compute.networkAdmin
): Diperlukan untuk membuat dan mengelola proxy target HTTPS.
- DNS Administrator (
roles/dns.admin
): Wajib jika Anda ingin menggunakan Cloud DNS sebagai solusi DNS Anda.
Untuk informasi selengkapnya, lihat referensi berikut:
- Peran dan izin untuk Pengelola Sertifikat.
- Peran dan izin IAM Compute Engine untuk Compute Engine.
- Peran dan izin untuk Cloud DNS.
Nama domain
Untuk membuat sertifikat, dapatkan nama domain yang sepenuhnya memenuhi syarat (FQDN) dari domain yang Anda miliki. Jika tidak memiliki domain, Anda dapat menggunakan Cloud Domains untuk mendaftarkan domain.
Membuat load balancer
Tutorial ini mengasumsikan bahwa Anda telah membuat dan mengonfigurasi backend, health check, layanan backend, dan peta URL load balancer. Catat nama peta URL karena Anda akan memerlukannya nanti dalam tutorial ini.
Untuk membuat Load Balancer Aplikasi eksternal regional, lihat Menyiapkan Load Balancer Aplikasi eksternal regional dengan backend grup instance VM.
Untuk membuat Load Balancer Aplikasi internal regional, lihat Menyiapkan Load Balancer Aplikasi internal regional dengan backend grup instance VM.
Membuat sertifikat regional yang dikelola Google
Sebelum membuat sertifikat, buat zona DNS publik. Kemudian, buat otorisasi DNS dan tambahkan data CNAME ke zona DNS target.
Membuat otorisasi DNS
Otorisasi DNS hanya mencakup satu nama domain. Anda harus membuat otorisasi DNS terpisah untuk setiap nama domain yang ingin digunakan 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
.
Sertifikat yang dikelola Google secara regional menggunakan PER_PROJECT_RECORD
sebagai jenis
otorisasi DNS default.
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
Untuk membuat otorisasi DNS, gunakan perintah certificate-manager
dns-authorizations create
:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME \" –-location="LOCATION"
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, sepertimyorg.example.com
.LOCATION
: lokasi Google Cloud target tempat Anda membuat otorisasi DNS.
Setelah membuat otorisasi DNS, verifikasi dengan perintah certificate-manager dns-authorizations describe
:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME \
Outputnya mirip dengan yang berikut ini. Dalam output, temukan baris dnsResourceRecord
dan dapatkan data CNAME
(data
,
name
, dan type
) untuk
ditambahkan 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'
API
Untuk membuat otorisasi DNS, buat permintaan POST
ke metode dnsAuthorizations.create
:
POST /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME" { "domain": "DOMAIN_NAME", "type": "PER_PROJECT_RECORD" }
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud.LOCATION
: lokasi Google Cloud target tempat Anda membuat otorisasi DNS.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, sepertimyorg.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
Di konsol Google Cloud, buka halaman Certificate Manager.
Di tab Certificates, klik Add Certificate.
Di kolom Nama sertifikat, masukkan nama unik untuk sertifikat.
Opsional: Di kolom Deskripsi, masukkan deskripsi untuk sertifikat. Deskripsi memungkinkan Anda mengidentifikasi sertifikat.
Untuk Lokasi, pilih Regional.
Dari daftar Region, pilih region Anda.
Untuk Certificate type, pilih Create Google-managed certificate.
Untuk Jenis Certificate Authority, pilih Publik.
Di kolom Domain Names, tentukan daftar nama domain sertifikat yang dipisahkan koma. 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
.Untuk Jenis otorisasi, pilih Otorisasi DNS.
Halaman ini mencantumkan otorisasi DNS nama domain. Jika nama domain tidak memiliki otorisasi DNS terkait, ikuti langkah-langkah berikut untuk membuatnya:
- Klik Buat otorisasi DNS yang tidak ada.
- Di kolom DNS authorization name, tentukan nama otorisasi DNS.
- Klik Create DNS authorization.
Di kolom Labels, tentukan label yang akan dikaitkan dengan sertifikat. Untuk menambahkan label, klik
Tambahkan label, lalu tentukan kunci dan nilai untuk label Anda.Klik Create.
Sertifikat baru akan muncul dalam daftar sertifikat.
gcloud
Untuk membuat sertifikat yang dikelola Google regional dengan otorisasi DNS, jalankan
perintah certificate-manager certificates create
dengan
flag dns-authorizations
dan location
:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAME, *.DOMAIN_NAME" \ --dns-authorizations="AUTHORIZATION_NAMES" \ --location=LOCATION
Ganti kode berikut:
CERTIFICATE_NAME
: nama sertifikat.DOMAIN_NAME
: nama domain target. Nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, sepertimyorg.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.LOCATION
: lokasi Google Cloud target.
API
Buat sertifikat dengan membuat permintaan POST
ke metode certificates.create
sebagai berikut:
POST /v1/projects/PROJECT_ID/locations/LOCATION/certificates?certificate_id=CERTIFICATE_NAME { "managed": { "domains": ["DOMAIN_NAME"], "dnsAuthorizations": [ "projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations/AUTHORIZATION_NAME", ], } }
Ganti kode berikut:
PROJECT_ID
: ID project Google Cloud.CERTIFICATE_NAME
: nama sertifikat.DOMAIN_NAME
: nama domain target. Nama domain harus berupa nama domain yang sepenuhnya memenuhi syarat, sepertimyorg.example.com
, atau domain karakter pengganti, seperti*.myorg.example.com
. Awalan titik bintang (*.) menandakan sertifikat karakter pengganti.LOCATION
: lokasi Google Cloud target.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 dokumentasi untuk menambahkan data CNAME ke konfigurasi DNS. Jika Anda menggunakan Google Cloud untuk mengelola DNS, selesaikan langkah-langkah di bagian ini.
Konsol
Untuk membuat kumpulan data, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman DNS zones.
Klik nama zona DNS tempat Anda ingin menambahkan data.
Di halaman Zone details, klik Add standard.
Di halaman Create record set, di kolom DNS name, masukkan subdomain zona DNS.
Saat memasukkan nama subdomain, pastikan nama subdomain, termasuk teks berwarna abu-abu yang ditampilkan di kolom DNS name, cocok dengan nilai lengkap kolom
dnsResourceRecord.name
seperti yang ditampilkan di output perintahgcloud certificate-manager dns-authorizations describe
.Lihat contoh berikut:
Jika nilai kolom
dnsResourceRecord.name
adalah_acme-challenge.myorg.example.com.
, dan teks 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 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 berwarna abu-abu di kolom Nama DNS adalah.myorg.example.com.
, masukkan_acme-challenge_ujmmovf2vn55tgye
.
Di kolom Resource record type, pilih CNAME.
Di kolom TTL, masukkan nilai numerik positif untuk waktu data resource untuk aktif, yaitu jumlah waktu yang dapat disimpan dalam cache.
Dari daftar TTL unit, pilih satuan waktu—misalnya,
30 minutes
.Di kolom Canonical name, masukkan nilai lengkap kolom
dnsResourceRecord.data
seperti yang ditampilkan dalam output perintahgcloud certificate-manager dns-authorizations describe
.Untuk memasukkan informasi tambahan, klik Tambahkan item.
Klik Create.
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:
Mulai transaksi data DNS:
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
Ganti
DNS_ZONE_NAME
dengan nama zona DNS target.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 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 perintahgcloud 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, sepertimyorg.example.com
. Anda juga harus menyertakan titik di akhir setelah nama domain target.DNS_ZONE_NAME
: nama zona DNS target.
Lihat contoh berikut:
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"
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
.
Memverifikasi status sertifikat
Sebelum men-deploy sertifikat ke load balancer, pastikan sertifikat tersebut aktif. Diperlukan
waktu beberapa menit agar status sertifikat berubah menjadi ACTIVE
.
Konsol
Di konsol Google Cloud, buka halaman Certificate Manager.
Di tab Sertifikat, periksa kolom Status untuk sertifikat.
gcloud
Untuk memverifikasi status sertifikat, jalankan perintah berikut:
gcloud certificate-manager certificates describe CERTIFICATE_NAME \ --location=LOCATION
Ganti kode berikut:
CERTIFICATE_NAME
: nama sertifikat.LOCATION
: lokasi Google Cloud target tempat Anda membuat sertifikat yang dikelola Google.
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/LOCATION/dnsAuthorizations/myCert domains: - myorg.example.com state: ACTIVE name: projects/myProject/locations/LOCATION/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, pastikan Anda telah menambahkan data CNAME
dengan benar ke konfigurasi DNS.
Untuk mengetahui langkah pemecahan masalah lainnya, lihat Memecahkan Masalah Pengelola Sertifikat.
Men-deploy sertifikat ke load balancer
Untuk men-deploy sertifikat yang dikelola Google regional ke Load Balancer Aplikasi eksternal regional atau Load Balancer Aplikasi internal regional, lampirkan langsung ke proxy target.
Melampirkan 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 \ --certificate-manager-certificates=CERTIFICATE_NAME \ --url-map=URL_MAP \ --region=LOCATION
Ganti kode berikut:
PROXY_NAME
: nama proxy target.CERTIFICATE_NAME
: nama sertifikat.URL_MAP
: nama peta URL. Anda membuat peta URL saat membuat load balancer.LOCATION
: lokasi Google Cloud target tempat Anda ingin membuat proxy target HTTPS.
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 Proxy
target
dan catat nama proxy target.
gcloud compute target-https-proxies update PROXY_NAME \ --region=LOCATION \ --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.
Hapus load balancer dan resource-nya.
Hapus sertifikat yang dikelola Google:
Konsol
Di konsol Google Cloud, buka halaman Certificate Manager.
Di tab Certificates, centang kotak sertifikat.
Klik Hapus.
Pada dialog yang muncul, klik Hapus untuk mengonfirmasi.
gcloud
gcloud certificate-manager certificates delete CERTIFICATE_NAME \ --location=LOCATION
Ganti kode berikut:
CERTIFICATE_NAME
: nama sertifikat.LOCATION
: lokasi Google Cloud target.
Hapus otorisasi DNS:
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME --location=LOCATION
Ganti kode berikut:
AUTHORIZATION_NAME
: nama otorisasi DNS.LOCATION
: lokasi Google Cloud target tempat Anda membuat otorisasi DNS.