Ringkasan
Panduan ini menjelaskan integrasi Keyfactor EJBCA Enterprise (di-deploy sebagai appliance eksternal) sebagai Otoritas Sertifikat (CA) pihak ketiga untuk Google Distributed Cloud (GDC) yang terisolasi.
Keyfactor EJBCA Enterprise adalah platform Certificate Authority yang sangat skalabel, andal, dan sesuai dengan FIPS yang memungkinkan organisasi mengelola infrastruktur kunci publik (PKI) di seluruh lingkungan heterogen.
GDC dengan air gap mencakup layanan Certificate Authority bawaan untuk pengelolaan kunci dan sertifikat otomatis di dalam batas cloud yang dihosting. Namun, organisasi yang telah menstandardisasi infrastruktur PKI mereka di Keyfactor EJBCA untuk workload yang ada di luar GDC mungkin lebih memilih untuk memanfaatkan arsitektur CA dan kebijakan pengelolaan yang sama dan konsisten untuk workload yang berjalan dalam lingkungan GDC yang terisolasi.
Panduan ini menunjukkan cara mengonfigurasi jaringan GDC, DNS internal, dan cert-manager Kubernetes untuk mengotomatiskan pengelolaan siklus proses sertifikat (ACME) dan mendukung penerbitan terprogram bervolume tinggi menggunakan pola Otoritas Pendaftaran (RA).
Asumsi
Sebelum melanjutkan panduan ini, pastikan asumsi berikut terpenuhi:
- Keyfactor EJBCA di-deploy sebagai appliance software atau appliance hardware, dan alamat IP yang stabil dikonfigurasi untuk layanan tersebut.
- Root, subordinate, dan Certificate Authority (CA) pengelolaan telah dibuat di instance EJBCA.
- Profil Entitas Akhir (EE) telah dikonfigurasi (misalnya, untuk sertifikat server TLS).
- Sertifikat untuk pengguna CA administratif telah didownload.
- Protokol yang diperlukan (seperti ACME) diaktifkan di instance EJBCA.
- Algoritma penandatanganan RSA digunakan dalam panduan ini. Anda dapat mengubah algoritma penandatanganan berdasarkan persyaratan spesifik Anda atau apa yang dikonfigurasi di instance EJBCA Anda.
Arsitektur
Arsitektur ini mengikuti model Otoritas Sertifikat eksternal, di mana server EJBCA dan Modul Keamanan Hardware (HSM) pendukungnya dihosting secara eksternal di luar batas GDC fisik, tetapi dapat diakses melalui jaringan. Server EJBCA dapat di-deploy secara eksternal sebagai appliance hardware atau software. Integrasi inti yang dijelaskan dalam panduan ini hanya memerlukan server EJBCA eksternal dapat dijangkau menggunakan alamat IP yang stabil.

