Menggunakan sertifikat SSL yang dikelola Google

Halaman ini membahas cara membuat dan menggunakan Compute Engine sertifikat SSL yang dikelola Google.

Untuk membuat sertifikat yang dikelola Google menggunakan Certificate Manager, lihat Ringkasan deployment.

Sertifikat SSL yang dikelola Google adalah sertifikat Validasi Domain (DV) yang diperoleh dan dikelola Google Cloud untuk domain Anda. Sertifikat tersebut mendukung beberapa nama host di setiap sertifikat, dan Google memperpanjang sertifikat secara otomatis.

Sertifikat yang dikelola Google didukung dengan load balancer berikut:

  • Load Balancer Aplikasi eksternal global
  • Load Balancer Aplikasi Klasik
  • Load Balancer Jaringan proxy eksternal (dengan proxy SSL target)

Sertifikat SSL yang dikelola Google tidak didukung untuk Load Balancer Aplikasi eksternal regional dan Load Balancer Aplikasi internal regional. Untuk load balancer ini, gunakan sertifikat SSL yang dikelola sendiri.

Anda juga dapat menggunakan sertifikat SSL terkelola dengan Google Kubernetes Engine. Untuk informasi selengkapnya, lihat Menggunakan sertifikat SSL yang dikelola Google.

Anda dapat membuat sertifikat yang dikelola Google sebelum, selama, atau setelah membuat load balancer. Halaman ini mengasumsikan bahwa Anda membuat sertifikat Compute Engine sebelum atau setelah membuat load balancer, bukan selama pembuatan load balancer. Untuk membuat sertifikat saat membuat load balancer, lihat halaman petunjuk load balancer.

Sebelum memulai

Izin

Untuk mengikuti panduan ini, Anda harus dapat membuat dan mengubah sertifikat SSL di project Anda. Anda dapat melakukannya jika salah satu kondisi berikut terpenuhi:

  • Anda adalah Pemilik atau Editor project (roles/owner atau roles/editor).
  • Anda memiliki peran Admin Keamanan Compute (compute.securityAdmin) dan peran Admin Jaringan Compute (compute.networkAdmin) dalam project.
  • Anda memiliki peran khusus untuk project yang menyertakan izin compute.sslCertificates.* dan salah satu atau kedua compute.targetHttpsProxies.* dan compute.targetSslProxies.*, bergantung pada jenis load balancer yang Anda gunakan.

Langkah 1. Membuat sertifikat SSL yang dikelola Google

Anda dapat membuat sertifikat yang dikelola Google sebelum, selama, atau setelah membuat load balancer. Selama proses pembuatan load balancer di Konsol Google Cloud, Anda dapat menggunakan konsol Google Cloud untuk membuat sertifikat. Atau, Anda dapat membuat sertifikat sebelum atau sesudah membuat load balancer. Langkah ini menunjukkan cara membuat sertifikat yang dapat Anda tambahkan nanti ke satu atau beberapa load balancer.

Jika telah membuat sertifikat SSL yang dikelola Google, Anda dapat melewati langkah ini.

Konsol

Anda dapat menggunakan sertifikat SSL global di tab Sertifikat Klasik di halaman Pengelola Sertifikat.

  1. Buka tab Classic Certificates di Konsol Google Cloud.
    Buka Sertifikat Klasik
  2. Klik Buat sertifikat SSL.
  3. Masukkan nama dan deskripsi opsional untuk sertifikat.
  4. Pilih Buat sertifikat yang dikelola Google.
  5. Tambahkan domain.
  6. Klik Create.

gcloud

Untuk membuat sertifikat SSL global yang dikelola Google untuk Load Balancer Aplikasi eksternal global atau Load Balancer Jaringan proxy eksternal, gunakan perintah gcloud compute ssl-certificates create:

gcloud compute ssl-certificates create CERTIFICATE_NAME \
    --description=DESCRIPTION \
    --domains=DOMAIN_LIST \
    --global

Ganti kode berikut:

  • CERTIFICATE_NAME: nama untuk sertifikat SSL global
  • DESCRIPTION: deskripsi untuk sertifikat SSL global
  • DOMAIN_LIST: nama domain tunggal atau daftar nama domain yang dipisahkan koma yang akan digunakan untuk sertifikat ini

Terraform

Untuk membuat sertifikat SSL yang dikelola Google, gunakan resource google_compute_managed_ssl_certificate.

resource "google_compute_managed_ssl_certificate" "lb_default" {
  provider = google-beta
  name     = "myservice-ssl-cert"

  managed {
    domains = ["example.com"]
  }
}

api

