Mencabut sertifikat

Dokumen ini menjelaskan cara mencabut sertifikat menggunakan Certificate Authority Service. Mencabut sertifikat akan membatalkannya sebelum tanggal habis masa berlakunya, sehingga mencegah sertifikat tersebut digunakan untuk autentikasi. Anda dapat mencabut sertifikat jika kunci pribadinya disusupi, sertifikat digantikan oleh sertifikat baru, atau sertifikat tidak lagi diperlukan (seperti saat layanan yang sertifikatnya diterbitkan dihentikan).

Dokumen ini ditujukan untuk audiens dalam grup operator aplikasi, seperti developer aplikasi atau ilmuwan data, yang mengelola siklus proses sertifikat dalam project mereka. Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC yang terisolasi dari internet.

Tentang pencabutan sertifikat

CA Service mendukung pencabutan sertifikat dengan memublikasikan Daftar Pencabutan Sertifikat (CRL). CRL adalah daftar nomor seri sertifikat yang telah dicabut dan tidak lagi dipercaya. Secara default, CRL baru dipublikasikan setiap 15 menit. Selain itu, setiap pencabutan sertifikat yang berhasil akan otomatis memicu pembuatan CRL baru.

Sertifikat yang diterbitkan oleh Layanan CA mencakup ekstensi yang disebut Titik Distribusi CRL (CDP). Ekstensi ini berisi URL tempat Anda dapat menemukan dan mendownload CRL untuk sertifikat tersebut. Aplikasi klien menggunakan URL ini untuk mengambil CRL dan memeriksa apakah nomor seri sertifikat ada. Jika nomor seri muncul dalam daftar, sertifikat dianggap tidak valid, dan koneksi harus ditolak.

Sebelum memulai

Sebelum mencabut sertifikat, pastikan Anda memiliki izin yang diperlukan dan file kubeconfig.

Izin yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mencabut sertifikat, minta Admin IAM Organisasi Anda untuk memberi Anda peran CA Service Operation Manager (certificate-authority-service-operation-manager). Untuk mengetahui informasi selengkapnya tentang peran, lihat Definisi peran.

Dapatkan file kubeconfig

Untuk menjalankan perintah terhadap server Management API, lakukan hal berikut:

  1. Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.

  2. Gunakan jalur ke file kubeconfig server Management API untuk mengganti MANAGEMENT_API_SERVER_KUBECONFIG dalam petunjuk ini.

Mencabut sertifikat

Metode untuk mencabut sertifikat bergantung pada apakah otoritas sertifikat (CA) penerbit telah mengaktifkan mode ACME. Setelah Anda mencabut sertifikat, nomor serinya akan muncul di semua CRL mendatang untuk CA tersebut hingga masa berlaku sertifikat berakhir.

Mencabut sertifikat dari CA yang mendukung ACME

Setiap CA yang mendukung ACME akan menampilkan URL server ACME yang unik dalam statusnya setelah siap. Untuk mencabut sertifikat dari CA yang mendukung ACME, Anda harus menggunakan alat klien ACME untuk berinteraksi dengan URL ini menggunakan protokol ACME.

Mencabut sertifikat dari CA yang mendukung ACME:

  1. Ambil URL server ACME untuk CA Anda:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      get certificateauthorities CA_NAME \
      -n USER_PROJECT_NAMESPACE \
      -ojson | jq -r '.status.acme.uri'
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER_KUBECONFIG: Jalur ke file kubeconfig server Management API.
    • CA_NAME: Nama CA yang mendukung ACME (root atau subordinat).
    • USER_PROJECT_NAMESPACE: Namespace project.
  2. Gunakan URL yang diperoleh dengan alat klien ACME pilihan Anda untuk mengeluarkan permintaan pencabutan. Lihat dokumentasi untuk klien ACME spesifik Anda guna mengetahui detailnya.

Mencabut sertifikat dari CA yang tidak mengaktifkan ACME

Jika mode ACME dinonaktifkan di CA, cabut sertifikat dengan membuat dan menerapkan resource kustom RevokeCertificateRequest:

  1. Buat file YAML resource kustom RevokeCertificateRequest (seperti revoke-cert-request.yaml):

    apiVersion: pki.security.gdc.goog/v1
    kind: RevokeCertificateRequest
    metadata:
      name: REVOKE_CERT_REQ_NAME
      namespace: USER_PROJECT_NAMESPACE
    spec:
      certificateRequestRef:
        name: CERT_REQ_NAME
        namespace: USER_PROJECT_NAMESPACE
      reason: REASON
    

    Ganti kode berikut:

    • REVOKE_CERT_REQ_NAME: Nama yang ditentukan pengguna untuk permintaan pencabutan.
    • USER_PROJECT_NAMESPACE: Namespace project.
    • CERT_REQ_NAME: Nama resource CertificateRequest yang terkait dengan sertifikat yang ingin Anda cabut.
    • REASON: Alasan pencabutan. Berikut adalah alasan yang valid: Unspecified, KeyCompromise, CaCompromise, AffiliationChanged, Superseded, CessationOfOperation, CertificateHold, RemoveFromCrl, PrivilegeWithdrawn, dan AaCompromise.
  2. Terapkan resource kustom:

    kubectl apply -f revoke-cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
    

    Ganti MANAGEMENT_API_SERVER_KUBECONFIG dengan jalur ke file kubeconfig server Management API.

  3. Verifikasi kesiapan permintaan pencabutan sertifikat:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      -n USER_PROJECT_NAMESPACE \
      get revokecertificaterequest.pki.security.gdc.goog/REVOKE_CERT_REQ_NAME \
      -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER_KUBECONFIG: Jalur ke file kubeconfig server Management API.
    • USER_PROJECT_NAMESPACE: Namespace project.
    • REVOKE_CERT_REQ_NAME: Nama untuk permintaan pencabutan.

    Outputnya terlihat mirip dengan yang berikut ini:

    {
      "lastTransitionTime": "2025-08-19T23:20:22Z",
      "message": "RevokeCertificateRequest reconciled",
      "observedGeneration": 1,
      "reason": "Ready",
      "status": "True",
      "type": "Ready"
    }
    

    Proses selesai dan nomor seri sertifikat ditambahkan ke CRL yang dibuat berikutnya.

Mencantumkan permintaan sertifikat yang dicabut

Mencantumkan semua resource RevokeCertificateRequest dalam namespace project:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
  -n USER_PROJECT_NAMESPACE \
  get revokecertificaterequests

Ganti kode berikut:

  • MANAGEMENT_API_SERVER_KUBECONFIG: Jalur ke file kubeconfig server Management API.
  • USER_PROJECT_NAMESPACE: Namespace project.

Outputnya terlihat mirip dengan yang berikut ini:

NAMESPACE    NAME                      READY   AGE
foo          revoke-cert-req           True    30s