Belajar PKI - Trust Store & Distribusi Root Certificate
Episode 5 of 23

Belajar PKI - Trust Store & Distribusi Root Certificate

Menempatkan root certificate ke trust store sistem, browser, dan aplikasi seperti Java dan Python, memahami bundle CA, serta memverifikasi rantai dengan openssl verify memakai -CAfile dan -untrusted.

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

Pendahuluan

Di episode 4 kalian sudah memiliki private CA yang menerbitkan sertifikat. Namun CA tidak berguna jika tidak ada yang memercayainya. Episode penutup ini membahas cara menyebarkan kepercayaan: memasang root certificate ke trust store, mendistribusikan rantai sertifikat, dan memverifikasi bahwa semuanya bekerja.

Roadmap episode ini: memasang root ke trust store sistem Linux, memahami perilaku browser Firefox dan Chrome, menanam root ke aplikasi seperti Java dan Python, menyusun bundle CA, lalu memverifikasi rantai dengan openssl verify. Di akhir episode kalian akan bisa menghubungkan seluruh rangkaian series ini dari awal hingga akhir.

Trust Store Sistem Linux

Trust store sistem adalah daftar CA yang dipercaya seluruh proses di mesin. Di Debian dan Ubuntu, sertifikat disimpan di /etc/ssl/certs dan diatur dengan update-ca-certificates:

Memasang root ke trust store sistem
sudo cp root-ca/certs/ca.cert.pem /usr/local/share/ca-certificates/
sudo update-ca-certificates

Perintah pertama menyalin root ke direktori yang dipindai sistem, perintah kedua memperbarui daftar sertifikat tepercaya. Setelah itu, tool berbasis OpenSSL di mesin tersebut akan memercayai sertifikat yang ditandatangani CA kalian.

Verifikasi pemasangan dengan sudo update-ca-certificates --verbose untuk melihat status terbaru, lalu uji rantai:

Cek root terpasang
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt \
  leaf/server.cert.pem

Output OK berarti rantai dipercaya sistem. Jika muncul error, periksa apakah rantai intermediate sudah lengkap.

Trust Store Browser

Browser memiliki trust store tersendiri yang tidak selalu membaca trust store sistem.

Firefox menggunakan store miliknya sendiri. Untuk memercayai root lab, impor secara manual lewat Settings, buka Privacy and Security, lalu bagian Certificates, dan pilih Import untuk menambahkan CA. Di organisasi, impor ini biasanya otomatis lewat policy.

Chrome (dan Chromium) memakai trust store sistem di Linux dan macOS, jadi memasang root lewat update-ca-certificates sudah cukup. Di Windows dan macOS, gunakan mekanisme store masing-masing sistem operasi.

Info

Browser adalah penguji paling ketat: sebagian besar menolak sertifikat tanpa SAN, menolak root yang dipasang dengan cara salah, dan menandai validitas berdasarkan tanggal sistem. Kalau browser tidak mau percaya, periksa tiga hal ini sebelum menyalahkan CA.

Trust Store Aplikasi

Java Key Store (cacerts)

Java memakai file cacerts yang berisi root tepercaya untuk JVM. Impor root lab dengan tool keytool:

Impor root ke Java cacerts
keytool -import -trustcacerts \
  -alias lab-root -file root-ca/certs/ca.cert.pem \
  -keystore $JAVA_HOME/lib/security/cacerts

Pada Java 9 ke atas, cacerts tersimpan dalam format PKCS12. Nama alias sebaiknya deskriptif agar mudah dikelola saat banyak root terpasang.

Python certifi

Python memakai paket certifi yang menyediakan bundle CA sendiri, dan banyak library HTTP seperti requests memakainya secara default. Untuk memercayai CA kalian, gabungkan root ke bundle certifi:

Menambah root ke bundle certifi
cp $(python3 -m certifi) certifi-with-lab.pem
cat root-ca/certs/ca.cert.pem >> certifi-with-lab.pem

Bundle hasil gabungan bisa diarahkan lewat variabel SSL_CERT_FILE atau diset langsung di aplikasi yang memakai requests. Cara ini bersifat per-proses, sehingga tidak mengganggu sistem lain.

Distribusi Bundle CA

Server yang memakai sertifikat leaf biasanya perlu mengirim rantai lengkap ke klien, yaitu sertifikat leaf digabung dengan intermediate:

Membuat fullchain bundle
cat leaf/server.cert.pem intermediate-ca/certs/intermediate.cert.pem \
  > leaf/fullchain.pem

Beberapa istilah yang perlu dibedakan:

  • leaf certificate: sertifikat milik server, ditandatangani intermediate.
  • intermediate certificate: sertifikat milik CA menengah, ditandatangani root.
  • root certificate: sertifikat yang ada di trust store klien.
  • fullchain: leaf plus intermediate, yang dikirim server ke klien.
  • bundle CA: intermediate plus root, untuk memverifikasi leaf di sisi lain.

Urutan dalam fullchain penting: sertifikat leaf diletakkan paling atas, lalu intermediate di bawahnya.

Verifikasi Rantai dengan openssl verify

Setelah semua terpasang, uji kepercayaan dari sisi klien:

Verifikasi rantai penuh
openssl verify -CAfile root-ca/certs/ca.cert.pem \
  -untrusted intermediate-ca/certs/intermediate.cert.pem \
  leaf/server.cert.pem

-CAfile menunjukkan root yang dipercaya, -untrusted menyediakan sertifikat perantara yang membantu membangun rantai tanpa harus dipercaya. Output OK berarti leaf dipercaya.

Kasus paling umum: verifikasi gagal karena intermediate tidak disertakan. Bandingkan dua perintah berikut:

Verifikasi tanpa dan dengan intermediate
openssl verify -CAfile root-ca/certs/ca.cert.pem leaf/server.cert.pem
openssl verify -CAfile root-ca/certs/ca.cert.pem \
  -untrusted intermediate-ca/certs/intermediate.cert.pem \
  leaf/server.cert.pem

Perintah pertama gagal karena leaf ditandatangani intermediate yang tidak bisa ditemukan; perintah kedua sukses karena rantai dibangun lengkap. Ini menjelaskan mengapa server harus selalu mengirim intermediate kepada klien.

Penutup

Di episode 5 kalian sudah menutup rangkaian Belajar PKI: memasang root certificate ke trust store sistem, browser, dan aplikasi; menyusun bundle fullchain dan bundle CA; serta memverifikasi rantai dengan openssl verify. Kini kalian punya CA pribadi yang benar-benar dipercaya environment kalian.

Inti yang harus dibawa pulang:

  • Trust store sistem Linux dikelola lewat update-ca-certificates.
  • Firefox punya trust store sendiri; Chrome memakai store sistem.
  • Java memakai cacerts, Python memakai certifi.
  • Server mengirim fullchain: leaf plus intermediate.
  • openssl verify memakai -CAfile untuk root dan -untrusted untuk intermediate.
  • Verifikasi gagal biasanya karena rantai tidak lengkap.

Demikian enam episode Belajar PKI, dari prasyarat hingga distribusi trust. Sekarang giliran kalian mempraktikkan seluruh alur di lab sendiri, lalu coba tantangan lanjutan seperti sertifikat short-lived, mTLS antar service, atau transisi ke post-quantum. Selamat membangun kepercayaan digital kalian!

Belajar PKI - Trust Store & Distribusi Root Certificate | Belajar PKI