Cabut sertifikat

Halaman ini menjelaskan cara mencabut sertifikat.

Certificate Authority Service mendukung pencabutan sertifikat dengan memublikasikan Daftar Pencabutan Sertifikat (CRL) secara berkala. Anda hanya dapat mencabut sertifikat yang diterbitkan oleh kumpulan CA di tingkat Enterprise.

Sebelum memulai

Pastikan Anda memiliki peran Certificate Authority Service Operation Manager (roles/privateca.caManager) atau CA Service Admin (roles/privateca.admin) Identity and Access Management (IAM). Untuk mengetahui informasi selengkapnya tentang peran IAM yang telah ditetapkan untuk Layanan CA, lihat Kontrol akses dengan IAM.

Untuk mengetahui informasi tentang cara memberikan peran IAM, lihat Memberikan satu peran.

Aktifkan publikasi CRL

Untuk mencabut sertifikat yang diterbitkan oleh kumpulan CA, Anda harus mengaktifkan publikasi CRL pada kumpulan CA. Anda dapat mengaktifkan publikasi CRL saat membuat kumpulan CA. Jika awalnya dinonaktifkan, Anda dapat mengaktifkan publikasi CRL di lain waktu.

Setelah Anda mengaktifkan publikasi CRL, CRL baru akan dipublikasikan setiap hari dan berlaku selama 7 hari. CRL baru juga dipublikasikan dalam waktu 15 menit setelah pencabutan sertifikat baru.

Untuk mengaktifkan publikasi CRL pada kumpulan CA, lakukan hal berikut:

Konsol

  1. Buka halaman Certificate Authority Service di Konsol Google Cloud.

    Certificate Authority Service

  2. Klik nama CA dari kumpulan CA yang ingin Anda ubah.

  3. Di halaman Otoritas sertifikat, klik Edit Kebijakan.

  4. Di panel kiri yang muncul, klik tombol Publikasikan URL akses untuk daftar pencabutan sertifikat dalam sertifikat yang diterbitkan di bagian Opsi Publikasi.

gcloud

Jalankan perintah berikut:

gcloud privateca pools update POOL_ID \
  --publish-crl

Ganti POOL_ID dengan nama kumpulan CA.

Untuk mengetahui informasi selengkapnya tentang perintah gcloud privateca pools update, lihat gcloud privateca pool update.

CA Service menerapkan batas 500.000 sertifikat yang dicabut yang belum habis masa berlakunya per CRL.

Mencabut sertifikat

CA Service memungkinkan pencabutan sertifikat berdasarkan nomor seri atau nama resource, dan juga menerima alasan opsional. Setelah sertifikat dicabut, nomor seri dan alasan pencabutannya akan muncul di semua CRL mendatang hingga sertifikat mencapai tanggal habis masa berlakunya. CRL out-of-band juga dihasilkan dalam 15 menit setelah pencabutan.

Untuk mencabut sertifikat, gunakan langkah-langkah berikut:

Konsol

  1. Buka halaman Certificate Authority Service di Konsol Google Cloud.

    Buka Certificate Authority Service

  2. Klik tab Private certificate manager.
  3. Dalam daftar sertifikat, klik Lihat lainnya di baris sertifikat yang ingin Anda hapus.
  4. Klik Cabut.
  5. Pada dialog yang terbuka, klik Konfirmasi.

gcloud

  • Untuk mencabut sertifikat menggunakan nama resource-nya, jalankan perintah berikut:

    gcloud privateca certificates revoke \
      --certificate CERT_ID \
      --issuer-pool POOL_ID \
      --reason REVOCATION_REASON
    

    Ganti kode berikut:

    • CERT_ID: ID unik sertifikat yang ingin Anda cabut.
    • POOL_ID: Nama kumpulan CA yang menerbitkan sertifikat.
    • REVOCATION_REASON: Alasan mencabut sertifikat.

    Flag --reason bersifat opsional. Untuk mengetahui informasi selengkapnya tentang tanda ini, lihat --reason, atau gunakan perintah gcloud berikut dengan flag --help:

    gcloud privateca certificates revoke --help
    

    Untuk mengetahui informasi selengkapnya tentang perintah gcloud privateca certificates revoke, lihat gcloud privateca certificate pencabutan sertifikat.

  • Untuk mencabut sertifikat menggunakan nomor serinya, jalankan perintah berikut:

    gcloud privateca certificates revoke \
      --serial-number SERIAL_NUMBER \
      --issuer-pool POOL_ID \
      --reason REVOCATION_REASON
    

    Ganti kode berikut:

    • SERIAL_NUMBER: Nomor seri sertifikat.
    • POOL_ID: Nama kumpulan CA yang menerbitkan sertifikat.
    • REVOCATION_REASON: Alasan mencabut sertifikat.

    Untuk mengetahui informasi selengkapnya tentang perintah gcloud privateca certificates revoke, lihat gcloud privateca certificate pencabutan sertifikat.

    Saat diminta untuk mengonfirmasi, Anda dapat melakukannya dengan memasukkan 'Y':

    You are about to revoke Certificate [projects/PROJECT_ID/locations/CA_POOL_REGION/caPools/POOL_ID/certificates/CERT_ID]
    
    Do you want to continue? (Y/n) Y
    Revoked certificate [projects/PROJECT_ID/locations/CA_POOL_REGION/caPools/POOL_ID/certificates/CERT_ID] at DATE_TIME.
    
    

