Belajar Secret Management - PKI Secrets Engine (CA Otomatis)
Episode 6 of 21

Belajar Secret Management - PKI Secrets Engine (CA Otomatis)

Menjadikan OpenBao sebagai Root CA dan Intermediate CA internal, menerbitkan sertifikat TLS on-demand dengan TTL pendek, serta memahami peran role dalam otomatisasi penerbitan sertifikat untuk layanan internal yang berkomunikasi lewat TLS.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 5 kalian memakai Transit Secrets Engine untuk mengenkripsi dan mendekripsi data sensitif tanpa menyimpan data itu sendiri di OpenBao. Episode 6 ini bergerak selangkah lebih jauh: OpenBao tidak hanya menjaga kunci, tetapi juga menerbitkan sertifikat untuk kalian. Dengan PKI Secrets Engine, OpenBao bisa bertindak sebagai Certificate Authority (CA) internal yang mencetak sertifikat TLS secara otomatis, kapan pun dibutuhkan, dengan masa berlaku yang bisa dibuat sangat pendek. Ini fondasi dari arsitektur zero-trust dan komunikasi service-to-service yang terautentikasi.

Konsep PKI dan CA Internal

Public Key Infrastructure (PKI) adalah sistem yang mengatur penerbitan, pendistribusian, dan pencabutan sertifikat digital. Dalam ekosistem web modern, sertifikat TLS biasanya diterbitkan oleh CA publik seperti Let's Encrypt. Namun di dalam jaringan internal, kalian sering tidak ingin setiap layanan memakai sertifikat publik — kalian butuh CA internal yang hanya dipercaya oleh mesin-mesin milik kalian sendiri.

OpenBao mampu menjalankan dua peran dalam hierarki PKI:

  • Root CA — CA paling atas yang menandatangani sertifikatnya sendiri (self-signed). Kuncinya disimpan sangat terisolasi dan jarang sekali dipakai langsung.
  • Intermediate CA — CA turunan yang sertifikatnya ditandatangani oleh Root CA. Sertifikat untuk layanan harian diterbitkan oleh intermediate ini, bukan oleh root.

Pemisahan ini penting: jika intermediate terkompromi, kalian cukup mencabut sertifikat intermediate itu dan membangun yang baru — Root CA tetap aman. Inilah alasan OpenBao bisa otomatis menjadi Root CA sekaligus Intermediate CA dalam satu instalasi.

Mengaktifkan PKI Secrets Engine

Seperti engine lain, PKI diaktifkan lewat bao secrets enable. Mount path default-nya adalah pki. Kalian juga perlu menaikkan batas TTL, karena sertifikat CA berumur sangat panjang:

Mengaktifkan PKI dan membuat Root CA
bao secrets enable pki
bao secrets tune -max-lease-ttl=87600h pki
bao write pki/root/generate/internal \
  common_name="OpenBao Root CA" \
  ttl=87600h

bao secrets enable pki mengaktifkan engine di path pki, sementara bao write pki/root/generate/internal membuat pasangan kunci root sekaligus sertifikatnya dalam satu langkah. Opsi -max-lease-ttl=87600h setara 10 tahun — durasi yang umum untuk CA root.

Membangun Hierarchy: Root CA dan Intermediate CA

Menerbitkan semua sertifikat langsung dari root itu mungkin dilakukan, tetapi bukan praktik yang baik. Best practice adalah memakai intermediate. Berikut perbandingan keduanya:

AspekRoot CA (pki)Intermediate CA (pki_int)
Sumber kunciGenerate sendiriCSR ditandatangani Root CA
PemakaianHampir tidak pernah langsungMenerbitkan sertifikat layanan
Path penerbitanpki/root/generate/internalpki_int/issue/<role>
Risiko kompromiKritis, sulit dicabutBisa dicabut terpisah
TTL khasBertahun-tahunHitungan jam sampai hari

Alur pembuatan intermediate dimulai dari mengaktifkan mount kedua:

Membuat Intermediate CA
bao secrets enable -path=pki_int pki
bao secrets tune -max-lease-ttl=43800h pki_int
bao write pki_int/intermediate/generate/internal \
  common_name="OpenBao Intermediate CA" | tee /tmp/intermediate.csr.json

CSR yang dihasilkan kemudian ditandatangani oleh root, lalu sertifikat hasilnya diimpor kembali ke pki_int. Setelah itu pki_int resmi menjadi intermediate yang siap menerbitkan sertifikat untuk layanan internal.

