Memecahkan masalah sertifikat SSL

Prosedur pemecahan masalahnya berbeda-beda, bergantung apakah Anda menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri.

Memecahkan masalah sertifikat yang dikelola Google

Untuk sertifikat yang dikelola Google, ada dua jenis status:

  • Status terkelola
  • Status domain

Status terkelola

Untuk memeriksa status sertifikat, jalankan perintah berikut:

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

Nilai untuk status terkelola adalah sebagai berikut:

Status terkelola Penjelasan
PROVISIONING

Sertifikat yang dikelola Google telah dibuat dan Google Cloud bekerja sama dengan Certificate Authority untuk menandatanganinya.

Penyediaan sertifikat yang dikelola Google mungkin memerlukan waktu hingga 60 menit sejak perubahan konfigurasi DNS dan load balancer diterapkan di internet. Jika Anda mengupdate konfigurasi DNS baru-baru ini, perlu waktu lama agar perubahan disebarkan sepenuhnya. Terkadang penerapannya memerlukan waktu hingga 72 jam di seluruh dunia, meskipun biasanya memerlukan waktu beberapa jam. Untuk informasi selengkapnya tentang penerapan DNS, lihat Penyebaran perubahan.

Jika sertifikat tetap dalam status PROVISIONING, pastikan sertifikat yang benar telah dikaitkan dengan proxy target. Anda dapat memeriksanya dengan menjalankan perintah gcloud compute target-https-proxies describe atau gcloud compute target-ssl-proxies describe.

ACTIVE Sertifikat SSL yang dikelola Google diperoleh dari Certificate Authority. Mungkin diperlukan waktu tambahan selama 30 menit agar dapat digunakan oleh load balancer.
PROVISIONING_FAILED Anda mungkin melihat PROVISIONING_FAILED sebentar meskipun sertifikat Anda sebenarnya adalah ACTIVE. Periksa kembali statusnya.

Jika statusnya tetap PROVISIONING_FAILED, berarti sertifikat yang dikelola Google telah dibuat, tetapi Certificate Authority tidak dapat menandatanganinya. Pastikan Anda menyelesaikan semua langkah dalam Menggunakan sertifikat SSL yang dikelola Google.

Google Cloud mencoba ulang penyediaan hingga berhasil atau statusnya berubah menjadi PROVISIONING_FAILED_PERMANENTLY.
PROVISIONING_FAILED_PERMANENTLY Sertifikat yang dikelola Google dibuat, tetapi Certificate Authority tidak dapat menandatanganinya karena masalah konfigurasi DNS atau load balancer. Dalam status ini, Google Cloud tidak akan mencoba kembali penyediaan.

Buat sertifikat SSL pengganti yang dikelola Google, dan pastikan penggantian tersebut terkait dengan proxy target load balancer Anda. Verifikasi atau selesaikan semua langkah di Menggunakan sertifikat SSL yang dikelola Google. Setelah itu, Anda dapat menghapus sertifikat yang penyediaannya gagal secara permanen.
RENEWAL_FAILED

Perpanjangan sertifikat yang dikelola Google gagal karena ada masalah dengan load balancer atau konfigurasi DNS. Jika salah satu domain atau subdomain dalam sertifikat terkelola tidak mengarah ke alamat IP load balancer dengan menggunakan data A/AAAA, proses perpanjangan akan gagal. Sertifikat yang ada akan tetap ditayangkan, tetapi akan segera berakhir. Periksa konfigurasi Anda.

Jika statusnya tetap RENEWAL_FAILED, sediakan sertifikat baru, beralih menggunakan sertifikat baru, dan hapus sertifikat sebelumnya.

Untuk informasi selengkapnya tentang perpanjangan sertifikat, lihat Perpanjangan sertifikat SSL yang dikelola Google.

Status domain

Untuk memeriksa status domain, jalankan perintah berikut:

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

Nilai untuk status domain dijelaskan dalam tabel ini.