Buat metode resource sertifikat sslCertificates.insert yang dikelola Google, dengan mengganti PROJECT_ID dengan project ID Anda.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/sslCertificates
{
  "name": "ssl-certificate-name",
  "managed": {
    "domains": [
      "www.example.com"
    ]
  },
  "type": "MANAGED"
}

Memeriksa status sertifikat SSL yang dikelola Google

Konsol

Anda dapat memeriksa status sertifikat SSL global di tab Sertifikat Klasik pada halaman Pengelola Sertifikat.

  1. Buka tab Classic Certificates di Konsol Google Cloud.
    Buka Sertifikat Klasik
  2. Opsional: Filter daftar sertifikat SSL.
  3. Periksa kolom Status.
  4. Untuk melihat detail selengkapnya, klik nama sertifikat.

gcloud

Untuk menentukan status sertifikat yang dikelola Google, Anda dapat menggunakan perintah gcloud compute. Setelah menjalankan perintah yang sesuai, perhatikan hal berikut:

  • Status terkelola.
  • Status domain.

Untuk mencantumkan sertifikat SSL yang dikelola Google, gunakan perintah gcloud compute ssl-certificates list dengan tanda --global .

gcloud compute ssl-certificates list \
   --global

Anda dapat menggunakan perintah gcloud compute ssl-certificates describe, yang menggantikan CERTIFICATE_NAME:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
   --global \
   --format="get(name,managed.status, managed.domainStatus)"

Pada tahap ini, status sertifikat dan status domain adalah PROVISIONING. Setelah Anda menyelesaikan langkah-langkah di halaman ini, statusnya akan berubah menjadi ACTIVE.

Untuk mengetahui informasi selengkapnya tentang status, lihat halaman pemecahan masalah.

Langkah 2: Buat atau update load balancer

Untuk menjadi ACTIVE, sertifikat SSL yang dikelola Google harus dikaitkan dengan load balancer, khususnya proxy target load balancer.

Setelah membuat sertifikat SSL dan memiliki status PROVISIONING, Anda dapat menggunakannya selama pembuatan load balancer, seperti yang dijelaskan dalam panduan cara kerja berikut:

Atau, Anda dapat menggunakannya untuk mengupdate load balancer yang sudah ada, seperti yang dijelaskan di sini:

Konsol

Saat Anda mengupdate Load Balancer Aplikasi eksternal global atau Load Balancer Jaringan proxy eksternal menggunakan Konsol Google Cloud, Google Cloud akan otomatis mengaitkan sertifikat SSL Anda dengan proxy target yang benar.

  1. Buka halaman Load balancing di Konsol Google Cloud.
    Buka Load balancing
  2. Klik nama load balancer Anda.
  3. Klik Edit .
  4. Klik Frontend configuration.
  5. Klik front end yang benar (harus HTTPS, HTTP/2, SSL).
  6. Klik Additional certificate, lalu pilih sertifikat yang dikelola Google dari menu drop-down.
  7. Klik Create.

gcloud

Untuk mengaitkan sertifikat SSL dengan proxy HTTPS target untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud compute target-https-proxies update dengan flag --global-ssl-certificates dan --global:

gcloud compute target-https-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST \
    --global-ssl-certificates \
    --global

Untuk mengaitkan sertifikat SSL dengan proxy SSL target untuk Load Balancer Jaringan proxy eksternal, gunakan perintah gcloud compute target-ssl-proxies update:

gcloud compute target-ssl-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST

Ganti kode berikut:

  • TARGET_PROXY_NAME: nama proxy target load balancer
  • SSL_CERTIFICATE_LIST: daftar resource sertifikat SSL yang dipisahkan koma

    Pastikan daftar sertifikat yang dirujuk menyertakan semua sertifikat SSL valid yang lama, serta sertifikat SSL baru. Perintah gcloud compute target-ssl-proxies update akan mengganti nilai asli untuk --ssl-certificates dengan nilai baru.

Terraform

Untuk membuat proxy HTTPS target, gunakan resource google_compute_target_https_proxy.

Untuk membuat proxy SSL target, gunakan resource google_compute_target_ssl_proxy.

resource "google_compute_target_https_proxy" "lb_default" {
  provider = google-beta
  name     = "myservice-https-proxy"
  url_map  = google_compute_url_map.lb_default.id
  ssl_certificates = [
    google_compute_managed_ssl_certificate.lb_default.name
  ]
  depends_on = [
    google_compute_managed_ssl_certificate.lb_default
  ]
}

Setiap proxy HTTPS target atau proxy SSL target harus merujuk setidaknya satu sertifikat SSL. Proxy target dapat merujuk ke lebih dari satu sertifikat SSL. Untuk mengetahui detailnya, lihat Kumpulan target dan proxy target dalam kuota dan batas resource load balancing.

