Membuat kumpulan CA

Halaman ini menjelaskan cara membuat kumpulan certificate authority (CA).

Kumpulan CA adalah kumpulan beberapa CA dengan kebijakan penerbitan sertifikat umum serta kebijakan Identity and Access Management (IAM). Kumpulan CA memudahkan pengelolaan rotasi CA dan memungkinkan Anda mencapai total kueri efektif per detik (QPS) yang lebih tinggi.

Anda harus membuat kumpulan CA sebelum dapat menggunakan Certificate Authority Service untuk membuat CA. Untuk informasi selengkapnya, lihat Ringkasan kumpulan CA.

Sebelum memulai

Pastikan Anda memiliki peran IAM CA Service Operation Manager (roles/privateca.caManager). Untuk mengetahui informasi tentang pemberian IAM ke akun utama, lihat Memberikan satu peran.

Menentukan setelan kumpulan CA

Bagian ini menjelaskan setelan kumpulan CA dan memberikan rekomendasi untuk menentukan setelannya.

Setelan kumpulan CA permanen

Setelan kumpulan CA berikut tidak dapat diubah setelah membuat kumpulan CA.

Location

Tentukan lokasi kumpulan CA. Kumpulan CA disimpan dalam satu lokasi Google Cloud. Sebaiknya buat kumpulan CA di lokasi yang sama atau di dekat lokasi tempat Anda ingin menggunakannya.

Untuk mengetahui daftar lengkap lokasi yang didukung, lihat Lokasi.

Tingkat

Pilih apakah Anda ingin membuat kumpulan CA dengan DevOps atau tingkat Enterprise. Pilihan ini akan memengaruhi apakah CA Service mempertahankan sertifikat yang dibuat, apakah sertifikat yang dibuat nantinya dapat dicabut, dan tingkat maksimum Anda dapat membuat sertifikat dari CA dalam kumpulan CA. Untuk mengetahui informasi selengkapnya, lihat Memilih tingkat operasi.

Setelan kumpulan CA opsional

Kebijakan penerbitan sertifikat

Kumpulan CA dapat memiliki kebijakan penerbitan sertifikat. Kebijakan penerbitan ini memberikan batasan pada sertifikat yang boleh diterbitkan oleh CA dalam kumpulan CA. Anda dapat memperbarui kebijakan penerbitan kumpulan CA setelah membuat kumpulan CA. Untuk mengetahui informasi selengkapnya, lihat Ringkasan template dan kebijakan penerbitan.

Untuk informasi selengkapnya tentang cara mengonfigurasi kebijakan penerbitan sertifikat, lihat Menambahkan kebijakan penerbitan sertifikat ke kumpulan CA.

Opsi publikasi

Anda dapat mengonfigurasi kumpulan CA untuk memublikasikan sertifikat CA bagi setiap CA-nya. Saat menerbitkan sertifikat, URL ke sertifikat CA ini disertakan dalam sertifikat sebagai ekstensi akses informasi otoritas (AIA).

CA dalam kumpulan CA tingkat Enterprise dapat diizinkan untuk memublikasikan daftar pencabutan sertifikat (CRL) ke bucket Cloud Storage terkait. Saat menerbitkan sertifikat, URL ke CRL ini disertakan dalam sertifikat sebagai ekstensi CRL Distribution Point (CDP). Anda tidak dapat menemukan CRL tanpa ekstensi CDP dalam sertifikat. Untuk informasi selengkapnya, lihat Mencabut sertifikat.

Anda juga dapat memilih format encoding sertifikat CA dan CRL yang dipublikasikan. Format encoding yang didukung adalah Privacy Enhanced Mail (PEM) dan Distinguished Encoding Rules (DER). Jika format encoding tidak ditentukan, PEM akan digunakan.

Jika Anda membuat kumpulan CA menggunakan Google Cloud CLI atau Google Cloud Console, CA Service akan mengaktifkan opsi publikasi ini secara default. Untuk informasi selengkapnya, lihat Menonaktifkan publikasi CRL dan sertifikat CA untuk CA dalam kumpulan CA.

Membuat kumpulan CA

Untuk membuat kumpulan CA, gunakan petunjuk berikut:

Konsol