Status domain Penjelasan
PROVISIONING Sertifikat yang dikelola Google dibuat untuk domain. Google Cloud bekerja sama dengan Certificate Authority untuk menandatangani sertifikat.
ACTIVE Domain telah berhasil divalidasi untuk menyediakan sertifikat. Jika sertifikat SSL ditujukan untuk beberapa domain, sertifikat hanya dapat disediakan setelah semua domain memiliki status ACTIVE dan status terkelola dari sertifikat juga ACTIVE.
FAILED_NOT_VISIBLE

Penyediaan sertifikat untuk domain ini belum selesai. Salah satu dari hal berikut mungkin menjadi masalahnya:

  • Data DNS domain tidak di-resolve ke alamat IP load balancer Google Cloud. Untuk mengatasi masalah ini, perbarui data DNS A dan AAAA agar mengarah ke alamat IP load balancer.

    DNS tidak boleh di-resolve ke alamat IP selain milik load balancer. Misalnya, jika data A me-resolve ke load balancer yang benar, tetapi AAAA me-resolve ke hal lain, status domainnya adalah FAILED_NOT_VISIBLE.

  • Data DNS A dan AAAA yang baru diperbarui dapat memerlukan waktu yang cukup lama untuk diterapkan sepenuhnya. Terkadang penerapan di seluruh internet memerlukan waktu hingga 72 jam di seluruh dunia, meskipun biasanya memerlukan waktu beberapa jam. Status domain akan tetap FAILED_NOT_VISIBLE hingga penerapan selesai.
  • Sertifikat SSL tidak dilampirkan ke proxy target load balancer. Untuk mengatasi masalah ini, perbarui konfigurasi load balancer Anda.
  • Port frontend untuk aturan penerusan global tidak mencakup port 443 untuk Load Balancer Jaringan proxy eksternal dengan proxy SSL. Hal ini dapat diatasi dengan menambahkan aturan penerusan baru dengan port 443.
  • Peta sertifikat Pengelola Sertifikat dilampirkan ke proxy target. Peta sertifikat yang dilampirkan akan diprioritaskan dan sertifikat yang dilampirkan secara langsung akan diabaikan. Hal ini dapat diatasi dengan melepaskan peta sertifikat dari proxy.
  • Jika status terkelola adalah PROVISIONING, Google Cloud akan terus mencoba kembali penyediaan, meskipun status domainnya adalah FAILED_NOT_VISIBLE.
FAILED_CAA_CHECKING Penyediaan sertifikat gagal karena ada masalah konfigurasi pada data CAA domain Anda. Pastikan Anda telah mengikuti prosedur yang benar.
FAILED_CAA_FORBIDDEN Penyediaan sertifikat gagal karena data CAA domain Anda tidak menentukan CA yang perlu digunakan Google Cloud. Pastikan Anda telah mengikuti prosedur yang benar.
FAILED_RATE_LIMITED Penyediaan sertifikat gagal karena Certificate Authority memiliki permintaan penandatanganan sertifikat yang dibatasi kapasitasnya. Anda dapat menyediakan sertifikat baru, beralih menggunakan sertifikat baru, dan menghapus sertifikat sebelumnya, atau Anda dapat menghubungi Dukungan Google Cloud.

Perpanjangan sertifikat terkelola

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.

Memecahkan masalah sertifikat SSL yang dikelola sendiri

Panduan ini menjelaskan cara memecahkan masalah konfigurasi untuk sertifikat SSL yang dikelola sendiri.

Sertifikat tidak dapat diuraikan

Google Cloud memerlukan sertifikat dalam format PEM. Jika sertifikat berformat PEM, periksa hal-hal berikut:

Anda dapat memvalidasi sertifikat menggunakan perintah OpenSSL berikut, dengan mengganti CERTIFICATE_FILE dengan jalur ke file sertifikat Anda:

openssl x509 -in CERTIFICATE_FILE -text -noout

Jika OpenSSL tidak dapat mengurai sertifikat Anda:

Nama umum atau nama alternatif subjek tidak ada

Google Cloud mewajibkan sertifikat Anda untuk memiliki atribut nama umum (CN) atau nama alternatif subjek (SAN). Lihat Membuat CSR untuk informasi tambahan.

Jika kedua atribut tersebut tidak ada, Google Cloud akan menampilkan pesan error seperti berikut saat Anda mencoba membuat sertifikat yang dikelola sendiri:

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The SSL certificate is missing a Common Name(CN) or Subject Alternative
   Name(SAN).