Langkah 3: Verifikasi pengaitan proxy target

Setelah membuat atau memperbarui load balancer, Anda dapat memastikan bahwa sertifikat SSL dikaitkan dengan proxy target load balancer.

Jika Anda belum mengetahui nama proxy target, gunakan perintah gcloud compute target-https-proxies list dan gcloud compute target-ssl-proxies list untuk mencantumkan proxy target dalam project Anda.

Verifikasi pengaitan antara sertifikat SSL dan proxy target dengan menjalankan perintah berikut.

Untuk Load Balancer Aplikasi eksternal global:

gcloud compute target-https-proxies describe TARGET_HTTPS_PROXY_NAME \
    --global \
    --format="get(sslCertificates)"

Untuk Load Balancer Jaringan proxy eksternal:

gcloud compute target-ssl-proxies describe TARGET_SSL_PROXY_NAME \
    --format="get(sslCertificates)"

Pada tahap ini, status sertifikat yang dikelola Google mungkin masih berstatus PROVISIONING. Google Cloud bekerja sama dengan Certificate Authority untuk menerbitkan sertifikat. Penyediaan sertifikat yang dikelola Google mungkin memerlukan waktu hingga 60 menit.

Langkah 4: Perbarui data DNS A dan AAAA agar mengarah ke alamat IP load balancer

Data DNS Anda mungkin dikelola di situs registrar, host DNS, atau ISP.

Saat mengelola data, perhatikan hal-hal berikut:

  • Pastikan data DNS A (untuk IPv4) dan data AAAA DNS (untuk IPv6) untuk domain dan subdomain mana pun mengarah ke alamat IP yang terkait dengan aturan penerusan atau aturan penerusan load balancer.

  • Jika Anda menggunakan Cloud DNS, siapkan domain dan perbarui server nama Anda.

  • Jika Anda memiliki beberapa domain dalam sertifikat yang dikelola Google, tambahkan atau perbarui data DNS untuk semua domain dan subdomain agar mengarah ke alamat IP load balancer.

Penyediaan sertifikat terkelola berhasil jika hal berikut berlaku:

  • Data DNS domain Anda menggunakan data CNAME yang mengarah ke domain lain.
  • Domain lainnya berisi data A atau AAAA yang mengarah ke alamat IP load balancer Anda.

Anda dapat memverifikasi penyiapan dengan menjalankan perintah dig. Misalnya, anggaplah domain Anda adalah www.example.com. Jalankan perintah dig berikut:

dig www.example.com
; <<>> DiG 9.10.6 <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id:
;; flags: ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL:

;; PSEUDOSECTION:
; EDNS: version: 0, flags:; udp:
;; SECTION:
;www.example.com.

;; SECTION:
www.example.com.   example.net.
example.net.       34.95.64.10

;; time:
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 16:54:44
;;  rcvd: 31748 qr rd 1 OPT 512 QUESTION IN A ANSWER 1742 IN CNAME 12 IN A Query 43 msec Wed Jun 03 PDT 2020 MSG SIZE 193>

Dalam contoh ini, 34.95.64.10 adalah alamat IP load balancer Anda.

DNS resolver di internet berada di luar kendali Google Cloud. Keduanya meng-cache kumpulan data resource sesuai dengan time to live (TTL), yang berarti bahwa perintah dig atau nslookup dapat menampilkan nilai yang di-cache. Jika Anda menggunakan Cloud DNS, lihat Penyebaran perubahan.

Waktu penerapan catatan DNS

Data DNS A dan AAAA yang baru diperbarui dapat memerlukan waktu yang cukup lama untuk sepenuhnya diterapkan. Terkadang, penyebaran melalui internet memerlukan waktu hingga 72 jam di seluruh dunia, meskipun biasanya memerlukan waktu beberapa jam.

Jalankan kembali perintah berikut:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --format="get(managed.domainStatus)"

Jika status domain Anda adalah FAILED_NOT_VISIBLE, hal ini mungkin karena penerapan tidak selesai.

Untuk informasi selengkapnya, lihat bagian status domain sertifikat SSL yang dikelola Google di halaman Pemecahan masalah.

Langkah 5: Uji dengan OpenSSL

Setelah status sertifikat dan domain aktif, perlu waktu hingga 30 menit agar load balancer mulai menggunakan sertifikat SSL yang dikelola Google.

Untuk melakukan pengujian, jalankan perintah OpenSSL berikut. Ganti DOMAIN dengan nama DNS Anda dan IP_ADDRESS dengan alamat IP load balancer Anda.