Penerbitan Sertifikat TLS On-Demand

Agar bisa menerbitkan sertifikat, sebuah mount PKI membutuhkan role. Role mendefinisikan domain yang diizinkan, TTL maksimum, dan aturan lain yang mengatur bentuk sertifikat yang boleh lahir. Contoh role untuk domain internal:

Membuat role penerbitan
bao write pki_int/roles/my-role \
  allowed_domains="internal.local" \
  allow_subdomains=true \
  max_ttl="24h"

Setelah role ada, menerbitkan sertifikat semudah satu perintah — tidak perlu menunggu proses manual seperti pada CA tradisional:

Menerbitkan sertifikat TLS internal
bao write pki_int/issue/my-role \
  common_name="api.internal.local" \
  ttl="24h"

bao write pki_int/issue/my-role common_name="api.internal.local" menerbitkan sertifikat untuk api.internal.local yang berlaku 24 jam. Sertifikat lahir seketika lewat API, lengkap dengan kunci privatnya.

Output yang dikembalikan kurang lebih seperti ini:

Respons pki_int/issue/my-role
{
  "data": {
    "certificate": "-----BEGIN CERTIFICATE----- ...",
    "private_key": "-----BEGIN PRIVATE KEY----- ...",
    "issuing_ca": "-----BEGIN CERTIFICATE----- ...",
    "serial_number": "4f:2b:9d:...",
    "expiration": 1753824000
  }
}

Kalian cukup menyimpan private_key dan certificate lalu memasangnya di service. Karena TTL-nya pendek, service diharapkan memperbarui sertifikatnya sendiri sebelum masa berlaku habis — pola yang dikenal sebagai certificate rotation.

Mengapa TTL Pendek

Sertifikat dengan TTL pendek adalah pilar zero-trust:

  • Jendela kompromi kecil — sertifikat yang bocor hanya berguna paling lama 24 jam.
  • Rotasi terpaksa terjadi — layanan tidak bisa malas menunggu kedaluwarsa satu tahun.
  • Pencabutan lebih jarang dibutuhkan — daripada mencabut sertifikat yang buruk, biarkan ia kedaluwarsa sendiri.

Tip

Untuk sertifikat internal yang hanya dipakai antar-service, mulailah dari TTL 24 jam lalu turunkan perlahan menjadi 1 hingga 6 jam setelah rotasi otomatis berjalan lancar. Ingat, max_ttl pada role adalah batas atas — TTL saat issuance tidak boleh melampaui batas itu.

Memeriksa Sertifikat yang Terbit

Semua sertifikat yang diterbitkan bisa dilacak dari mount pki_int:

Melihat daftar sertifikat terbit
bao list pki_int/certs
bao read pki_int/cert/4f:2b:9d:...

bao list pki_int/certs menampilkan serial number semua sertifikat yang aktif, dan bao read pki_int/cert/<serial> menampilkan detail masing-masing. Ini berguna untuk audit — memastikan tidak ada sertifikat asing yang terbit tanpa sepengetahuan tim.

Penutup

Pada episode 6 ini kalian menjadikan OpenBao sebagai CA internal: memahami peran Root CA dan Intermediate CA, mengaktifkan engine pki dan pki_int, membangun hierarki CA, membuat role penerbitan, serta menerbitkan sertifikat TLS on-demand dengan TTL pendek untuk api.internal.local dan layanan internal lainnya.

Inti yang harus dibawa pulang:

  • Selalu pakai intermediate CA — root hanya menandatangani intermediate, bukan sertifikat layanan.
  • Role menentukan aturan penerbitanallowed_domains, max_ttl, dan allow_subdomains dikontrol di sini.
  • TTL pendek adalah fitur, bukan kekurangan — sertifikat 24 jam memaksa rotasi dan memangkas risiko.
  • Semua sertifikat tercatat di pki_int/certs — gunakan untuk audit penerbitan.

Di episode 7 berikutnya, kita berhenti sejenak dari secrets engine dan membahas Access Control Policies — bagaimana OpenBao memutuskan siapa yang boleh mengakses path mana, dalam format HCL, lengkap dengan capabilities dan pengujian penegakan privilege.

Belajar Secret Management - PKI Secrets Engine (CA Otomatis) | Belajar Secret Management dengan OpenBao