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 kebijakan penerbitan sertifikat lebih lanjut, 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 cara 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 tambahkan 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 informasi selengkapnya, lihat Penggunaan kunci.

  1. Untuk memilih penggunaan kunci dasar, klik tombol Tentukan penggunaan kunci dasar untuk sertifikat yang diterbitkan 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. Kebijakan 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 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 akan diizinkan.

  1. Untuk memilih penggunaan kunci yang diperpanjang, klik tombol Tulis penggunaan kunci yang diperpanjang untuk sertifikat yang diterbitkan 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 menyertakan informasi tentang cara identitas divalidasi sebelum penerbitan sertifikat, cara sertifikat dicabut, dan cara integritas kumpulan CA dijamin. 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. 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 mendeskripsikan 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 ditetapkan ke true, sertifikat dapat digunakan untuk menandatangani sertifikat lain. Jika false, sertifikat adalah sertifikat entitas akhir dan tidak dapat menandatangani sertifikat lain. Jika mengklik tombol ini, Anda akan diminta lebih lanjut untuk menentukan batasan nama untuk ekstensi dalam sertifikat CA.

  3. Sertakan konfigurasi untuk mendeskripsikan ekstensi X.509 pembatasan panjang jalur: Tentukan setelan yang mengontrol panjang rantai sertifikat, yang berasal dari sertifikat tertentu. Jika panjang jalur penerbit maksimum ditetapkan ke 0, CA hanya dapat menerbitkan sertifikat entitas akhir. Jika ditetapkan ke 1, rantai di bawah sertifikat CA ini hanya dapat menyertakan satu CA subordinasi. 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 kumpulan CA, lakukan hal berikut:

  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.

gcloud

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

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

    identityConstraints:
      allowSubjectPassthrough: true
      allowSubjectAltNamesPassthrough: true
    

    Dengan keterangan:

    • Kolom allowSubjectPassthrough wajib diisi. Jika kolom allowSubjectPassthrough ditetapkan ke true, kolom subjek akan disalin dari permintaan sertifikat ke sertifikat yang ditandatangani. Jika tidak, Subjek yang diminta akan dihapus.
    • Jika kolom allowSubjectAltNamesPassthrough ditetapkan ke true, ekstensi SubjectAltNames akan disalin dari permintaan sertifikat ke dalam sertifikat yang ditandatangani. Jika tidak, SubjectAltNames yang diminta akan dihapus.
  2. Untuk memperbarui kebijakan penerbitan sertifikat kumpulan CA 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 kumpulan CA.
    • LOCATION: lokasi kumpulan CA. Untuk mengetahui daftar lengkap lokasi, lihat Lokasi.
    • FILE_PATH: jalur file policy.yaml.

    Untuk 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 pemberian sertifikat kustom.

Membatasi atau memaksa 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, menimpa nilai apa pun yang diminta, dengan menggunakan kolom baseline_values.

Nilai baseline_values kumpulan CA memungkinkan Anda menentukan properti berikut:

Anda juga dapat menggunakan opsi ini secara bersamaan.

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

  • Contoh: Batasi CA agar hanya menerbitkan 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: Batasi CA agar hanya menerbitkan sertifikat penandatanganan kode entitas akhir dengan URL OCSP AIA dasar pengukuran.

    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 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 Subject dan SAN, lihat Menggunakan CEL.

  • Contoh Mengizinkan CA hanya menerbitkan sertifikat yang cocok dengan Subject 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 di-resolve sebelum sertifikat ditandatangani. Untuk informasi selengkapnya tentang penggunaan ekspresi CEL, lihat Menggunakan CEL.

  • Contoh: Hanya izinkan SAN yang memiliki Nama DNS sebagai us.google.org atau berakhir 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 dimulai 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 berakhiran 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 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 dari masa berlaku maksimum, masa berlaku sertifikat akan dipotong 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 dari nilai yang diminta. Beberapa organisasi mungkin lebih memilih untuk menambahkan batasan pada opsi yang dapat digunakan karena metode terakhir tidak memerlukan bukti kepemilikan kunci pribadi terkait. Anda dapat menetapkan batasan ini menggunakan kolom allowedIssuanceModes.

Untuk mengetahui informasi selengkapnya tentang cara menentukan cara sertifikat dapat diminta 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 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, maka 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 ingin menggunakan kunci RSA dengan ukuran modulus kurang dari 2048 bit, Anda harus mengizinkannya secara eksplisit menggunakan kebijakan penerbitan sertifikat.

Contoh: Mengizinkan kunci RSA dengan ukuran modulus antara 3072 bit dan 4096 bit (inklusif), atau kunci Elliptic Curve Digital Signature Algorithm (ECDSA) melalui 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 - Tanda Tangan Digital Kurva Eliptik pada kurva NIST P-256.
  • ECDSA_P384 - Tanda Tangan Digital Kurva Eliptik pada kurva NIST P-384.
  • EDDSA_25519 - Algoritma Tanda Tangan Digital kurva Edwards pada kurva 25519, seperti yang dijelaskan dalam RFC 8410.

Langkah berikutnya