echo | openssl s_client -showcerts -servername DOMAIN -connect IP_ADDRESS:443 -verify 99 -verify_return_error

Perintah ini menghasilkan sertifikat yang disajikan oleh load balancer ke klien. Bersama dengan informasi mendetail lainnya, output harus menyertakan rantai sertifikat dan Verify return code: 0 (ok).

Prosedur tambahan

Bagian ini berisi prosedur tambahan untuk mengelola sertifikat.

Mendukung beberapa domain dengan sertifikat SSL yang dikelola Google

Beberapa nama alternatif subjek didukung. Setiap sertifikat SSL yang dikelola Google mendukung hingga jumlah maksimum domain per sertifikat SSL yang dikelola Google.

Jika memiliki lebih dari jumlah maksimum domain, Anda harus meminta beberapa sertifikat yang dikelola Google. Misalnya, jika Anda mencoba membuat sertifikat yang dikelola Google dengan domain (maksimum + 1), Google tidak akan menerbitkan sertifikat apa pun. Sebagai gantinya, Anda harus membuat dua sertifikat yang dikelola Google atau lebih dan secara eksplisit menyatakan domain mana yang terkait dengan setiap sertifikat.

Google Cloud menerapkan Server Name Indication (SNI), seperti yang dijelaskan dalam RFC 6066.

Jika salah satu domain atau subdomain dalam sertifikat terkelola tidak mengarah ke alamat IP load balancer, proses perpanjangan akan gagal. Untuk menghindari kegagalan perpanjangan, pastikan semua domain dan subdomain Anda mengarah ke alamat IP load balancer.

Memperpanjang sertifikat SSL yang dikelola Google

Google Cloud menyediakan sertifikat terkelola yang berlaku selama 90 hari. Sekitar satu bulan sebelum masa berlaku habis, proses perpanjangan sertifikat akan otomatis dimulai. Untuk itu, Certificate Authority (CA) dipilih yang ada di data DNS Otorisasi Otoritas Sertifikasi (CAA) domain Anda dan di daftar CA.

CA yang digunakan untuk perpanjangan mungkin berbeda dengan CA yang digunakan untuk menerbitkan versi sebelumnya dari sertifikat yang dikelola Google. Anda dapat mengontrol CA yang digunakan Google Cloud untuk perpanjangan dengan memastikan bahwa data DNS CAA domain Anda menentukan satu CA dari daftar CA yang digunakan oleh sertifikat yang dikelola Google.

Jika salah satu domain atau subdomain dalam sertifikat terkelola tidak mengarah ke alamat IP load balancer, proses perpanjangan akan gagal. Untuk menghindari kegagalan perpanjangan, pastikan semua domain dan subdomain Anda mengarah ke alamat IP load balancer.

Tentukan CA yang dapat menerbitkan sertifikat yang dikelola Google

Di software DNS, sebaiknya Anda secara eksplisit memberi otorisasi kepada CA yang ingin diizinkan menerbitkan sertifikat yang dikelola Google. Meskipun tidak diperlukan dalam setiap skenario, hal ini diperlukan dalam situasi tertentu.

Misalnya, jika Anda menggunakan layanan DNS eksternal dan sertifikat yang dikelola Google milik Anda dicabut, layanan mungkin hanya memvalidasi sertifikat baru yang diterbitkan oleh satu atau beberapa CA tertentu.

Untuk melakukannya, buat atau ubah data CAA untuk menyertakan pki.goog atau letsencrypt.org atau keduanya. Jika Anda tidak memiliki data CAA, perilaku default-nya adalah mengizinkan pki.goog dan letsencrypt.org.

DOMAIN. CAA 0 issue "pki.goog"
DOMAIN. CAA 0 issue "letsencrypt.org"

Dukungan untuk sertifikat letsencrypt.org diberikan atas dasar upaya terbaik. Untuk keandalan terbaik, izinkan pki.goog dan letsencrypt.org. Jika Anda hanya menentukan salah satu CA, hanya CA tersebut yang akan digunakan untuk membuat dan memperpanjang sertifikat Anda. Pendekatan ini tidak direkomendasikan.

Saat Anda pertama kali membuat sertifikat, Google Cloud akan memilih pki.goog atau letsencrypt.org, lalu menggunakannya untuk menerbitkan sertifikat Anda. Saat Google memperpanjang sertifikat Anda, sertifikat Anda mungkin diterbitkan oleh CA lain, bergantung pada CA yang telah ditentukan dalam data CAA (jika Anda membuatnya). Sertifikat Anda mungkin diperpanjang oleh CA lain dalam salah satu kasus berikut:

  • Anda tidak memiliki data CAA DNS untuk domain Anda.
  • Anda telah menyertakan kedua CA dalam data CAA DNS.