Go

Untuk mengautentikasi ke CA Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import (
	"context"
	"fmt"
	"io"

	privateca "cloud.google.com/go/security/privateca/apiv1"
	"cloud.google.com/go/security/privateca/apiv1/privatecapb"
)

// Revoke an issued certificate. Once revoked, the certificate will become invalid
// and will expire post its lifetime.
func revokeCertificate(
	w io.Writer,
	projectId string,
	location string,
	caPoolId string,
	certId string) error {
	// projectId := "your_project_id"
	// location := "us-central1"		// For a list of locations, see: https://cloud.google.com/certificate-authority-service/docs/locations.
	// caPoolId := "ca-pool-id"			// The CA Pool id in which the certificate exists.
	// certId := "certificate"			// A unique name for the certificate.

	ctx := context.Background()
	caClient, err := privateca.NewCertificateAuthorityClient(ctx)
	if err != nil {
		return fmt.Errorf("NewCertificateAuthorityClient creation failed: %w", err)
	}
	defer caClient.Close()

	fullCertName := fmt.Sprintf("projects/%s/locations/%s/caPools/%s/certificates/%s", projectId, location,
		caPoolId, certId)

	// Create the RevokeCertificateRequest and specify the appropriate revocation reason.
	// See https://pkg.go.dev/cloud.google.com/go/security/privateca/apiv1/privatecapb#RevokeCertificateRequest.
	req := &privatecapb.RevokeCertificateRequest{
		Name:   fullCertName,
		Reason: privatecapb.RevocationReason_PRIVILEGE_WITHDRAWN,
	}

	_, err = caClient.RevokeCertificate(ctx, req)
	if err != nil {
		return fmt.Errorf("RevokeCertificate failed: %w", err)
	}

	fmt.Fprintf(w, "Certificate %s revoked", certId)

	return nil
}

Java

Untuk mengautentikasi ke CA Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


import com.google.api.core.ApiFuture;
import com.google.cloud.security.privateca.v1.Certificate;
import com.google.cloud.security.privateca.v1.CertificateAuthorityServiceClient;
import com.google.cloud.security.privateca.v1.CertificateName;
import com.google.cloud.security.privateca.v1.RevocationReason;
import com.google.cloud.security.privateca.v1.RevokeCertificateRequest;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class RevokeCertificate {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    // location: For a list of locations, see:
    // https://cloud.google.com/certificate-authority-service/docs/locations
    // poolId: Id for the CA pool which contains the certificate.
    // certificateName: Name of the certificate to be revoked.
    String project = "your-project-id";
    String location = "ca-location";
    String poolId = "ca-pool-id";
    String certificateName = "certificate-name";
    revokeCertificate(project, location, poolId, certificateName);
  }

  // Revoke an issued certificate. Once revoked, the certificate will become invalid and will expire
  // post its lifetime.
  public static void revokeCertificate(
      String project, String location, String poolId, String certificateName)
      throws IOException, ExecutionException, InterruptedException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `certificateAuthorityServiceClient.close()` method on the client to safely
    // clean up any remaining background resources.
    try (CertificateAuthorityServiceClient certificateAuthorityServiceClient =
        CertificateAuthorityServiceClient.create()) {

      // Create Certificate Name.
      CertificateName certificateNameParent =
          CertificateName.newBuilder()
              .setProject(project)
              .setLocation(location)
              .setCaPool(poolId)
              .setCertificate(certificateName)
              .build();

      // Create Revoke Certificate Request and specify the appropriate revocation reason.
      RevokeCertificateRequest revokeCertificateRequest =
          RevokeCertificateRequest.newBuilder()
              .setName(certificateNameParent.toString())
              .setReason(RevocationReason.PRIVILEGE_WITHDRAWN)
              .build();

      // Revoke certificate.
      ApiFuture<Certificate> response =
          certificateAuthorityServiceClient
              .revokeCertificateCallable()
              .futureCall(revokeCertificateRequest);
      Certificate certificateResponse = response.get();

      System.out.println("Certificate Revoked: " + certificateResponse.getName());
    }
  }
}

Python

Untuk mengautentikasi ke CA Service, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


import google.cloud.security.privateca_v1 as privateca_v1

def revoke_certificate(
    project_id: str,
    location: str,
    ca_pool_name: str,
    certificate_name: str,
) -> None:
    """
    Revoke an issued certificate. Once revoked, the certificate will become invalid and will expire post its lifetime.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        location: location you want to use. For a list of locations, see: https://cloud.google.com/certificate-authority-service/docs/locations.
        ca_pool_name: name for the CA pool which contains the certificate.
        certificate_name: name of the certificate to be revoked.
    """

    caServiceClient = privateca_v1.CertificateAuthorityServiceClient()

    # Create Certificate Path.
    certificate_path = caServiceClient.certificate_path(
        project_id, location, ca_pool_name, certificate_name
    )

    # Create Revoke Certificate Request and specify the appropriate revocation reason.
    request = privateca_v1.RevokeCertificateRequest(
        name=certificate_path, reason=privateca_v1.RevocationReason.PRIVILEGE_WITHDRAWN
    )
    result = caServiceClient.revoke_certificate(request=request)

    print("Certificate revoke result:", result)

Langkah selanjutnya