Menambahkan kebijakan penerbitan sertifikat

Menambahkan kebijakan penerbitan sertifikat di Layanan CA melibatkan penentuan aturan dan batasan yang mengatur jenis sertifikat yang diterbitkan oleh certificate authority (CA). Untuk mempelajari lebih lanjut kebijakan penerbitan sertifikat, lihat Tentang kebijakan penerbitan sertifikat.

Kebijakan penerbitan sertifikat memungkinkan Anda menentukan subjek dan nama alternatif subjek (SAN) yang dapat disertakan dalam sertifikat yang diterbitkan. Anda dapat menentukan kebijakan penerbitan sertifikat saat membuat kumpulan CA atau Anda dapat memperbarui kumpulan CA yang ada untuk menambahkan kebijakan penerbitan.

Untuk mengetahui informasi selengkapnya, lihat Ringkasan template dan kebijakan penerbitan.

Sebelum memulai

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

  • Buat kumpulan CA.

Anda dapat menambahkan kebijakan penerbitan sertifikat ke kumpulan CA saat membuat kumpulan CA atau saat mengupdate kumpulan CA yang ada.

Gunakan salah satu metode berikut:

Konsol

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

  2. Di halaman Pengelola kumpulan CA, klik nama kumpulan CA yang ingin Anda tambahi kebijakan penerbitan sertifikat.

  3. Di halaman CA pool, klik Edit.

Menentukan penggunaan kunci dasar

Setelan ini mengacu pada kolom Key Usage dalam sertifikat digital. Ekstensi ini menentukan cara kunci pribadi sertifikat dapat digunakan, seperti untuk enkripsi kunci, enkripsi data, penandatanganan sertifikat, dan penandatanganan CRL. Untuk mengetahui informasi selengkapnya, lihat Penggunaan kunci.

  1. Untuk memilih penggunaan kunci dasar, klik tombol Tentukan penggunaan kunci dasar untuk sertifikat yang dikeluarkan dari kumpulan CA ini, lalu pilih dari opsi yang tercantum.
  2. Klik Berikutnya.
Menentukan penggunaan kunci yang diperpanjang

Setelan ini mengacu pada kolom Extended Key Usage (EKU) dalam sertifikat digital. Fitur ini memberikan batasan yang lebih spesifik dan lebih baik tentang cara kunci dapat digunakan, seperti untuk autentikasi server, autentikasi klien, penandatanganan kode, dan perlindungan email. Untuk mengetahui informasi selengkapnya, lihat Penggunaan kunci yang diperluas.

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

  1. Untuk memilih penggunaan kunci yang diperpanjang, klik tombol Tulis penggunaan kunci yang diperpanjang untuk sertifikat yang dikeluarkan dari kumpulan CA ini, lalu pilih dari opsi yang tercantum.
  2. Klik Berikutnya.
Menentukan ID kebijakan

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

Untuk mengetahui informasi selengkapnya, lihat Kebijakan sertifikat.

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

  1. 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:

  1. Klik Tambahkan item.
  2. Di kolom Server URL, tambahkan URL server OCSP.
  3. Klik Selesai.
  4. Klik Berikutnya.
Opsi CA

Kolom Opsi CA dalam template sertifikat menentukan cara sertifikat yang dihasilkan dapat digunakan dalam hierarki certificate authority (CA). Opsi CA menentukan apakah sertifikat dapat digunakan untuk menandatangani sertifikat lain dan, jika ya, batasan pada sertifikat yang diterbitkannya.

Pilih dari opsi berikut:

  1. Sertakan konfigurasi untuk menjelaskan ekstensi X.509 CA: Tentukan setelan dalam template sertifikat yang mengontrol ekstensi X.509.

  2. Batasi sertifikat yang diterbitkan agar hanya digunakan untuk CA: Opsi ini hanya muncul jika Anda mencentang kotak yang disebutkan pada langkah sebelumnya. Nilai boolean ini menunjukkan apakah sertifikat adalah sertifikat CA. Jika disetel ke true, sertifikat dapat digunakan untuk menandatangani sertifikat lain. Jika false, sertifikat adalah sertifikat entitas akhir dan tidak dapat menandatangani sertifikat lain. Jika Anda mengklik tombol ini, Anda akan diminta lebih lanjut untuk menentukan batasan nama untuk ekstensi dalam sertifikat CA.

  3. Sertakan konfigurasi untuk menjelaskan ekstensi X.509 pembatasan panjang jalur: Tentukan setelan yang mengontrol durasi rantai sertifikat, yang berasal dari sertifikat tertentu. Jika panjang jalur penerbit maks disetel ke 0, maka CA hanya dapat menerbitkan sertifikat entitas akhir. Jika ditetapkan ke 1, maka rantai di bawah sertifikat CA ini hanya dapat menyertakan satu CA subordinat. Jika nilai tidak dideklarasikan, jumlah CA subordinat dalam rantai di bawah CA ini tidak terbatas.

  4. Klik Berikutnya.
Mengonfigurasi ekstensi tambahan

