Pendahuluan
Mengelola sertifikat SSL untuk private lab seringkali menjadi pekerjaan yang membosankan jika dilakukan secara manual. Kita sering berurusan dengan konfigurasi CA (Certificate Authority) yang rumit dan sulit diingat.
Untuk mempermudah hal tersebut, kita bisa menggunakan step-ca, sebuah tools dari Smallstep yang dapat dipakai untuk memanajemen pembuatan sertifikat di environment lab secara otomatis dan centralize.
Mengapa Harus step-ca?
Dalam environment lab, kita biasanya memiliki banyak service (seperti Dashboard VMware, Proxmox, atau web apps internal). Menggunakan SSL "Self-Signed" biasa dan sering memunculkan peringatan "Insecure" di browser. Dengan step-ca, kita bisa memiliki Root CA sendiri yang dipercaya oleh semua perangkat di lab kita, sehingga semua koneksi menjadi HTTPS yang valid.
Tahap 1: Installasi step-ca
Kita akan memulai dengan melakukan inisialisasi awal menggunakan Docker.
1. Bootstrap PKI Container
Jalankan perintah berikut untuk menginisialisasi konfigurasi CA:
docker run -it -v step:/home/step smallstep/step-ca step ca init --remote-managementSaat proses inisialisasi, kalian akan diminta mengisi beberapa informasi:
PKI Name: Contoh:
NB-Certificate Authority.DNS Names/IP: Masukkan host yang akan digunakan untuk akses manajemen CA (Contoh:
ca.twnb.com).Listen Address: Default
:9000.Provisioner Name: Masukkan email kalian (Contoh:
my@twnb.com).Password: Masukkan password yang kuat untuk CA kalian.
Setelah selesai, container akan berhenti otomatis. Informasi penting seperti Fingerprint akan muncul di layar. Simpan fingerprint tersebut!
Tahap 2: Menjalankan step-ca dengan Docker Compose
Agar manajemen lebih mudah, kita akan menggunakan docker-compose.yaml. Dalam contoh ini, kita juga akan mengintegrasikannya dengan Traefik sebagai reverse proxy.
1. Buat File compose.yaml
name: nb-ca-service
services:
step-ca:
image: smallstep/step-ca
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.tcp.routers.step-tls.rule=HostSNI(`ca.twnb.com`)" # sesuaikan dengan dns ca kalian
- "traefik.tcp.routers.step-tls.tls=true"
- "traefik.tcp.routers.step-tls.entrypoints=websecure"
- "traefik.tcp.routers.step-tls.tls.passthrough=true"
- "traefik.tcp.services.step-tls.loadbalancer.server.port=9000"
volumes:
- ./step:/home/step
networks:
- proxy
restart: always
extra_hosts:
- "ca.twnb.com:127.0.0.1" # sesuaikan dengan dns ca kalian
networks:
proxy:
external: true2. Jalankan Container
docker compose up -d3. DNS Rewrites
Pastikan domain ca.twnb.com sudah diarahkan ke IP server kalian. Bisa ditambahkan pada file /etc/hosts/.Contohnya seperti dibawah ini

Atau jika menggunakan AdGuard Home, kalian bisa menambahkannya di menu DNS Rewrites.

Tahap 3: Optimasi Expired Time (Masa Berlaku)
Secara default, sertifikat yang diterbitkan hanya berlaku selama 24 jam. Untuk kebutuhan lab, kita bisa memperpanjangnya menjadi 1 tahun (365 hari). Untuk bisa mengubahnya, bisa mengikuti tahapan dibawah ini
Masuk ke container:
docker exec -it <container_id> bashEdit file
config/ca.jsondan sesuaikan bagianclaims:vi config/ca.json --- { # ... "db": { "type": "badgerv2", "dataSource": "/home/step/db", "badgerFileLoadingMode": "" }, "authority": { "enableAdmin": true, "claims": { "minTLSCertDuration": "8760h", # sesuaikan minimal "maxTLSCertDuration": "226280h", # sesuaikan maximal "defaultTLSCertDuration": "8760h" # sesuaikan default } }, # ....Restart container untuk menerapkan perubahan.
docker compose restartTahap 4: Konfigurasi di Sisi Client
Agar PC atau komputer dapat mengenali dan memvalidasi certificate yang sebelumnya dibuat menggunakan step-ca, kita harus memasang step-cli dan memasangnya pada root certificate. Berikut cara install dan memasangnya
1. Install step-cli (Ubuntu/Debian)
# Tambahkan repo smallstep dan install
curl -fsSL [https://packages.smallstep.com/keys/apt/repo-signing-key.gpg](https://packages.smallstep.com/keys/apt/repo-signing-key.gpg) -o /etc/apt/trusted.gpg.d/smallstep.asc
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/smallstep.asc] [https://packages.smallstep.com/stable/debian](https://packages.smallstep.com/stable/debian) debs main' | tee /etc/apt/sources.list.d/smallstep.list
# Update packages
apt update && apt install step-cli -y2. Mendapatkan Fingerprint CA
Jika kita lupa mencatat fingerprint saat instalasi awal, kita bisa mendapatkannya kembali dengan menjalankan perintah ini di server tempat step-ca berjalan:
docker exec -it <step-ca-container> bash
---
step certificate fingerprint $(step path)/certs/root_ca.crt3. Bootstrap Client ke Remote CA
Gunakan fingerprint yang sebelumnya didapat:
step ca bootstrap --ca-url [https://ca.twnb.com](https://ca.twnb.com) --fingerprint <CA_FINGERPRINT_ANDA>
4. Pasang Root CA ke System
Agar browser tidak protes :) , instal Root CA-nya:
sudo step certificate install $(step path)/certs/root_ca.crt
Alternatif: Memasang Root CA Tanpa step-cli (via wget/download)
Jika kalian ingin memasang Root CA pada perangkat yang tidak memiliki step-cli, kalian dapat melakukannya secara manual dengan langkah berikut:
Unduh Root CA menggunakan wget: Gunakan flag
--no-check-certificatekarena pada tahap ini SSL belum dipercayai oleh sistem.wget [https://ca.twnb.com/roots.pem](https://ca.twnb.com/roots.pem) --no-check-certificatePasang di Sistem (Contoh: Ubuntu): Ubah format file menjadi
.crtdan masukkan ke dalam daftar sertifikat terpercaya sistem.sudo cp roots.pem /usr/local/share/ca-certificates/twnb-self-ca.crt sudo update-ca-certificates
Tahap 5: Membuat Sertifikat Baru
Sekarang kita bisa membuat sertifikat SSL untuk service apa pun di lab dengan satu perintah sederhana:
step ca certificate "*.twnb.com" server.crt server.keySertifikat server.crt dan server.key siap digunakan di Nginx, Apache, atau aplikasi web lainnya. Browser kalian sekarang akan menampilkan gembok hijau yang menandakan koneksi aman dan valid!

Kesimpulan
Dengan step-ca, manajemen SSL di private lab menjadi lebih profesional dan otomatis. Tidak ada lagi peringatan "Your connection is not private" seperti ketika menggunakan self-signed certificate. Kita tidak perlu khawatir status unsecure atau not private, karena kita kendali penuh atas keamanan transmisi data di jaringan internal Anda.
Jika masih kesulitan ataupun ada hal yang ditanyakan. Silakan isi kolom komentar dibawah!