Memilih nama untuk kumpulan CA

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

    Buka Certificate Authority Service

  2. Klik Pengelola kumpulan CA.

  3. Klik Buat kumpulan.

  4. Tambahkan nama untuk kumpulan CA yang unik untuk region tersebut.

  5. Pilih wilayah dari drop-down di kolom Wilayah. Untuk mengetahui informasi selengkapnya, lihat Memilih lokasi terbaik.

  6. Pilih tingkat Enterprise atau DevOps. Untuk mengetahui informasi selengkapnya, lihat Memilih tingkat operasi.

  7. Klik Next.

Mengonfigurasi algoritma dan ukuran utama yang diizinkan

CA Service memungkinkan Anda memilih algoritma penandatanganan untuk kunci Cloud KMS yang mendukung CA dalam kumpulan CA. Semua algoritma kunci diizinkan secara default.

Untuk membatasi kunci yang diizinkan dalam sertifikat yang diterbitkan oleh kumpulan CA, lakukan hal berikut. Ini adalah prosedur opsional.

  1. Klik tombol.
  2. Klik Tambahkan item.
  3. Dalam daftar Jenis, pilih jenis kunci.

    Jika Anda ingin menggunakan kunci RSA, lakukan hal berikut:

    1. Opsional: Tambahkan ukuran modulus minimum dalam bit.
    2. Opsional: Tambahkan ukuran modulus maksimum dalam bit.
    3. Klik Done.

    Jika Anda ingin menggunakan kunci kurva eliptis, lakukan hal berikut:

    1. Opsional: Pada daftar Elliptic curve type, pilih jenis kurva eliptik.
    2. Klik Done.
  4. Untuk menambahkan kunci lain yang diizinkan, klik Tambahkan item, dan ulangi Langkah 2.

  5. Klik Next.

Mengonfigurasi metode permintaan sertifikat

Untuk membatasi metode yang dapat digunakan pemohon sertifikat untuk meminta sertifikat dari kumpulan CA, lakukan hal berikut:

  1. Opsional: Untuk membatasi permintaan sertifikat berbasis CSR, klik tombol.
  2. Opsional: Untuk membatasi permintaan sertifikat berbasis konfigurasi, klik tombol.

Mengonfigurasi opsi publikasi

Untuk mengonfigurasi opsi publikasi, lakukan hal berikut:

  1. Opsional: Untuk melarang publikasi sertifikat CA ke bucket Cloud Storage untuk CA dalam kumpulan CA, klik tombol.
  2. Opsional: Untuk melarang publikasi CRL ke bucket Cloud Storage untuk CA dalam kumpulan CA, klik tombol.
  3. Klik menu untuk memilih format encoding untuk sertifikat CA dan CRL yang dipublikasikan.

    Mengonfigurasi opsi publikasi sertifikat CA dan CRL untuk CA dalam kumpulan CA.

  4. Klik Next.

Mengonfigurasi batasan identitas

Untuk mengonfigurasi batasan pada subjek dan SAN di sertifikat yang ditangani oleh kumpulan CA, lakukan hal berikut:

  1. Opsional: Untuk mencegah subjek dalam permintaan sertifikat diteruskan, klik tombol.
  2. Opsional: Untuk melarang nama alternatif subjek dalam permintaan sertifikat diteruskan, klik tombol.
  3. Opsional: Tambahkan ekspresi Common Expression Language (CEL) untuk membatasi subjek sertifikat. Untuk informasi selengkapnya, lihat Menggunakan CEL.
  4. Klik Next.
Mengonfigurasi batasan ekstensi

Untuk melarang semua ekstensi dari permintaan sertifikat disertakan dalam sertifikat yang diterbitkan, klik tombol.

Setelah mengklik tombol, Anda akan melihat kolom Known certificate extensions yang dapat digunakan untuk memilih ekstensi sertifikat. Untuk memilih ekstensi sertifikat, lakukan langkah berikut:

  1. Opsional: Klik kolom Known certificate extensions, lalu hapus ekstensi yang tidak diperlukan dari menu.
  2. Opsional: Di kolom Ekstensi kustom, tambahkan ID objek untuk ekstensi yang ingin Anda sertakan dalam sertifikat yang dikeluarkan oleh kumpulan CA.
Mengonfigurasi nilai dasar pengukuran

