Tech With Ngurah Bagus
Tech With Ngurah Bagus
Published on 2026-01-04 / 43 Visits
0
0

Setup Secure SSL di Private Lab dengan step-ca

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-management

Saat 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: true

2. Jalankan Container

docker compose up -d

3. DNS Rewrites

Pastikan domain ca.twnb.com sudah diarahkan ke IP server kalian. Bisa ditambahkan pada file /etc/hosts/.Contohnya seperti dibawah ini

insert dns rewrite to host file

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

insert dns rewrite to adguardhome rewrite

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

  1. Masuk ke container:

    docker exec -it <container_id> bash
  2. Edit file config/ca.json dan sesuaikan bagian claims:

    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
                    }
    	},
    # ....
  3. Restart container untuk menerapkan perubahan.

docker compose restart

Tahap 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 -y

2. 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.crt

3. 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:

  1. Unduh Root CA menggunakan wget: Gunakan flag --no-check-certificate karena pada tahap ini SSL belum dipercayai oleh sistem.

    wget [https://ca.twnb.com/roots.pem](https://ca.twnb.com/roots.pem) --no-check-certificate
    
  2. Pasang di Sistem (Contoh: Ubuntu): Ubah format file menjadi .crt dan 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.key

Sertifikat 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!

ssl status showing secure cert. here we go!

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!


Comment