Komponen utama arsitektur ini meliputi:
- EJBCA Enterprise Server: Di-deploy secara eksternal sebagai appliance hardware atau software Keyfactor, yang menyimpan CA (Root dan Subordinat) serta membuat semua materi kunci CA di dalam HSM bersertifikasi CC EAL4+.
- Cluster Kubernetes Standar GDC: Lingkungan komputasi yang menjalankan beban kerja pelanggan, cert-manager, dan proxy integrasi.
- DNS Internal GDC: Mengelola zona DNS pribadi lokal (menggunakan nama domain pribadi yang dikonfigurasi dalam variabel lingkungan) yang digunakan untuk menyelesaikan tantangan ACME DNS-01.
- GDC Egress Gateway: Mengarahkan traffic keluar dari pod cluster ke alamat IP server EJBCA eksternal.
- Harbor Private Registry: Menampung image container yang di-mirror (seperti penerbit cert-manager EJBCA) untuk deployment yang terisolasi.
Sebelum memulai
Pastikan lingkungan GDC Anda memenuhi persyaratan berikut sebelum memulai integrasi:
- Pertama, buat project yang akan berfungsi sebagai penampung untuk semua resource yang dihasilkan di sepanjang panduan ini.
Konfigurasi variabel lingkungan yang akan dirujuk di seluruh panduan ini. Ubah nilai ini sesuai kebutuhan agar cocok dengan lingkungan spesifik Anda:
# GDC Environment Configuration export GDC_ORG="your-org-name" export GDC_ZONE="your-zone-name" export GDC_PROJECT_ID="your-project-id" export GDC_USER_NAME="your-gdc-user-email" export GDC_CLUSTER_NAME="your-cluster-name" # EJBCA Server Configuration export EJBCA_DNS_ZONE="example.internal" export EJBCA_HOSTNAME="ejbca.${EJBCA_DNS_ZONE}" export EJBCA_LB_IP="XX.XX.XX.XX" # Stable IP of your EJBCA Server export EJBCA_CA_NAME="GDC Subordinate CA" export EJBCA_NAMESPACE="ejbca-ee" export CERTIFICATE_PROFILE_NAME="GDC TLS SERVER PROFILE" export END_ENTITY_PROFILE_NAME="GDC TLS SERVER EE PROFILE" # Harbor Private Registry Configuration export HARBOR_INSTANCE_URL="your-harbor-url.internal" export HARBOR_PROJECT="your-harbor-project" export HARBOR_ROBOT_ACCOUNT="robot$your-robot-name" export HARBOR_ROBOT_SECRET="your-robot-secret" export HARBOR_PULL_SECRET_NAME="harbor-secret"Catatan Jaringan: Panduan ini mengasumsikan bahwa panduan dijalankan dari node bastion yang memiliki akses ke API GDC dengan air gap dan juga memiliki akses ke internet untuk mendownload manifes dan image container yang diperlukan. Jika Anda menjalankan ini dari komputer tanpa akses internet, Anda harus mendapatkan aset ini secara terpisah (misalnya, menggunakan
docker saveuntuk mengekspor gambar dari komputer yang terhubung dandocker loaduntuk mengimpornya) dan menguploadnya dengan aman ke lingkungan Anda sebelum melanjutkan.
Mengonfigurasi alias kubectl
Di bagian ini, Anda akan membuat alias command line yang mudah digunakan untuk API global dan pengelolaan zonal GDC:
Buat alias untuk API pengelolaan zona (Ganti MANAGEMENT_API_KUBECONFIG dengan jalur ke kubeconfig untuk API pengelolaan):
alias km="kubectl --kubeconfig MANAGEMENT_API_KUBECONFIG"Buat alias untuk API global (Ganti GLOBAL_API_KUBECONFIG dengan jalur ke kubeconfig untuk API global):
alias kg="kubectl --kubeconfig GLOBAL_API_KUBECONFIG"
Buat cluster standar GDC
Di bagian ini, Anda akan men-deploy cluster Kubernetes standar di dalam GDC dan mengonfigurasi peran administrator cluster standar GDC serta kredensial registry container Harbor lokal:
1. Identifikasi jenis image virtual machine yang tersedia dengan menjalankan:
```shell
gdcloud compute machine-types list
```
2. Pilih jenis mesin yang sesuai untuk node pekerja cluster Anda:
```shell
export MACHINE_TYPE="n3-standard-8-gdc"
```
3 Buat cluster standar dengan dua node pekerja menggunakan API pengelolaan zona:
```shell
km create -f - <<EOF
apiVersion: cluster.gdc.goog/v1
kind: Cluster
metadata:
name: ${GDC_CLUSTER_NAME}
namespace: ${GDC_PROJECT_ID}
spec:
nodePools:
- machineTypeName: ${MACHINE_TYPE}
nodeCount: 2
name: ${GDC_CLUSTER_NAME}-node-pool
EOF
```
This creates a simple GDC cluster. Cluster creation
can take up to 60 minutes to complete. To check the status, use the
following command:
```shell
km get clusters/${GDC_CLUSTER_NAME} \
-n ${GDC_PROJECT_ID} \
--watch
```
After the cluster is ready, the output should show a STATE of `Running`.
4 Setelah cluster siap, ambil kredensialnya:
```shell
KUBECONFIG=kubeconfig-${GDC_CLUSTER_NAME}.yaml gdcloud clusters \
get-credentials ${GDC_CLUSTER_NAME} \
--standard \
--project ${GDC_PROJECT_ID} \
--zone ${GDC_ZONE}
```
5 Tetapkan peran administrator cluster standar GDC kepada pengguna GDC Anda:
```shell
gdcloud projects add-iam-policy-binding ${GDC_PROJECT_ID} \
--member="user:${GDC_USER_NAME}" \
--role=cluster-admin
gdcloud projects add-iam-policy-binding ${GDC_PROJECT_ID} \
--member="user:${GDC_USER_NAME}" \
--role=standard-cluster-admin
```
6 Buat instance Harbor dan project Harbor di GDC untuk menghosting image container yang di-mirror:
```shell
gdcloud projects add-iam-policy-binding ${GDC_PROJECT_ID} \
--member="user:${GDC_USER_NAME}" \
--role=harbor-instance-admin
```
7 Buat akun robot Harbor dan catat nama pengguna serta kunci rahasianya.
8 Lakukan autentikasi dengan instance Harbor Anda:
```shell
docker --config=./docker-harbor login ${HARBOR_INSTANCE_URL} \
-u ${HARBOR_ROBOT_ACCOUNT} \
-p ${HARBOR_ROBOT_SECRET}
```
This saves the robot account credentials to
`./docker-harbor/config.json` for subsequent Secret creation.
Konfigurasi infrastruktur dan jaringan
Di bagian ini, Anda akan mengonfigurasi infrastruktur GDC dan setelan jaringan yang mendasarinya. Hal ini memastikan bahwa beban kerja Kubernetes Anda dapat menyelesaikan nama domain host EJBCA eksternal dan berhasil merutekan panggilan API keluar ke alamat IP-nya.
Penyiapan DNS Pribadi di GDC dengan air gap
Untuk membuat resolusi domain, Anda men-deploy set data dan zona DNS pribadi untuk memetakan server EJBCA eksternal ke nama domain lokal, sehingga layanan di dalam GDC dapat terhubung menggunakan nama host yang stabil, bukan alamat IP mentah:
Tetapkan peran Admin Project Managed DNS kepada pengguna Anda:
gdcloud projects add-iam-policy-binding ${GDC_PROJECT_ID} \ --member=user:${GDC_USER_NAME} \ --role=managed-dns-project-adminDeploy resource
ManagedDNSZoneglobal:kubectl --kubeconfig GLOBAL_API_KUBECONFIG apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ManagedDNSZone metadata: name: private-example-internal namespace: ${GDC_PROJECT_ID} spec: dnsName: ${EJBCA_DNS_ZONE} visibility: PRIVATE EOFDeploy
ResourceRecordSetyang mengarah ke alamat IP appliance EJBCA Anda:kubectl --kubeconfig GLOBAL_API_KUBECONFIG apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ResourceRecordSet metadata: name: ${EJBCA_HOSTNAME} namespace: ${GDC_PROJECT_ID} spec: name: ${EJBCA_HOSTNAME} ttlSeconds: 600 type: A rrData: - ${EJBCA_LB_IP} dnsZone: private-example-internal EOF
Penyiapan gateway NAT keluar
Selanjutnya, Anda mengonfigurasi jaringan keluar GDC dengan menyiapkan subnet kustom dan gateway NAT untuk mengizinkan workload Kubernetes (seperti cert-manager dan klien Otoritas Pendaftaran) merutekan traffic keluar ke server EJBCA secara aman:
Menetapkan peran developer jaringan tingkat project dan organisasi:
gdcloud projects add-iam-policy-binding ${GDC_PROJECT_ID} \ --member=user:${GDC_USER_NAME} \ --role=cloud-nat-developer gdcloud projects add-iam-policy-binding ${GDC_PROJECT_ID} \ --member=user:${GDC_USER_NAME} \ --role=subnet-project-admin gdcloud organizations add-iam-policy-binding ${GDC_ORG} \ --member="user:${GDC_USER_NAME}" \ --role=subnet-org-adminBuat subnet keluar:
kubectl --kubeconfig MANAGEMENT_API_KUBECONFIG apply -f - <<EOF apiVersion: ipam.gdc.goog/v1 kind: Subnet metadata: name: ejbca-cluster-egress namespace: ${GDC_PROJECT_ID} spec: ipv4Request: prefixLength: 32 parentReference: name: data-network-segment-${GDC_ZONE}-group namespace: platform type: SubnetGroup type: Leaf EOFBuat
CloudNATGatewayyang cocok dengan pemilih penerbit cert-manager:kubectl --kubeconfig MANAGEMENT_API_KUBECONFIG apply -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: CloudNATGateway metadata: name: ejbca-egress-gateway namespace: ${GDC_PROJECT_ID} spec: subnetRefs: - ejbca-cluster-egress workloadSelector: labelSelector: clusters: matchLabels: kubernetes.io/metadata.name: ${GDC_CLUSTER_NAME} workloads: matchLabels: app.kubernetes.io/name: ejbca-cert-manager-issuer EOF
Integrasi cert-manager Kubernetes
Di bagian ini, Anda akan mengintegrasikan penerbit cert-manager EJBCA kustom dengan layanan cert-manager GDC. Dengan begitu, Anda dapat membuat penyediaan, perpanjangan, dan pengelolaan siklus proses sertifikat otomatis untuk layanan yang di-container.