Untuk mengonfigurasi nilai dasar pengukuran dalam sertifikat yang diterbitkan dari kumpulan CA, lakukan hal berikut:

  1. Klik tombol.
  2. Klik Konfigurasi nilai dasar pengukuran.
Menentukan penggunaan kunci dasar

Anda dapat menggunakan setelan ini untuk mengonfigurasi cara penggunaan kunci yang terdapat dalam sertifikat. Opsi untuk penggunaan kunci meliputi enkripsi kunci, enkripsi data, penandatanganan sertifikat, penandatanganan CRL, dan lain-lain.

Untuk informasi selengkapnya, lihat Penggunaan kunci

Untuk menentukan penggunaan kunci dasar, lakukan hal berikut:

  1. Opsional: Di jendela yang muncul, klik tombol, jika Anda ingin menentukan penggunaan kunci dasar untuk sertifikat.
  2. Pilih kotak centang untuk cara menggunakan tombol yang Anda inginkan.
  3. Pilih cara tingkat tinggi di mana Anda ingin kunci digunakan.
  4. Klik Next.
Menentukan penggunaan kunci yang diperpanjang

Anda dapat menggunakan setelan ini untuk memilih skenario yang lebih terperinci agar kunci yang terdapat dalam sertifikat dapat digunakan. Opsi tersebut mencakup autentikasi server, autentikasi klien, penandatanganan kode, perlindungan email, dan banyak lagi.

Penggunaan kunci yang diperpanjang ditentukan menggunakan ID objek (OID). Jika Anda tidak mengonfigurasi penggunaan kunci yang diperpanjang, semua skenario penggunaan kunci akan diizinkan.

Untuk mengetahui informasi selengkapnya, lihat Penggunaan kunci yang diperpanjang.

Untuk menentukan penggunaan kunci yang diperpanjang, lakukan hal berikut:

  1. Opsional: Untuk menentukan penggunaan kunci yang diperpanjang untuk sertifikat yang dikeluarkan oleh kumpulan CA, klik tombolnya.
  2. Pilih kotak centang untuk skenario penggunaan kunci yang diperpanjang.
  3. Klik Next.
Menentukan ID kebijakan

Ekstensi kebijakan sertifikat dalam sertifikat mengungkapkan kebijakan yang diikuti oleh kumpulan CA penerbit. Ekstensi ini dapat mencakup informasi tentang cara identitas divalidasi sebelum penerbitan sertifikat, cara pencabutan sertifikat, dan cara memastikan integritas kumpulan CA. Ekstensi ini membantu Anda memverifikasi sertifikat yang diterbitkan oleh kumpulan CA dan melihat cara sertifikat digunakan.

Untuk informasi selengkapnya, lihat Kebijakan sertifikat.

Untuk menetapkan kebijakan yang menentukan penggunaan sertifikat, lakukan hal berikut:

  1. Opsional: Tambahkan ID kebijakan di kolom ID kebijakan.
  2. Klik Next.
Menambahkan server OCSP Akses informasi Authority (AIA)

Ekstensi AIA dalam sertifikat memberikan informasi berikut:

  • Alamat server OCSP tempat Anda dapat memeriksa status pencabutan sertifikat.
  • Metode akses untuk penerbit sertifikat.

Untuk mengetahui informasi selengkapnya, lihat Akses informasi otoritas.

Untuk menambahkan server OCSP yang muncul di kolom ekstensi AIA di sertifikat, lakukan hal berikut. Prosedur berikut bersifat opsional.

  1. Opsional: Klik Tambahkan item.
  2. Di kolom URL Server, tambahkan URL server OCSP.
  3. Klik Done.
  4. Klik Next.
Mengonfigurasi ekstensi tambahan

Untuk mengonfigurasi ekstensi kustom tambahan agar disertakan dalam sertifikat yang diterbitkan oleh kumpulan CA, lakukan hal berikut. Prosedur berikut bersifat opsional.

  1. Klik Tambahkan item.
  2. Di kolom Object identifier, tambahkan ID objek valid yang diformat sebagai digit yang dipisahkan titik.
  3. Di kolom Nilai, tambahkan nilai yang dienkode base64 untuk ID.
  4. Jika ekstensi bersifat penting, pilih Ekstensi sangat penting.