Untuk informasi selengkapnya, lihat Data DNS CAA.

letsencrypt.org menerbitkan Nama Domain Internasional (IDN). pki.goog saat ini tidak mendukung IDN.

Jika Anda menggunakan Cloud DNS, pelajari cara menambahkan data, dan pastikan untuk menyetel flag --type ke CAA.

Mengganti sertifikat SSL yang ada

Untuk mengganti sertifikat SSL yang ada:

  1. Mulai proses untuk membuat sertifikat SSL pengganti yang dikelola Google. Sertifikat ini tidak menjadi AKTIF pada saat ini.

  2. Update proxy target agar daftar sertifikat yang dirujuk menyertakan sertifikat SSL pengganti beserta sertifikat SSL saat ini. Langkah untuk mengupdate proxy target bervariasi, seperti berikut:

  3. Tunggu hingga penyediaan sertifikat SSL pengganti selesai. Penyediaan mungkin memerlukan waktu hingga 60 menit. Setelah penyediaan selesai, status sertifikat akan menjadi ACTIVE.

  4. Tunggu selama 30 menit lagi untuk memastikan sertifikat pengganti tersedia untuk semua Google Front Ends (GFE).

  5. Update proxy target untuk menghapus sertifikat SSL yang Anda ganti dari daftar sertifikat yang dirujuk. Langkah-langkah untuk mengupdate proxy target bervariasi, seperti berikut:

  6. Tunggu selama 10 menit, dan pastikan load balancer menggunakan sertifikat SSL pengganti, bukan sertifikat yang lama.

  7. Update proxy target lagi, dengan menghapus resource sertifikat SSL lama. Anda dapat menghapus resource sertifikat SSL jika resource tersebut tidak lagi direferensikan oleh proxy target mana pun.

Jika Anda tidak menghapus sertifikat SSL yang lama, sertifikat tersebut tetap AKTIF hingga kedaluwarsa.

Bermigrasi dari sertifikat SSL yang dikelola sendiri ke sertifikat SSL yang dikelola Google

Saat memigrasikan load balancer dari penggunaan sertifikat SSL yang dikelola sendiri ke sertifikat SSL yang dikelola Google, Anda harus melakukan langkah-langkah berikut dalam urutan ini:

  1. Buat sertifikat baru yang dikelola Google.
  2. Kaitkan sertifikat baru yang dikelola Google dengan proxy target yang benar sambil mempertahankan pengaitan proxy target dengan sertifikat yang dikelola sendiri yang sudah ada.
  3. Tunggu hingga status sertifikat yang dikelola Google menjadi ACTIVE.
  4. Tunggu selama 30 menit hingga sertifikat baru dapat diterapkan ke penayangan Google Front End (GFE)
  5. Perbarui proxy target lagi, dengan menghapus resource sertifikat yang dikelola sendiri. Anda dapat menghapus resource sertifikat SSL yang dikelola sendiri jika resource tersebut tidak lagi dirujuk oleh proxy target apa pun.

Menghapus sertifikat SSL

Sebelum menghapus sertifikat SSL, pastikan tidak ada proxy target HTTPS atau SSL yang merujuk sertifikat ini. Anda dapat melakukannya dengan dua cara:

Untuk menghapus satu atau beberapa sertifikat SSL:

Konsol

Anda dapat menghapus sertifikat SSL global di tab Sertifikat Klasik di halaman Pengelola Sertifikat.

  1. Buka tab Classic Certificates di Konsol Google Cloud.
    Buka Sertifikat Klasik
  2. Pilih sertifikat SSL yang ingin dihapus.
  3. Klik Delete.
  4. Untuk mengonfirmasi, klik Hapus lagi.

gcloud

Untuk menghapus sertifikat SSL global (untuk Load Balancer Aplikasi eksternal global atau Load Balancer Jaringan proxy eksternal), gunakan perintah gcloud compute ssl-certificates delete dengan perintah --global:

gcloud compute ssl-certificates delete CERTIFICATE_NAME \
    --global

Ganti kode berikut:

  • CERTIFICATE_NAME: nama sertifikat SSL

Langkah selanjutnya

  • Untuk memecahkan masalah sertifikat SSL, lihat Memecahkan masalah sertifikat SSL.
  • Untuk menggunakan skrip Terraform yang membuat sertifikat yang dikelola Google, lihat contoh Cloud Run di halaman contoh modul Terraform untuk Load Balancer Aplikasi eksternal.