Untuk mengonfigurasi ekstensi kustom tambahan yang akan disertakan dalam sertifikat yang dikeluarkan oleh CA pool, lakukan hal berikut:

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

Untuk menyimpan semua konfigurasi nilai dasar pengukuran, klik Selesai.

gcloud

Untuk menggunakan Google Cloud CLI guna menambahkan kebijakan penerbitan sertifikat ke CA pool, Anda harus membuat file YAML yang menjelaskan batasan pada sertifikat yang dapat diterbitkan oleh CA pool. Konten sesuai dengan IssuancePolicy.

  1. Menggunakan Cloud Shell Editor, buat file policy.yaml dengan konten berikut:

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: true
    

    Dengan:

    • Kolom allowSubjectPassthrough wajib diisi. Jika kolom allowSubjectPassthrough disetel ke true, kolom subjek disalin dari permintaan sertifikat ke sertifikat yang ditandatangani. Jika tidak, Subjek yang diminta akan dibuang.
    • Jika kolom allowSubjectAltNamesPassthrough ditetapkan ke true, ekstensi SubjectAltNames akan disalin dari permintaan sertifikat ke sertifikat yang ditandatangani. Jika tidak, SubjectAltNames yang diminta akan dibatalkan.
  2. Untuk memperbarui kebijakan penerbitan sertifikat CA pool menggunakan file yang dibuat pada langkah sebelumnya, jalankan perintah berikut:

    gcloud privateca pools update POOL_NAME --location LOCATION --issuance-policy FILE_PATH
    

    Ganti kode berikut:

    • POOL_NAME: nama pool CA.
    • LOCATION: lokasi CA pool. Untuk mengetahui daftar lengkap lokasi, lihat Lokasi.
    • FILE_PATH: jalur file policy.yaml.

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

Batasan yang didukung

Layanan CA mendukung batasan kebijakan penerbitan berikut. Anda dapat menggabungkan batasan berikut sesuai kebutuhan untuk membuat kebijakan penerbitan sertifikat kustom.

Membatasi atau menerapkan nilai X.509 yang diizinkan

Kumpulan CA dapat membatasi nilai X.509 yang diizinkan dalam permintaan sertifikat dengan mengonfigurasi kolom passthrough_extensions.

Kumpulan CA juga dapat secara eksplisit menentukan nilai X.509 yang akan ditambahkan ke semua sertifikat yang diterbitkannya, dengan mengganti nilai yang diminta, menggunakan kolom baseline_values.

Nilai baseline_values kumpulan CA memungkinkan penentuan properti berikut:

Anda juga dapat menggunakan opsi ini bersama-sama.

Jika Anda memperbarui bagian mana pun dari kolom baseline_values, pembaruan akan menggantikan seluruh kumpulan nilai di kolom baseline_values.

  • Contoh: Membatasi CA untuk menerbitkan hanya sertifikat entitas akhir dengan nilai X.509 untuk TLS bersama (mTLS).

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
          keyEncipherment: true
        extendedKeyUsage:
           clientAuth: true
           serverAuth: true
    
  • Contoh: Membatasi CA untuk menerbitkan hanya sertifikat penandatanganan kode entitas akhir dengan URL OCSP AIA dasar.

    policy.yaml

    baselineValues:
      caOptions:
        isCa: false
      keyUsage:
        baseKeyUsage:
          digitalSignature: true
        extendedKeyUsage:
          codeSigning: true
      aiaOcspServers:
        -   "http://foo.bar/revocation"
      additionalExtensions:
      -   objectId:
            objectIdPath:
              -   1
              -   2
              -   3
          critical: false
          value: "base64 encoded extension value"
    

Untuk mengetahui informasi selengkapnya tentang profil sertifikat untuk mTLS entitas akhir, lihat mTLS entitas akhir.

Membatasi kolom identitas yang diizinkan

Untuk membatasi identitas sertifikat yang diterbitkan melalui kumpulan CA, Anda dapat menambahkan ekspresi [Common Expression Language (CEL)][4]{: .external} ke kolom identity_constraints kebijakan penerbitan. Ekspresi CEL memungkinkan pembatasan arbitrer atas Nama Domain Subjek (termasuk nama umum) dan SAN sertifikat.