Untuk menyimpan semua konfigurasi nilai dasar pengukuran, klik Selesai.

Untuk membuat kumpulan CA, klik Selesai.

gcloud

Jalankan perintah berikut:

gcloud privateca pools create POOL_NAME

Ganti POOL_NAME dengan nama kumpulan CA.

Jika Anda tidak menentukan tingkat yang diperlukan untuk kumpulan CA, tingkat Enterprise akan dipilih secara default. Jika ingin menentukan tingkat untuk kumpulan CA Anda, jalankan perintah gcloud berikut:

gcloud privateca pools create POOL_NAME --tier=TIER_NAME

Ganti kode berikut:

  • POOL_NAME: Nama kumpulan CA Anda.
  • TIER_NAME: devops atau enterprise. Untuk mengetahui informasi selengkapnya, lihat Memilih tingkat operasi.

Jika Anda tidak menentukan format encoding publikasi untuk kumpulan CA, format encoding publikasi PEM akan dipilih secara default. Jika ingin menentukan format encoding publikasi untuk kumpulan CA, jalankan perintah gcloud berikut:

gcloud privateca pools create POOL_NAME --publishing-encoding-format=PUBLISHING_ENCODING_FORMAT

Ganti kode berikut:

  • POOL_NAME: Nama kumpulan CA Anda.
  • PUBLISHING_ENCODING_FORMAT: PEM atau DER.

Untuk mengetahui informasi lebih lanjut tentang perintah gcloud privateca pools create, lihat gcloud privateca pool create.

Untuk mengetahui informasi tentang cara menerapkan batasan pada jenis sertifikat yang dapat diterbitkan oleh kumpulan CA, lihat Menambahkan kebijakan penerbitan sertifikat ke kumpulan CA.

Terraform

resource "google_privateca_ca_pool" "default" {
  name     = "ca-pool"
  location = "us-central1"
  tier     = "ENTERPRISE"
  publishing_options {
    publish_ca_cert = true
    publish_crl     = true
  }
  labels = {
    foo = "bar"
  }
}

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"
)

// Create a Certificate Authority pool. All certificates created under this CA pool will
// follow the same issuance policy, IAM policies, etc.
func createCaPool(w io.Writer, projectId string, location string, caPoolId 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"		// A unique id/name for the ca pool.

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

	caPool := &privatecapb.CaPool{
		// Set the tier (see: https://cloud.google.com/certificate-authority-service/docs/tiers).
		Tier: privatecapb.CaPool_ENTERPRISE,
	}

	locationPath := fmt.Sprintf("projects/%s/locations/%s", projectId, location)

	// See https://pkg.go.dev/cloud.google.com/go/security/privateca/apiv1/privatecapb#CreateCaPoolRequest.
	req := &privatecapb.CreateCaPoolRequest{
		Parent:   locationPath,
		CaPoolId: caPoolId,
		CaPool:   caPool,
	}

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

	if _, err = op.Wait(ctx); err != nil {
		return fmt.Errorf("CreateCaPool failed during wait: %w", err)
	}

	fmt.Fprintf(w, "CA Pool created")

	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.CaPool;
import com.google.cloud.security.privateca.v1.CaPool.IssuancePolicy;
import com.google.cloud.security.privateca.v1.CaPool.Tier;
import com.google.cloud.security.privateca.v1.CertificateAuthorityServiceClient;
import com.google.cloud.security.privateca.v1.CertificateIdentityConstraints;
import com.google.cloud.security.privateca.v1.CreateCaPoolRequest;
import com.google.cloud.security.privateca.v1.LocationName;
import com.google.longrunning.Operation;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateCaPool {

  public static void main(String[] args)
      throws InterruptedException, ExecutionException, IOException {
    // 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: Set a unique poolId for the CA pool.
    String project = "your-project-id";
    String location = "ca-location";
    String poolId = "ca-pool-id";
    createCaPool(project, location, poolId);
  }

  // Create a Certificate Authority Pool. All certificates created under this CA pool will
  // follow the same issuance policy, IAM policies,etc.,
  public static void createCaPool(String project, String location, String poolId)
      throws InterruptedException, ExecutionException, IOException {
    // 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()) {

      IssuancePolicy issuancePolicy = IssuancePolicy.newBuilder()
          .setIdentityConstraints(CertificateIdentityConstraints.newBuilder()
              .setAllowSubjectPassthrough(true)
              .setAllowSubjectAltNamesPassthrough(true)
              .build())
          .build();

      /* Create the pool request
        Set Parent which denotes the project id and location.
        Set the Tier (see: https://cloud.google.com/certificate-authority-service/docs/tiers).
      */
      CreateCaPoolRequest caPoolRequest =
          CreateCaPoolRequest.newBuilder()
              .setParent(LocationName.of(project, location).toString())
              .setCaPoolId(poolId)
              .setCaPool(
                  CaPool.newBuilder()
                      .setIssuancePolicy(issuancePolicy)
                      .setTier(Tier.ENTERPRISE)
                      .build())
              .build();

      // Create the CA pool.
      ApiFuture<Operation> futureCall =
          certificateAuthorityServiceClient.createCaPoolCallable().futureCall(caPoolRequest);
      Operation response = futureCall.get();

      if (response.hasError()) {
        System.out.println("Error while creating CA pool !" + response.getError());
        return;
      }

      System.out.println("CA pool created successfully: " + poolId);
    }
  }
}

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 create_ca_pool(project_id: str, location: str, ca_pool_name: str) -> None:
    """
    Create a Certificate Authority pool. All certificates created under this CA pool will
    follow the same issuance policy, IAM policies,etc.,

    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: a unique name for the ca pool.
    """

    caServiceClient = privateca_v1.CertificateAuthorityServiceClient()

    ca_pool = privateca_v1.CaPool(
        # Set the tier (see: https://cloud.google.com/certificate-authority-service/docs/tiers).
        tier=privateca_v1.CaPool.Tier.ENTERPRISE,
    )
    location_path = caServiceClient.common_location_path(project_id, location)

    # Create the pool request.
    request = privateca_v1.CreateCaPoolRequest(
        parent=location_path,
        ca_pool_id=ca_pool_name,
        ca_pool=ca_pool,
    )

    # Create the CA pool.
    operation = caServiceClient.create_ca_pool(request=request)

    print("Operation result:", operation.result())

