Membuat kumpulan CA

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

Kumpulan CA adalah kumpulan beberapa CA dengan kebijakan penerbitan sertifikat umum dan 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 Layanan Certificate Authority untuk membuat CA. Untuk mengetahui informasi selengkapnya, lihat Ringkasan kumpulan CA.

Sebelum memulai

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

Menentukan setelan kumpulan CA

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

Setelan kumpulan CA permanen

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

Lokasi

Tentukan lokasi kumpulan CA. Kumpulan CA disimpan di satu lokasi Google Cloud. Sebaiknya Anda membuat 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 tingkat DevOps atau Enterprise. Pilihan ini memengaruhi apakah Layanan CA mempertahankan sertifikat yang dibuat, apakah sertifikat yang dibuat nantinya dapat dicabut, dan kecepatan maksimum saat Anda dapat membuat sertifikat dari CA di kumpulan CA. Untuk informasi selengkapnya, lihat Memilih tingkat operasi.

Setelan kumpulan CA opsional

Kebijakan penerbitan sertifikat

Kumpulan CA dapat memiliki kebijakan penerbitan sertifikat. Kebijakan penerbitan ini menempatkan batasan pada sertifikat yang diizinkan untuk 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 untuk 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 Titik Distribusi CRL (CDP). Anda tidak dapat menemukan CRL tanpa ekstensi CDP dalam sertifikat. Untuk informasi selengkapnya, lihat Cabut 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 konsol Google Cloud, Layanan CA akan mengaktifkan opsi publikasi ini secara default. Untuk mengetahui informasi selengkapnya, lihat Menonaktifkan publikasi sertifikat CA dan CRL 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.

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

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

  7. Klik Berikutnya.

Mengonfigurasi algoritma dan ukuran kunci yang diizinkan

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

Untuk membatasi kunci yang diizinkan dalam sertifikat yang dikeluarkan 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 elips, lakukan tindakan berikut:

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

  5. Klik Berikutnya.

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 di kumpulan CA, klik tombol.
  3. Klik menu untuk memilih format encoding untuk sertifikat CA dan CRL yang dipublikasikan.

    Konfigurasikan opsi publikasi untuk sertifikat CA dan CRL untuk CA di kumpulan CA.

  4. Klik Berikutnya.

Mengonfigurasi nilai dasar pengukuran

Untuk mengonfigurasi nilai dasar pengukuran dalam sertifikat yang dikeluarkan 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 kunci yang terdapat dalam sertifikat dapat digunakan. Opsi untuk penggunaan kunci mencakup enkripsi kunci, enkripsi data, penandatanganan sertifikat, penandatanganan CRL, dan lainnya.

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. Centang kotak untuk cara penggunaan kunci yang Anda inginkan.
  3. Pilih cara tingkat tinggi yang Anda inginkan untuk penggunaan kunci.
  4. Klik Berikutnya.
Menentukan penggunaan kunci yang diperpanjang

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

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

Untuk informasi selengkapnya, lihat Extended key usage.

Untuk menentukan penggunaan kunci yang diperpanjang, lakukan hal berikut:

  1. Opsional: Untuk menentukan penggunaan kunci yang diperpanjang untuk sertifikat yang diterbitkan kumpulan CA, klik tombol.
  2. Centang kotak untuk skenario penggunaan kunci yang diperpanjang.
  3. Klik Berikutnya.
Menentukan ID kebijakan

Ekstensi kebijakan sertifikat dalam sertifikat menyatakan kebijakan yang diikuti oleh kumpulan CA penerbit. Ekstensi ini dapat menyertakan informasi tentang cara identitas divalidasi sebelum penerbitan sertifikat, cara sertifikat dicabut, dan cara integritas kumpulan CA dipastikan. Ekstensi ini membantu Anda memverifikasi sertifikat yang diterbitkan kumpulan CA dan melihat cara sertifikat digunakan.

Untuk mengetahui informasi selengkapnya, lihat Kebijakan sertifikat.

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

  1. Opsional: Tambahkan ID kebijakan di kolom ID kebijakan.
  2. Klik Berikutnya.
Menambahkan server OCSP Akses informasi otoritas (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 dalam sertifikat, lakukan hal berikut. Prosedur berikut bersifat opsional.

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

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

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

Untuk menyimpan semua konfigurasi nilai dasar pengukuran, klik Done.

Mengonfigurasi batasan ekstensi

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

Setelah mengklik tombol, Anda akan melihat kolom Ekstensi sertifikat yang diketahui yang dapat Anda gunakan untuk memilih ekstensi sertifikat. Untuk memilih ekstensi sertifikat, lakukan hal berikut:

  1. Opsional: Klik kolom Known certificate extensions, lalu hapus ekstensi yang tidak diperlukan dari menu.
  2. Opsional: Di kolom Custom extensions, tambahkan ID objek untuk ekstensi yang ingin disertakan dalam sertifikat yang diterbitkan oleh kumpulan CA.
Mengonfigurasi batasan identitas

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

  1. Opsional: Untuk melarang 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 menerapkan pembatasan pada subjek sertifikat. Untuk informasi selengkapnya, lihat Menggunakan CEL.
  4. Klik Berikutnya.

Untuk mempelajari cara mengonfigurasi parameter tambahan dalam kebijakan penerbitan sertifikat, lihat IssuancePolicy.

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 Anda ingin menentukan tingkat untuk kumpulan CA, 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 Anda 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 selengkapnya tentang perintah gcloud privateca pools create, lihat gcloud privateca pools create.

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

// 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 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.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 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 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. Buat 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. Lakukan polling pada operasi hingga selesai.

    Operasi selesai saat 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 di 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 di 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 Simpan.

    Tambahkan 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 Simpan.

gcloud

Jalankan perintah berikut:

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

Ganti POOL_ID dengan nama kumpulan CA.

Langkah selanjutnya