Memecahkan masalah sertifikat SSL

Prosedur pemecahan masalah bergantung pada jenis sertifikat SSL yang digunakan.

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 sedang 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 Anda diterapkan di seluruh internet. Jika Anda baru-baru ini memperbarui konfigurasi DNS, mungkin perlu waktu yang cukup lama agar perubahan tersebut diterapkan sepenuhnya. Terkadang propagasi memerlukan waktu hingga 72 jam di seluruh dunia, meskipun biasanya memerlukan waktu beberapa jam. Untuk mengetahui informasi selengkapnya tentang penerapan DNS, lihat Penerapan perubahan.

Jika sertifikat tetap dalam status PROVISIONING, pastikan sertifikat yang benar 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 perlu waktu tambahan 30 menit agar tersedia untuk digunakan oleh load balancer.
PROVISIONING_FAILED Anda mungkin melihat PROVISIONING_FAILED sebentar meskipun sertifikat Anda sebenarnya ACTIVE. Periksa kembali statusnya.

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

Google Cloud akan mencoba lagi penyediaan hingga berhasil atau status 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 mencoba lagi penyediaan.

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

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

Jika statusnya tetap RENEWAL_FAILED, sediakan sertifikat baru, beralihlah untuk 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 dikelola sertifikat juga ACTIVE.
FAILED_NOT_VISIBLE

Penyediaan sertifikat belum selesai untuk domain. 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 Anda.

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

  • Data DNS A dan AAAA yang baru diperbarui dapat memerlukan waktu yang cukup lama untuk diterapkan sepenuhnya. Terkadang, penyebaran di seluruh internet memerlukan waktu hingga 72 jam di seluruh dunia, meskipun biasanya memerlukan waktu beberapa jam. Status domain akan terus menjadi FAILED_NOT_VISIBLE hingga propagasi selesai.
  • Sertifikat SSL tidak dilampirkan ke proxy target load balancer. Untuk mengatasi masalah ini, update konfigurasi load balancer Anda.
  • Port frontend untuk aturan penerusan global tidak menyertakan 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. Masalah ini dapat diatasi dengan melepas peta sertifikat dari proxy.
  • Jika status terkelola adalah PROVISIONING, Google Cloud akan terus mencoba lagi penyediaan, meskipun status domainnya adalah FAILED_NOT_VISIBLE.
FAILED_CAA_CHECKING Penyediaan sertifikat gagal karena 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 Otoritas Sertifikasi memiliki permintaan penandatanganan sertifikat dengan pembatasan kapasitas. Anda dapat menyediakan sertifikat baru, beralih untuk menggunakan sertifikat baru, dan menghapus sertifikat sebelumnya, atau Anda dapat menghubungi Dukungan Google Cloud.

Perpanjangan sertifikat terkelola

Jika ada domain atau subdomain dalam sertifikat terkelola yang tidak mengarah ke alamat IP load balancer, atau mengarah ke IP bersama dengan 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 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 memiliki salah satu atribut nama umum (CN) atau nama alternatif subjek (SAN). Lihat Membuat CSR untuk mengetahui informasi tambahan.

Jika kedua atribut 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, dengan 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 kunci pribadi dan sertifikat 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 intermediate certificate akan segera berakhir

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

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

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

Untuk menyelesaikan masalah ini:

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

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

Eksponen publik RSA terlalu besar

Pesan error berikut muncul saat 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.