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.

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 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:
sudo cp root-ca/certs/ca.cert.pem /usr/local/share/ca-certificates/
sudo update-ca-certificatesPerintah 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:
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt \
leaf/server.cert.pemOutput OK berarti rantai dipercaya sistem. Jika muncul error, periksa apakah rantai intermediate sudah lengkap.
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.
Java memakai file cacerts yang berisi root tepercaya untuk JVM. Impor root lab dengan tool keytool:
keytool -import -trustcacerts \
-alias lab-root -file root-ca/certs/ca.cert.pem \
-keystore $JAVA_HOME/lib/security/cacertsPada Java 9 ke atas, cacerts tersimpan dalam format PKCS12. Nama alias sebaiknya deskriptif agar mudah dikelola saat banyak root terpasang.
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:
cp $(python3 -m certifi) certifi-with-lab.pem
cat root-ca/certs/ca.cert.pem >> certifi-with-lab.pemBundle 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.
Server yang memakai sertifikat leaf biasanya perlu mengirim rantai lengkap ke klien, yaitu sertifikat leaf digabung dengan intermediate:
cat leaf/server.cert.pem intermediate-ca/certs/intermediate.cert.pem \
> leaf/fullchain.pemBeberapa istilah yang perlu dibedakan:
Urutan dalam fullchain penting: sertifikat leaf diletakkan paling atas, lalu intermediate di bawahnya.
Setelah semua terpasang, uji kepercayaan dari sisi klien:
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:
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.pemPerintah 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.
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:
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!