Mengonfigurasi EJBCA untuk penerbit
Untuk mengintegrasikan penerbit, Anda mengonfigurasi profil yang diperlukan, mendaftarkan kredensial klien administrasi, dan menyiapkan pengikatan peran di dalam server EJBCA. Langkah ini akan membuat saluran administratif yang aman yang memungkinkan cert-manager melakukan autentikasi dengan dan meminta sertifikat dari EJBCA.
Membuat profil sertifikat admin
Anda memulai dengan membuat profil sertifikat di dalam EJBCA untuk menentukan properti teknis dan batasan kriptografi (seperti algoritma dan periode validitas) sertifikat administratif:
- Buka UI Admin EJBCA, buka CA Functions > Certificate Profiles.
- Clone profil ENDUSER dan beri nama
GDC ADMIN PROFILE. - Edit
GDC ADMIN PROFILEdan konfigurasi setelan berikut:- Algoritma Kunci yang Tersedia: RSA
- Panjang Bit yang Tersedia: 2048, 3072, 4096
- Signature Algorithm: SHA512WithRSA
- Validitas:
200d - Nama Alternatif Penerbit: Jelas Penggunaan
- Lokasi Distribusi CRL: Periksa Gunakan
- Gunakan Lokasi Distribusi CRL yang ditentukan CA: Centang Gunakan
- Akses Informasi Otoritas: Periksa Gunakan
- Gunakan pencari OCSP yang ditentukan CA: Centang Gunakan
- Menggunakan penerbit CA yang ditentukan CA: Centang Gunakan
- CA yang tersedia: Pilih
GDC Subordinate CA
- Klik Simpan.
Membuat profil entity akhir administrator
Selanjutnya, Anda akan membuat profil entity akhir di EJBCA untuk menentukan kolom default dan penetapan CA, yang menyederhanakan proses pendaftaran dan penerbitan sertifikat administratif:
- Buka RA Functions > End Entity Profiles.
- Di bagian Tambahkan Profil Entitas Akhir, masukkan
GDC ADMIN EE PROFILE, lalu klik Tambahkan Profil. - Edit profil dan konfigurasi setelan berikut:
- Profil Sertifikat Default:
GDC ADMIN PROFILE - Profil Sertifikat yang Tersedia:
GDC ADMIN PROFILE - CA Default:
GDC Subordinate CA - CA yang Tersedia:
GDC Subordinate CA
- Profil Sertifikat Default:
- Klik Simpan.
Mendaftarkan sertifikat administrator
Setelah profil dibuat, daftarkan identitas administratif menggunakan antarmuka EJBCA Registration Authority (RA) dan ekstrak kunci pribadi, sertifikat publik, dan rantai kepercayaan untuk membuat file kredensial fisik yang diperlukan untuk mengautentikasi cert-manager:
- Buka tab RA Web.
- Klik Buat Permintaan Baru dan konfigurasi:
- Certificate Type:
GDC ADMIN EE PROFILE - Pembuatan pasangan kunci: Oleh CA
- Algoritma kunci: RSA 4096 bit
- Nama Umum (CN):
cert-manager - Username:
cert-manager - Kode pendaftaran:
abcd
- Certificate Type:
- Klik Download PEM dan simpan sebagai
cert-manager.pem. Pisahkan file PEM menjadi tiga file:
client.key(kunci rahasia):openssl pkey -in cert-manager.pem -out client.keyclient.crt(sertifikat publik):openssl x509 -in cert-manager.pem -out client.crtca.crt(rantai kepercayaan dengan sertifikat CA bawahan dan root):awk '/BEGIN CERTIFICATE/{i++} i>1' cert-manager.pem > ca.crt
Mengonfigurasi peran dan aturan akses
Terakhir, Anda membuat peran administratif di EJBCA dan mengikatnya ke nomor seri sertifikat cert-manager untuk memastikan penerbit hanya memiliki kumpulan izin minimal yang diperlukan untuk menyetujui dan meminta sertifikat:
- Di UI Admin EJBCA, buka RA Functions > Search End Entities.
- Cari entitas akhir
cert-managerdan catat Nomor Seri Sertifikat-nya. - Buka System Functions > Roles and Access Rules, lalu klik Add.
- Beri nama peran
cert-managerdan tambahkan anggota baru menggunakan nomor seri yang Anda catat. - Klik Edit Aturan Akses dan konfigurasi hak istimewa berikut:
- Template Peran: Administrator RA
- CA Resmi:
GDC Subordinate CA - Aturan Entitas Akhir: Menyetujui, Membuat, dan Mengedit Entitas Akhir
- Profil Entitas Akhir:
GDC TLS SERVER EE PROFILE - Aturan Lainnya: hapus Lihat Log Audit
- Klik Simpan.
Menyiapkan cluster GDC
Untuk menyiapkan lingkungan GDC, Anda melakukan autentikasi dengan cluster Kubernetes standar dan menyimpan kredensial administratif EJBCA yang diekstrak di dalam Secret Kubernetes, sehingga dapat diakses dengan aman oleh pod penerbit cert-manager:
Ambil kredensial cluster standar:
gdcloud clusters get-credentials "${GDC_CLUSTER_NAME}" \ --standard \ --project "${GDC_PROJECT_ID}" \ --zone "${GDC_ZONE}"Buat namespace target untuk penerbit kustom:
kubectl create ns ejbca-issuer-systemDeploy rahasia autentikasi TLS:
kubectl create secret tls ejbca-secret \ -n ejbca-issuer-system \ --cert=client.crt \ --key=client.keyDeploy secret rantai kepercayaan EJBCA:
kubectl create secret generic ejbca-ca-secret \ -n ejbca-issuer-system \ --from-file=ca.crt
Menginstal penerbit EJBCA
Untuk mengonfigurasi deployment, Anda mencerminkan image container penerbit cert-manager EJBCA ke registry Harbor pribadi dan men-deploy diagram Helm. Tindakan ini meng-instansiasi pengontrol kustom yang diperlukan untuk menerjemahkan permintaan sertifikat Kubernetes menjadi panggilan API EJBCA:
Buat secret penarikan image Harbor di namespace penerbit:
# Authenticate with the private Harbor registry docker --config=./docker-harbor login ${HARBOR_INSTANCE_URL} \ -u ${HARBOR_ROBOT_ACCOUNT} \ -p ${HARBOR_ROBOT_SECRET} kubectl create secret docker-registry ${HARBOR_PULL_SECRET_NAME} \ --from-file=.dockerconfigjson=./docker-harbor/config.json \ -n ejbca-issuer-systemSalin image penerbit cert-manager EJBCA resmi ke Harbor:
docker pull keyfactor/ejbca-cert-manager-issuer:latest --platform linux/amd64 docker tag keyfactor/ejbca-cert-manager-issuer:latest \ ${HARBOR_INSTANCE_URL}/${HARBOR_PROJECT}/ejbca-cert-manager-issuer:latest docker --config=./docker-harbor push \ ${HARBOR_INSTANCE_URL}/${HARBOR_PROJECT}/ejbca-cert-manager-issuer:latestTambahkan repositori Helm dan download diagram:
helm repo add ejbca-issuer https://keyfactor.github.io/ejbca-cert-manager-issuer helm repo update helm pull ejbca-issuer/ejbca-cert-manager-issuer --untarDeploy diagram Helm menggunakan repositori image yang di-mirror:
helm install ejbca-cert-manager-issuer ./ejbca-cert-manager-issuer \ --namespace ejbca-issuer-system \ --set image.repository=${HARBOR_INSTANCE_URL}/${HARBOR_PROJECT}/ejbca-cert-manager-issuer \ --set "imagePullSecrets[0].name=${HARBOR_PULL_SECRET_NAME}" \ --set image.tag=latest
Buat resource penerbit
Selanjutnya, Anda akan menetapkan izin RBAC GDC dan men-deploy resource
ClusterIssuer global, yang mendaftarkan server EJBCA sebagai sumber penandatanganan
tepercaya dalam framework cert-manager Kubernetes:
Konfigurasi izin RBAC untuk mengizinkan pengontrol cert-manager GDC menggunakan penerbit EJBCA kustom:
kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: cert-manager-controller-approve:issuers-ejbca-issuer-keyfactor-com rules: - verbs: - approve apiGroups: - cert-manager.io resources: - signers resourceNames: - issuers.ejbca-issuer.keyfactor.com/* - clusterissuers.ejbca-issuer.keyfactor.com/* --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: cert-manager-controller-approve:issuers-ejbca-issuer-keyfactor-com subjects: - kind: ServiceAccount name: cert-manager namespace: cert-manager roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cert-manager-controller-approve:issuers-ejbca-issuer-keyfactor-com EOFDeploy resource
ClusterIssuerglobal:kubectl apply -f - <<EOF apiVersion: ejbca-issuer.keyfactor.com/v1alpha1 kind: ClusterIssuer metadata: name: clusterissuer-ejbca spec: hostname: "${EJBCA_HOSTNAME}" ejbcaSecretName: "ejbca-secret" caBundleSecretName: "ejbca-ca-secret" certificateAuthorityName: "${EJBCA_CA_NAME}" certificateProfileName: "${CERTIFICATE_PROFILE_NAME}" endEntityProfileName: "${END_ENTITY_PROFILE_NAME}" endEntityName: "" EOFVerifikasi status penerbit:
kubectl get clusterissuer.ejbca-issuer.keyfactor.com/clusterissuer-ejbca \ -o "custom-columns=NAME:.metadata.name,STATUS:.status.conditions[0].message"Output akan menampilkan:
NAME STATUS clusterissuer-ejbca Success
Meminta sertifikat
Untuk memverifikasi integrasi, Anda men-deploy resource Sertifikat Kubernetes standar untuk menguji alur cert-manager end-to-end dan mengonfirmasi bahwa EJBCA berhasil menandatangani dan menyediakan sertifikat yang diminta:
Buat resource Certificate pengujian untuk memverifikasi keberhasilan integrasi:
kubectl apply -f - <<EOF
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: ejbca-test-certificate
namespace: ${EJBCA_NAMESPACE}
spec:
commonName: example.com
secretName: ejbca-certificate
issuerRef:
name: clusterissuer-ejbca
group: ejbca-issuer.keyfactor.com
kind: ClusterIssuer
EOF
Pastikan sertifikat telah dibuat dan siap:
kubectl get certificates.cert-manager.io -n ${EJBCA_NAMESPACE}
Output akan menampilkan:
NAME READY SECRET AGE
ejbca-test-certificate True ejbca-certificate 12s
ACME otomatis dengan tantangan DNS-01
Di bagian ini, Anda akan mengonfigurasi layanan ACME EJBCA dan memanfaatkan resource DNS internal GDC untuk mengotomatiskan penerbitan sertifikat yang divalidasi domain. Hal ini memungkinkan klien cert-manager atau Certbot standar untuk meminta sertifikat menggunakan protokol ACME otomatis standar.
Mengonfigurasi EJBCA untuk ACME
Untuk menyiapkan server, Anda mengaktifkan layanan ACME di dalam EJBCA dan mengonfigurasi alias ACME dengan resolver DNS khusus. Tindakan ini menyiapkan server EJBCA untuk memproses dan memvalidasi respons tantangan DNS-01 di dalam GDC:
- Di UI Admin EJBCA, buka System Configuration > ACME Configuration.
- Klik Tambahkan dan konfigurasi hal berikut:
- Nama:
default - End entity profile:
GDC TLS SERVER EE PROFILE - Penerbitan Sertifikat Karakter Pengganti Diizinkan: Periksa
- Jenis tantangan DNS validasi MPIC Respons Tantangan:
Pilih
dns-01 - DNS resolver: Masukkan IP DNS global Anda.
- Validasi DNSSEC: jelas (karena ini adalah lingkungan pribadi lokal)
- Nama:
- Klik Simpan.
Buat variabel lingkungan ACME
Di bagian ini, Anda akan membuat variabel lingkungan berikut untuk mengonfigurasi klien Certbot. Ubah nilai ini sesuai kebutuhan:
# ACME Alias created in the EJBCA configuration
export ACME_ALIAS="default"
# Arbitrary email address used for ACME registration
export ACME_EMAIL="your-email@example.com"
Mendaftarkan klien Certbot
Selanjutnya, Anda menginstal klien Certbot standar dan mendaftarkannya dengan endpoint ACME pribadi EJBCA. Tindakan ini akan membuat akun klien tepercaya yang diperlukan untuk melakukan operasi sertifikat otomatis:
Instal
certbotdi workstation Anda. Misalnya, untuk macOS:brew install certbotBuat folder lokal untuk konfigurasi dan log:
mkdir -p ./certbot/config ./certbot/work ./certbot/logsDaftarkan klien dengan endpoint direktori ACME EJBCA:
certbot register \ --config-dir ./certbot/config \ --work-dir ./certbot/work \ --logs-dir ./certbot/logs \ --server https://${EJBCA_HOSTNAME}/ejbca/acme/${ACME_ALIAS}/directory \ --email ${ACME_EMAIL} \ --agree-tos \ --no-eff-email
Menerbitkan sertifikat menggunakan tantangan DNS
Terakhir, Anda menjalankan permintaan Certbot manual dan men-deploy resource TXT DNS GDC sementara untuk menyelesaikan verifikasi DNS-01. Hal ini memvalidasi kepemilikan Anda atas domain target dan memicu penerbitan sertifikat otomatis:
Jalankan perintah verifikasi manual:
certbot certonly \ --manual \ --preferred-challenges dns \ --key-type rsa \ --rsa-key-size 2048 \ --config-dir ./certbot/config \ --work-dir ./certbot/work \ --logs-dir ./certbot/logs \ --server https://${EJBCA_HOSTNAME}/ejbca/acme/${ACME_ALIAS}/directory \ -d test.${EJBCA_DNS_ZONE}Terminal akan berhenti dan menampilkan nilai tantangan. Contoh output:
Please deploy a DNS TXT record under the name: _acme-challenge.test.example.internal. with the following value: q3pCmzXfIhsTpT4f4JAulHmHaAR3udC_9Wf1G498ER0 Before continuing, verify the TXT record has been deployed.Deploy data TXT ke DNS global Anda dengan string yang disediakan oleh Certbot.
Tunggu sekitar 30 detik agar propagasi DNS selesai, kembali ke terminal Certbot, lalu tekan Enter.
Contoh output:
Successfully received certificate. Certificate is saved at:./certbot/config/live/test.example.internal/fullchain.pem Key is saved at:./certbot/config/live/test.example.internal/privkey.pem This certificate expires on 2026-11-16. These files will be updated when the certificate renews.Pastikan sertifikat berhasil ditulis ke
./certbot/config/live/test.${EJBCA_DNS_ZONE}/.