Kunci pribadi tidak dapat diuraikan

Google Cloud memerlukan kunci pribadi berformat PEM yang memenuhi kriteria kunci pribadi.

Anda dapat memvalidasi kunci pribadi menggunakan perintah OpenSSL berikut, yang mengganti PRIVATE_KEY_FILE dengan jalur ke kunci pribadi Anda:

    openssl rsa -in PRIVATE_KEY_FILE -check

Respons berikut menunjukkan masalah pada kunci pribadi Anda:

  • unable to load Private Key
  • Expecting: ANY PRIVATE KEY
  • RSA key error: n does not equal p q
  • RSA key error: d e not congruent to 1
  • RSA key error: dmp1 not congruent to d
  • RSA key error: dmq1 not congruent to d
  • RSA key error: iqmp not inverse of q

Untuk memperbaiki masalah ini, Anda harus membuat sertifikat dan kunci pribadi baru.

Kunci pribadi dengan frasa sandi

Jika OpenSSL meminta frasa sandi, Anda harus menghapus frasa sandi dari kunci pribadi sebelum dapat menggunakannya dengan Google Cloud. Anda dapat menggunakan perintah OpenSSL berikut:

openssl rsa -in PRIVATE_KEY_FILE \
    -out REPLACEMENT_PRIVATE_KEY_FILE

Ganti placeholder dengan nilai yang valid:

  • PRIVATE_KEY_FILE: Jalur ke kunci pribadi Anda yang dilindungi dengan frasa sandi
  • REPLACEMENT_PRIVATE_KEY_FILE: Jalur tempat Anda ingin menyimpan salinan kunci pribadi teks biasa

Masa berlaku sertifikat perantara akan habis

Jika masa berlaku sertifikat perantara berakhir sebelum sertifikat server (leaf), ini mungkin menunjukkan bahwa CA Anda tidak mengikuti praktik terbaik.

Saat masa berlaku intermediate certificate berakhir, leaf certificate Anda yang digunakan di Google Cloud mungkin menjadi tidak valid. Proses ini bergantung pada klien SSL, sebagai berikut:

  • Beberapa klien SSL hanya melihat waktu habis masa berlaku sertifikat leaf dan mengabaikan sertifikat perantara yang telah habis masa berlakunya.
  • Beberapa klien SSL menganggap rantai dengan sertifikat perantara yang sudah tidak berlaku sebagai tidak valid dan menampilkan peringatan.

Untuk menyelesaikan masalah ini:

  1. Tunggu hingga CA beralih ke intermediate certificate baru.
  2. Minta sertifikat baru dari mereka.
  3. Upload ulang sertifikat baru dengan kunci baru.

CA Anda mungkin juga mengizinkan penandatanganan silang untuk sertifikat perantara. Hubungi CA Anda untuk mengonfirmasi.

Eksponen publik RSA terlalu besar

Pesan error berikut akan muncul jika eksponen publik RSA lebih besar dari 65537. Pastikan untuk menggunakan 65537, seperti yang ditentukan dalam RFC 4871.

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The RSA public exponent is too large.

Menghapus sertifikat SSL dari target-proxy

Langkah-langkah berikut menunjukkan cara menghapus satu sertifikat SSL yang dilampirkan ke proxy https target:

  1. Ekspor target-https-proxy ke file sementara.

    gcloud compute target-https-proxies export TARGET_PROXY_NAME > /tmp/proxy
    
  2. Edit file /tmp/proxy dan hapus baris berikut:

    sslCertificates:
    -   https://www.googleapis.com/compute/v1/projects/...
    
  3. Impor file /tmp/proxy.

    gcloud compute target-https-proxies import TARGET_PROXY_NAME \
       --source=/tmp/proxy
    
  4. Opsional: Hapus sertifikat SSL.

    gcloud compute ssl-certificates delete SSL_CERT_NAME
    

Ganti kode berikut:

  • TARGET_PROXY_NAME: nama resource proxy https target.
  • SSL_CERT_NAME: nama sertifikat SSL.