Untuk mengetahui informasi selengkapnya tentang penggunaan ekspresi CEL untuk membatasi Subjek dan SAN, lihat Menggunakan CEL.

  • Contoh Mengizinkan CA menerbitkan hanya sertifikat yang cocok dengan Subjek yang ditentukan.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: false
      celExpression:
        expression: 'subject.organization == "Example LLC" && subject.country_code in ["US", "UK"]'
    

    Kolom celExpression bersifat opsional. Gunakan ekspresi Common Expression Language (CEL) untuk memvalidasi subjek dan SAN X.509 yang telah diselesaikan sebelum sertifikat ditandatangani. Untuk mengetahui informasi selengkapnya tentang penggunaan ekspresi CEL, lihat Menggunakan CEL.

  • Contoh: Hanya izinkan SAN yang memiliki Nama DNS sebagai us.google.org atau yang diakhiri dengan .google.com.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == DNS && (san.value == "us.google.org" || san.value.endsWith(".google.com")) )'
    
  • Contoh: Hanya izinkan SAN yang memiliki URI https://google.com/webhp atau diawali dengan spiffe://example-trust-domain-1/ns/namespace1/sa/.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == URI && (san.value == "https://google.com/webhp" || san.value.startsWith("spiffe://example-trust-domain-1/ns/namespace1/sa/")) )'
    
  • Contoh: Hanya izinkan SAN yang memiliki alamat email example@google.com atau berakhir dengan @google.org.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == EMAIL && (san.value == "example@google.com" || san.value.endsWith("@google.org")) )'
    
  • Contoh: Hanya izinkan SAN kustom yang memiliki OID tertentu dan nilai kustom.

    policy.yaml

    identityConstraints:
      allowSubjectPassthrough: false
      allowSubjectAltNamesPassthrough: true
      celExpression:
        expression: 'subject_alt_names.all(san, san.type == CUSTOM && san.oid == [1, 2, 3, 4] && san.value == "custom-data" )'
    

Membatasi durasi tanggal mundur sertifikat yang diterbitkan

Untuk menetapkan not_before_time yang lalu untuk sertifikat yang diterbitkan, gunakan kolom backdate_duration. Jika dikonfigurasi, sertifikat dari kumpulan CA ini memiliki not_before_time yang sama dengan waktu penerbitan dikurangi durasi yang ditentukan. not_after_time disesuaikan untuk mempertahankan masa aktif sertifikat yang diminta. backdate_duration harus kurang dari atau sama dengan 48 jam.

Contoh

Untuk memundurkan tanggal sertifikat 1 jam, gunakan file policy.yaml berikut:

policy.yaml

backdateDuration: 3600s

Membatasi masa berlaku maksimum sertifikat yang diterbitkan

Untuk membatasi masa berlaku sertifikat yang diterbitkan, gunakan kolom maximum_lifetime. Jika masa berlaku yang diminta untuk sertifikat lebih besar daripada masa berlaku maksimum, masa berlaku sertifikat akan dipersingkat secara eksplisit.

Contoh

Untuk mengizinkan masa aktif maksimum 30 hari, gunakan file policy.yaml berikut:

policy.yaml

maximumLifetime: 2592000s

Membatasi mode penerbitan sertifikat yang diizinkan

Anda dapat meminta sertifikat melalui Permintaan Penandatanganan Sertifikat (CSR) atau deskripsi inline nilai yang diminta. Beberapa organisasi mungkin lebih memilih untuk menambahkan batasan pada opsi yang dapat digunakan karena metode kedua tidak memerlukan bukti kepemilikan kunci pribadi terkait. Anda dapat menyetel batasan ini menggunakan kolom allowedIssuanceModes.

Untuk mengetahui informasi selengkapnya tentang cara menentukan permintaan sertifikat dari kumpulan CA, lihat IssuanceModes.

Untuk mengetahui informasi selengkapnya tentang cara meminta sertifikat, lihat Membuat permintaan sertifikat.

  • Contoh: Hanya izinkan penerbitan CSR.

policy.yaml

allowedIssuanceModes:
  allowCsrBasedIssuance: True
  allowConfigBasedIssuance: False

Membatasi algoritma kunci publik dari permintaan sertifikat

Untuk membatasi panjang kunci minimum dan algoritma kunci publik yang dapat digunakan sertifikat, Anda dapat menggunakan kolom allowedKeyTypes dalam file YAML kebijakan penerbitan sertifikat. Jika kolom ini ditentukan, kunci publik permintaan sertifikat harus cocok dengan salah satu jenis kunci yang tercantum dalam file YAML. Jika kolom ini tidak ditentukan, Anda dapat menggunakan kunci apa pun, kecuali kunci RSA yang ukuran modulusnya kurang dari 2048 bit. Jika Anda ingin menggunakan kunci RSA dengan ukuran modulus kurang dari 2048 bit, Anda harus mengizinkannya secara eksplisit menggunakan kebijakan penerbitan sertifikat.

Contoh: Izinkan kunci RSA dengan ukuran modulus antara 3072 bit dan 4096 bit (inklusif), atau kunci Elliptic Curve Digital Signature Algorithm (ECDSA) di atas kurva NIST P-256.

policy.yaml

allowedKeyTypes:
-   rsa:
  minModulusSize: 3072
  maxModulusSize: 4096
-   ellipticCurve:
      signatureAlgorithm: ECDSA_P256

Anda dapat memilih salah satu algoritma tanda tangan kurva elips berikut:

  • EC_SIGNATURE_ALGORITHM_UNSPECIFIED - Algoritma tanda tangan apa pun dapat digunakan.
  • ECDSA_P256 - Elliptic Curve Digital Signature melalui kurva NIST P-256.
  • ECDSA_P384 - Elliptic Curve Digital Signature melalui kurva NIST P-384.
  • EDDSA_25519 - Edwards-curve Digital Signature Algorithm melalui curve 25519, seperti yang dijelaskan dalam RFC 8410.

Langkah berikutnya