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 Identity and Access Management (IAM) Certificate Authority Service Operation Manager (roles/privateca.caManager) atau CA Service Admin (roles/privateca.admin). Untuk mengetahui informasi selengkapnya tentang peran IAM bawaan untuk Layanan CA, lihat Kontrol akses dengan IAM.

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

Mengaktifkan publikasi CRL

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

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 di kumpulan CA, lakukan hal berikut:

Konsol

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

    Certificate Authority Service

  2. Klik tab CA Pool Manager.

  3. Klik kumpulan CA yang ingin Anda edit atau klik kumpulan CA yang memiliki CA yang ingin Anda edit.

  4. Di halaman CA pool, klik Edit.

  5. Klik Berikutnya hingga Anda mencapai bagian Configure publishing options.

  6. Klik tombol Publikasikan CRL ke bucket GCS untuk CA dalam kumpulan ini.

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 pools update.

CA Service menerapkan batas 500.000 sertifikat yang dicabut dan 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 serial dan alasan pencabutannya akan muncul di semua CRL mendatang hingga sertifikat mencapai tanggal habis masa berlakunya. CRL out-of-band juga dibuat dalam waktu 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 Pengelola sertifikat pribadi.
  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 pencabutan sertifikat.

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

    gcloud privateca certificates revoke --help
    

    Untuk informasi selengkapnya tentang perintah gcloud privateca certificates revoke, lihat gcloud privateca certificates revoke.

  • 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 pencabutan sertifikat.

    Untuk informasi selengkapnya tentang perintah gcloud privateca certificates revoke, lihat gcloud privateca certificates revoke.

    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 melakukan autentikasi ke Layanan CA, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat 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 melakukan autentikasi ke Layanan CA, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat 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 melakukan autentikasi ke Layanan CA, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat 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