Halaman ini menjelaskan langkah-langkah untuk meminta sertifikat menggunakan Certificate Authority Service.
Untuk membangun kepercayaan dan komunikasi yang aman dalam lingkungan air-gapped Google Distributed Cloud (GDC), minta sertifikat yang mendukung atau tidak mendukung ACME dari Certificate Authority Service.
Sebelum memulai
Sebelum Anda dapat meminta sertifikat, pastikan Anda memiliki izin yang diperlukan dan file kubeconfig.
Izin yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk meminta sertifikat, minta Admin IAM Organisasi Anda untuk memberi Anda peran CA Service Certificate Requester (certificate-authority-service-certificate-requester). Untuk mengetahui informasi selengkapnya tentang peran, lihat Definisi peran.
Dapatkan file kubeconfig
Untuk menjalankan perintah terhadap server Management API, lakukan hal berikut:
Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.
Gunakan jalur ke file kubeconfig server Management API untuk mengganti
MANAGEMENT_API_SERVER_KUBECONFIGdalam petunjuk ini.
Meminta sertifikat menggunakan CA dengan mode ACME diaktifkan
Jika dihosting dalam mode ACME, Certificate Authority akan menampilkan URL server ACME dalam statusnya setelah siap.
Kumpulkan URL server ACME CA dari lingkungan Distributed Cloud Anda:
kubectl get certificateauthorities CA_NAME -n USER_PROJECT_NAMESPACE -ojson | jq -r '.status.acme.uri'
Ganti kode berikut:
CA_NAME: Nama CA, yang dapat berupa CA root atau sub-CA.USER_PROJECT_NAMESPACE: Nama namespace tempat project pengguna berada.
Meminta sertifikat menggunakan CA dengan mode ACME dinonaktifkan
Untuk membuat permintaan sertifikat dengan mode ACME dinonaktifkan, Anda harus membuat dan menerapkan resource CertificateRequest ke instance Distributed Cloud yang terisolasi dari internet. Ada dua cara untuk melakukannya:
- Buat
CertificateResourcedan sertakan CSR dalam resource. - Buat
CertificateResourcemenggunakan kunci pribadi yang dibuat otomatis GDC dan berikan konfigurasi sertifikat sebagai nilai kustom.
Meminta sertifikat menggunakan CSR
Buat resource
CertificateRequestdan simpan sebagai file YAML bernamacert-request.yaml. Gunakan kunci pribadi Anda untuk membuat Permintaan Penandatanganan Sertifikat (CSR) dan tambahkan ke resource Anda.Atau, Anda dapat menerbitkan sertifikat dengan serangkaian parameter X.509 yang telah dikonfigurasi sebelumnya dengan memasukkan nama template ke dalam kolom
certificateTemplate.apiVersion: pki.security.gdc.goog/v1 kind: CertificateRequest metadata: name: CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE spec: certificateAuthorityRef: name: CA_NAME namespace: USER_PROJECT_NAMESPACE csr: CSR certificateTemplate: TEMPLATE_NAME signedCertificateSecret: SECRET_NAME notBefore: VALIDITY_START_TIME notAfter: VALIDITY_END_TIME subjectOverride: SUBJECT_OVERRIDEGanti variabel berikut:
Variabel Deskripsi CERT_REQ_NAME Nama sertifikat. USER_PROJECT_NAMESPACE Nama namespace tempat project pengguna berada. CA_NAME Nama CA, yang dapat berupa CA root atau sub-CA. CSR Permintaan Penandatanganan Sertifikat untuk menandatangani menggunakan CA. SECRET_NAME Nama Secret Kubernetes yang menyimpan kunci pribadi dan sertifikat CA yang ditandatangani. Ganti variabel opsional berikut:
Variabel Deskripsi TEMPLATE_NAME Nama template sertifikat standar yang ingin Anda gunakan. Untuk melihat daftar template yang tersedia dan detail terkait konflik, lihat Template sertifikat standar. VALIDITY_START_TIME Waktu mulai sertifikat dianggap valid. Nilai ini harus dalam format YYYY-MM-DDTHH:MM:SSZ(misalnya,2025-10-19T21:45:30Z). Jika tidak ditetapkan, sertifikat akan valid segera setelah diterbitkan.VALIDITY_END_TIME Waktu saat masa berlaku sertifikat berakhir. Nilai ini harus dalam format YYYY-MM-DDTHH:MM:SSZ(misalnya,2026-01-17T18:25:40Z). Jika tidak ditetapkan, masa berlaku sertifikat akan berakhir 90 hari setelah waktu dimulainya.SUBJECT_OVERRIDE Subjek kustom yang akan digunakan dalam sertifikat yang diterbitkan, menggantikan informasi subjek dalam CSR. Berikan nilai ini sebagai subjek X.509 yang dienkode DER ASN.1 mentah. Terapkan resource kustom ke instance Distributed Cloud Anda:
kubectl apply -f cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGGanti
MANAGEMENT_API_SERVER_KUBECONFIGdengan jalur ke file kubeconfig server Management API.Verifikasi kesiapan permintaan sertifikat:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'Outputnya mirip dengan hal berikut ini:
{ "lastTransitionTime": "2025-01-27T12:22:59Z", "message": "Certificate is issued", "observedGeneration": 1, "reason": "Issued", "status": "True", "type": "Ready" }Dapatkan nama rahasia sertifikat:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r '.spec.signedCertificateSecret'Output menampilkan
SECRET_NAMEyang berisi sertifikat yang ditandatangani:test-jwk-1
Meminta sertifikat menggunakan kunci yang dibuat secara otomatis
Buat resource
CertificateRequestdan simpan sebagai file YAML bernamacert-request.yaml. Isi nilai yang dipilih untuk sertifikat.Atau, Anda dapat menerbitkan sertifikat dengan serangkaian parameter X.509 yang telah dikonfigurasi sebelumnya dengan memasukkan nama template ke dalam kolom
certificateTemplate.apiVersion: pki.security.gdc.goog/v1 kind: CertificateRequest metadata: name: CERT_REQ_NAME namespace: USER_PROJECT_NAMESPACE spec: certificateAuthorityRef: name: CA_NAME namespace: USER_PROJECT_NAMESPACE certificateConfig: subjectConfig: commonName: COMMON_NAME organization: ORGANIZATION locality: LOCALITY state: STATE country: COUNTRY dnsNames: - DNS_NAMES ipAddresses: - IP_ADDRESSES rfc822Names: - RFC822NAMES uris: - URIS certificateTemplate: TEMPLATE_NAME signedCertificateSecret: SECRET_NAME notBefore: VALIDITY_START_TIME notAfter: VALIDITY_END_TIME subjectOverride: SUBJECT_OVERRIDEGanti variabel berikut:
Variabel Deskripsi CERT_REQ_NAME Nama sertifikat. USER_PROJECT_NAMESPACE Nama namespace tempat project pengguna berada. CA_NAME Nama CA, yang dapat berupa CA root atau sub-CA. SECRET_NAME Nama Secret Kubernetes yang menyimpan kunci pribadi dan sertifikat CA yang ditandatangani. Ganti variabel opsional berikut. Anda harus menyertakan setidaknya salah satu kolom dari blok
spec.certificateConfig.subjectConfigpada resourceCertificateRequest:Variabel Deskripsi COMMON_NAME Nama umum sertifikat. ORGANIZATION Organisasi yang akan digunakan pada sertifikat. LOCALITY Lokalitas sertifikat. STATE Negara Bagian atau Provinsi yang akan digunakan pada sertifikat. COUNTRY Negara sertifikat. DNS_NAMES DNSNamesadalah daftardNSName subjectAltNamesyang akan ditetapkan pada sertifikat.IP_ADDRESS Daftar ipAddress subjectAltNamesyang akan ditetapkan pada sertifikat.RFC822_NAMES Daftar rfc822Name subjectAltNamesyang akan ditetapkan pada sertifikat.URIS Daftar uniformResourceIdentifier subjectAltNamesyang akan ditetapkan pada sertifikat.TEMPLATE_NAME Nama template sertifikat standar yang ingin Anda gunakan. Untuk melihat daftar template yang tersedia dan detail terkait konflik, lihat Template sertifikat standar. VALIDITY_START_TIME Waktu mulai sertifikat dianggap valid. Nilai ini harus dalam format YYYY-MM-DDTHH:MM:SSZ(misalnya,2025-10-19T21:45:30Z). Jika tidak ditetapkan, sertifikat akan valid segera setelah diterbitkan.VALIDITY_END_TIME Waktu saat masa berlaku sertifikat berakhir. Nilai ini harus dalam format YYYY-MM-DDTHH:MM:SSZ(misalnya,2026-01-17T18:25:40Z). Jika tidak ditetapkan, masa berlaku sertifikat akan berakhir 90 hari setelah waktu dimulainya.SUBJECT_OVERRIDE Subjek kustom yang akan digunakan dalam sertifikat yang diterbitkan, menggantikan informasi subjek dalam CSR. Berikan nilai ini sebagai subjek X.509 yang dienkode DER ASN.1 mentah. Terapkan resource kustom ke instance Distributed Cloud Anda:
kubectl apply -f cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGVerifikasi kesiapan permintaan sertifikat:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'Outputnya mirip dengan hal berikut ini:
{ "lastTransitionTime": "2025-01-27T12:22:59Z", "message": "Certificate is issued", "observedGeneration": 1, "reason": "Issued", "status": "True", "type": "Ready" }Dapatkan nama rahasia sertifikat:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequest.pki.security.gdc.goog/CERT_REQ_NAME -ojson | jq -r '.spec.signedCertificateSecret'Output menampilkan
SECRET_NAMEyang berisi sertifikat yang ditandatangani:test-jwk-1
Mencantumkan permintaan sertifikat
Gunakan parameter certificaterequests untuk mencantumkan semua resource CertificateRequest:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificaterequests
Outputnya terlihat mirip dengan yang berikut ini:
NAMESPACE NAME READY AGE
foo cert-req True 30s