REST API

  1. Membuat kumpulan CA.

    Metode HTTP dan URL:

    POST https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/caPools\?ca_pool_id=POOL_ID

    Meminta isi JSON:

    {
    "tier": "ENTERPRISE"
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
     "name": "projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID",
     "metadata": {...},
     "done": false
    }
    

  2. Polling operasi sampai selesai.

    Operasi selesai jika properti done operasi yang berjalan lama ditetapkan ke true.

    Metode HTTP dan URL:

    GET https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
     "name": "projects/PROJECT_ID/locations/LOCATION/operations/operation-UUID",
     "metadata": {...},
     "done": true,
     "response": {
       "@type": "type.googleapis.com/google.cloud.security.privateca.v1.CaPool",
       "name": "...",
       "tier": "ENTERPRISE"
     }
    }
    

Menambahkan atau memperbarui label pada kumpulan CA

Label adalah pasangan nilai kunci yang membantu Anda mengatur resource Layanan CA. Anda dapat memfilter resource berdasarkan labelnya.

Untuk menambahkan atau memperbarui label pada kumpulan CA, lakukan hal berikut:

Konsol

Untuk menambahkan label, lakukan langkah-langkah berikut:

  1. Buka halaman Certificate Authority Service.

    Buka Certificate Authority Service

  2. Di tab Pengelola kumpulan CA, pilih kumpulan CA.

  3. Klik Label.

  4. Klik Tambahkan label.

  5. Tambahkan pasangan nilai kunci.

  6. Klik Save.

    Menambahkan label ke kumpulan CA yang ada.

Untuk mengedit label yang ada, lakukan langkah-langkah berikut:

  1. Buka halaman Certificate Authority Service.

    Buka Certificate Authority Service

  2. Di tab Pengelola kumpulan CA, pilih kumpulan CA.

  3. Klik Label.

  4. Edit nilai label.

  5. Klik Save.

gcloud

Jalankan perintah berikut:

gcloud privateca pools update POOL_ID --update-labels foo=bar

Ganti POOL_ID dengan nama kumpulan CA.

Langkah selanjutnya