Membuat template sertifikat
Halaman ini menjelaskan atribut template sertifikat dan menjelaskan cara membuat template sertifikat.
Ringkasan template sertifikat
Layanan Otoritas Sertifikasi menyediakan template yang dapat digunakan kembali dan berparameter yang dapat Anda gunakan untuk skenario penerbitan sertifikat umum. Template sertifikat mewakili skema penerbitan sertifikat yang relatif statis dan ditetapkan dengan baik dalam organisasi. Resource CertificateTemplate
mencakup hal berikut.
- Ekspresi Common Expression Language (CEL) yang dievaluasi terhadap subjek dan SAN yang diminta di semua permintaan sertifikat yang menggunakan template. Untuk mengetahui informasi selengkapnya tentang penggunaan CEL, lihat Menggunakan CEL.
- Daftar yang diizinkan yang menentukan apakah subjek atau nama alternatif subjek dapat disalin dari permintaan pengguna akhir ke sertifikat yang diterbitkan.
- Daftar yang diizinkan opsional yang menentukan ekstensi X.509 mana, jika ada, yang dapat disalin dari permintaan pengguna akhir ke sertifikat yang diterbitkan.
- Kumpulan nilai ekstensi X.509 opsional yang ditambahkan ke semua sertifikat yang diterbitkan yang menggunakan template.
Template sertifikat pada dasarnya dapat menjadi framework penerbitan sertifikat vertikal yang lengkap. Untuk mengetahui detail selengkapnya, lihat definisi pesan CertificateTemplate lengkap.
Nilai standar dalam template sertifikat
Nilai standar dalam template sertifikat ditambahkan ke semua sertifikat yang menggunakan template sertifikat. API ini memungkinkan pembuatan skenario penerbitan sertifikat umum, seperti mTLS atau penandatanganan kode. Nilainya mencakup hal berikut:
- Penggunaan kunci: Menentukan penggunaan kunci dasar untuk sertifikat sesuai dengan RFC 5280 bagian 4.2.1.12.
- Extended key usages: Menentukan extended key usage untuk sertifikat sesuai dengan RFC 5280 bagian 4.2.1.3.
- Jika sertifikat adalah CA: Menentukan apakah sertifikat dapat menerbitkan sertifikat tambahan atau apakah sertifikat tersebut adalah sertifikat entitas akhir.
- Panjang jalur penerbit maksimum: Untuk CA, kolom ini menentukan jumlah maksimum CA yang dapat dirantai ke sertifikat CA ini. 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 subordinat. Jika nilai tidak dideklarasikan, jumlah CA subordinat dalam rantai di bawah CA ini tidak terbatas.
- Server OCSP AIA: Mengacu pada server OCSP dalam ekstensi Akses Informasi Otoritas (AIA) sertifikat, seperti yang dijelaskan dalam RFC 5280 bagian 4.2.2.1.
- Ekstensi X.509 tambahan: Menjelaskan ekstensi X.509 kustom.
Contoh kode berikut menyebutkan semua kolom standar dalam template sertifikat:
keyUsage:
baseKeyUsage:
digitalSignature: true
keyEncipherment: true
contentCommitment: false
dataEncipherment: false
keyAgreement: false
certSign: false
crlSign: false
encipherOnly: false
decipherOnly: false
extendedKeyUsage:
serverAuth: true
clientAuth: false
codeSigning: false
emailProtection: false
timeStamping: false
ocspSigning: false
caOptions:
isCa: true
maxIssuerPathLength: 1
policyIds:
- objectIdPath:
- 1
- 2
- 3
additionalExtensions:
- objectId:
objectIdPath:
- 1
- 2
- 3
critical: false
value: "base64 encoded extension value"
Nilai yang tidak ditentukan dalam YAML akan dihilangkan atau ditetapkan secara default ke false
.
Ekstensi berikut dihilangkan jika nilai tidak ditentukan:
keyUsage
policyIds
additionalExtensions
- Kolom
maxIssuerPathLength
di ekstensicaOptions
Ekstensi berikut ditetapkan secara default ke false
jika nilai tidak ditentukan:
- Kolom
isCa
di ekstensicaOptions
Membuat template sertifikat
Untuk membuat template sertifikat, gunakan perintah gcloud
berikut:
gcloud
gcloud privateca templates create TEMPLATE_ID \
--copy-subject \
--copy-sans \
--identity-cel-expression <expr> \
--predefined-values-file FILE_PATH \
--copy-all-requested-extensions \
--copy-extensions-by-oid <1.2.3.4,5.6.7.8> \
--copy-known-extensions <ext1,ext2>
Ganti kode berikut:
- TEMPLATE_ID: ID unik template sertifikat.
- FILE_PATH: file YAML yang menjelaskan nilai X.509 yang ditetapkan oleh template sertifikat.
Flag --copy-sans
memungkinkan ekstensi Subject Alternative Name (SAN) dari permintaan sertifikat disalin ke sertifikat yang ditandatangani. Atau, Anda dapat menentukan --no-copy-sans
untuk menghapus SAN yang ditentukan pemanggil dari permintaan sertifikat.
Flag --copy-subject
memungkinkan Subjek dari permintaan sertifikat disalin ke dalam sertifikat yang ditandatangani. Atau, Anda dapat menentukan --no-copy-subject
untuk menghapus subjek yang ditentukan pemanggil dari permintaan sertifikat.
Flag --identity-cel-expression
menggunakan ekspresi CEL yang dievaluasi terhadap Subjek dan Nama Alternatif Subjek sertifikat sebelum diterbitkan, dan menampilkan boolean yang menunjukkan apakah permintaan harus diizinkan. Untuk informasi tentang penggunaan ekspresi Common Expression Language (CEL) untuk template sertifikat, lihat Menggunakan CEL untuk template sertifikat.
Flag --predefined-values-file
menentukan jalur ke file YAML yang menjelaskan nilai X.509 standar yang ditetapkan oleh template ini. Ekstensi yang diberikan akan disalin ke permintaan sertifikat apa pun yang menggunakan template ini, yang lebih diprioritaskan daripada ekstensi yang diizinkan dalam permintaan sertifikat. Jika Anda memperbarui bagian mana pun dari nilai X.509 yang telah ditentukan sebelumnya, pembaruan akan mengganti seluruh kumpulan nilai X.509 yang telah ditentukan sebelumnya.
Jika tanda --copy-all-requested-extensions
ditetapkan, semua ekstensi yang ditentukan dalam permintaan sertifikat akan disalin ke sertifikat yang ditandatangani. Atau, tanda --copy-extensions-by-oid
dapat digunakan untuk menyalin OID tertentu dari permintaan sertifikat ke dalam sertifikat yang ditandatangani dan tanda --copy-known-extensions
dapat digunakan untuk menyalin ekstensi dari permintaan sertifikat ke dalam sertifikat yang ditandatangani. Harus berupa salah satu dari: base-key-usage
, extended-key-usage
, ca-options
, policy-ids
, aia-ocsp-servers
.
Hapus tanda --copy-all-requested-extensions
untuk mengabaikan semua ekstensi X.509 dalam permintaan sertifikat, tetapi tetap mempertahankan nilai standar yang ditentukan dalam template ini.
Membuat template sertifikat untuk skenario umum
Bagian ini menyediakan perintah gcloud
untuk membuat template sertifikat untuk kasus penggunaan umum.
Sertifikat TLS server DNS untuk domain apa pun
Untuk membuat template sertifikat guna menerbitkan sertifikat TLS server yang mengizinkan domain apa pun, gunakan petunjuk berikut:
Buat file dengan nama
leaf_server_tls_values.yaml
dan tambahkan konfigurasi TLS server entitas akhir berikut ke dalamnya:leaf_server_tls_values.yaml
keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: serverAuth: true caOptions: isCa: false
Untuk hanya mengizinkan sertifikat dengan SAN jenis
DNS
, jalankan perintahgcloud
berikut:gcloud
gcloud privateca templates create server-tls \ --predefined-values-file leaf_server_tls_values.yaml \ --copy-sans --no-copy-subject \ --identity-cel-expression "subject_alt_names.all(san, san.type == DNS)"
Untuk mengetahui informasi selengkapnya tentang perintah
gcloud privateca templates create
, lihat gcloud privateca templates create.
Sertifikat TLS server DNS hanya dengan domain pengujian
Untuk membuat template sertifikat guna menerbitkan sertifikat TLS server dengan SAN DNS yang terbatas untuk domain pengujian, gunakan perintah gcloud
berikut:
gcloud
gcloud privateca templates create server-tls \
--predefined-values-file leaf_server_tls_values.yaml \
--copy-sans --no-copy-subject \
--identity-cel-expression "subject_alt_names.all(san, san.type == DNS && san.value.endsWith('.test.example.com'))"
Isi file leaf_server_tls_values.yaml
harus sama dengan contoh sebelumnya.
Untuk mengetahui informasi selengkapnya tentang penggunaan ekspresi CEL untuk memastikan nama DNS dimulai atau diakhiri dengan string tertentu, lihat Contoh ekspresi CEL.
Sertifikat Workload Identity
Untuk membuat template sertifikat guna menerbitkan sertifikat TLS (mTLS) bersama, gunakan petunjuk berikut:
Buat file dengan nama
leaf_mtls_values.yaml
dan tambahkan konfigurasi TLS mufakat entitas akhir berikut ke dalamnya.leaf_mtls_values.yaml
keyUsage: baseKeyUsage: digitalSignature: true keyEncipherment: true extendedKeyUsage: serverAuth: true clientAuth: true caOptions: isCa: false
Untuk hanya mengizinkan sertifikat dengan SAN URI SPIFFE, gunakan perintah
gcloud
berikut:gcloud
gcloud privateca templates create workload-spiffe \ --predefined-values-file leaf_mtls_values.yaml \ --copy-sans --no-copy-subject \ --identity-cel-expression "subject_alt_names.all(san, san.type == URI && san.value.startsWith('spiffe://'))"
Untuk mengetahui informasi selengkapnya tentang perintah
gcloud privateca templates create
, lihat gcloud privateca templates create.
Untuk mengetahui informasi selengkapnya tentang penggunaan ekspresi CEL untuk memastikan nama DNS dimulai atau diakhiri dengan string tertentu, lihat Contoh ekspresi CEL.
Memberikan akses ke template sertifikat
Anda dapat menggunakan template sertifikat jika memiliki peran CA Service Certificate Template User (roles/privateca.templateUser
). Sebaiknya penulis template sertifikat memberikan peran Pengguna Template Sertifikat Layanan CA kepada anggota di organisasi yang mungkin menggunakan template sertifikat tersebut.
Untuk memberikan peran Pengguna Template Sertifikat Layanan CA (roles/privateca.templateUser
) kepada semua orang di domain example.com
, gunakan perintah gcloud
berikut:
gcloud
gcloud privateca templates add-iam-policy-binding TEMPLATE_ID \
--member "domain:example.com" \
--role "roles/privateca.templateUser"
Ganti kode berikut:
- TEMPLATE_ID: ID unik template sertifikat.
Untuk informasi selengkapnya tentang perintah gcloud privateca templates add-iam-policy-binding
, lihat gcloud privateca templates add-iam-policy-binding.
Untuk mengetahui informasi selengkapnya tentang peran IAM untuk Layanan CA, dan izin terkaitnya, lihat Kontrol akses dengan IAM.
Langkah selanjutnya
- Pelajari Common Expression Language.
- Pelajari cara menggunakan Common Expression Language.
- Pelajari profil sertifikat.