Panduan Lengkap Membuat CA Server dengan OpenSSL
Daftar Isi (Klik untuk melihat)
- Apa Itu CA Server dan Mengapa Penting?
- Persiapan Lingkungan Server CA
- Spesifikasi Minimum VM
- Langkah-Langkah Membuat CA Server dengan OpenSSL
- 1. Konfigurasi Dasar dan Firewall
- 2. Membuat Root CA Private Key
- 3. Membuat File Konfigurasi CA
- 4. Membuat Sertifikat Self-Signed Root CA
- 5. Membuat Server Private Key dan CSR
- 6. Menandatangani CSR dengan Root CA
- Mengonfigurasi Browser untuk Mempercayai Root CA
- Firefox
- Brave / Chrome
- Pertimbangan Keamanan dan Best Practices
- Kesimpulan
- FAQ
- Apa perbedaan antara Root CA dan Intermediate CA?
- Mengapa sertifikat saya tetap ditolak oleh Chrome?
- Berapa lama sertifikat Root CA sebaiknya berlaku?
- Apakah aman menjalankan CA Server di virtual machine?
- Bagaimana cara mencabut sertifikat yang sudah diterbitkan?
Dalam mengelola infrastruktur TI modern, CA Server dengan OpenSSL menjadi solusi krusial untuk memastikan keamanan komunikasi antar perangkat di jaringan Anda. Banyak perangkat TI yang dikelola melalui web browser masih menggunakan sertifikat self-signed, yang tidak hanya menghasilkan peringatan kepercayaan yang mengganggu, tetapi juga membuka celah keamanan serius. Dengan menyiapkan CA (Certificate Authority) Server yang proper, Anda dapat menerbitkan sertifikat digital yang dipercaya oleh browser, sehingga koneksi HTTPS menjadi benar-benar aman dan terverifikasi.
Artikel ini akan membahas secara mendalam cara membuat CA Server menggunakan OpenSSL di Ubuntu, termasuk konfigurasi Root CA, penerbitan sertifikat server, dan integrasi dengan browser web. Panduan ini dirancang untuk administrator sistem dan profesional TI yang ingin membangun infrastruktur Public Key Infrastructure (PKI) internal yang robust.
Apa Itu CA Server dan Mengapa Penting?
CA Server adalah server yang berfungsi sebagai Certificate Authority — entitas tepercaya yang menerbitkan, mengelola, dan memvalidasi sertifikat digital. Dalam konteks PKI, CA Server bertindak sebagai "notaris digital" yang menjamin keaslian identitas server dan mengenkripsi komunikasi.
Berikut perbandingan antara sertifikat self-signed dan CA-signed:
| Aspek | Self-Signed Certificate | CA-Signed Certificate |
|---|---|---|
| Kepercayaan Browser | Tidak dipercaya (muncul warning) | Dipercaya secara otomatis |
| Keamanan | Rentan terhadap man-in-the-middle attack | Terlindungi dengan validasi chain of trust |
| Kemudahan Identifikasi | Sulit membedakan server asli dari palsu | Mudah mengenali server yang mencurigakan |
| Biaya | Gratis | Gratis (internal) atau berbayar (public CA) |
Persiapan Lingkungan Server CA
Untuk panduan ini, kami menggunakan Ubuntu Server sebagai platform CA Server. OpenSSL tersedia secara native di sebagian besar distribusi Linux, menjadikannya pilihan yang fleksibel dan andal.
Spesifikasi Minimum VM
CPU: 1 vCPU
- Iklan -RAM: 1 GB
Penyimpanan: 16 GB HDD
Jaringan: 1 vNIC dengan IP statis
Selama proses instalasi Ubuntu, disarankan untuk mengaktifkan enkripsi disk dan menginstal OpenSSH. Hindari menginstal aplikasi tambahan yang tidak diperlukan — prinsip minimal attack surface sangat penting untuk server keamanan.
Langkah-Langkah Membuat CA Server dengan OpenSSL
1. Konfigurasi Dasar dan Firewall
Setelah instalasi Ubuntu selesai, aktifkan UFW (Uncomplicated Firewall) dan buat direktori kerja untuk CA:
# Aktifkan UFW dan izinkan SSH
sudo ufw allow OpenSSH
sudo ufw enable
# Buat struktur direktori CA
sudo mkdir -p /etc/ssl/CA/{certs,crl,newcerts,private}
sudo chmod 700 /etc/ssl/CA/private
touch /etc/ssl/CA/index.txtecho 1000 | sudo tee /etc/ssl/CA/serial2. Membuat Root CA Private Key
Private key Root CA adalah aset paling sensitif dalam infrastruktur PKI Anda. Gunakan passphrase yang kuat dan simpan di lokasi yang aman:
# Buat Root CA private key dengan enkripsi AES-256
sudo openssl genrsa -aes256 -out /etc/ssl/CA/private/ca.key.pem 4096
# Atur permission agar hanya root yang dapat mengakses
sudo chmod 400 /etc/ssl/CA/private/ca.key.pem3. Membuat File Konfigurasi CA
Buat file konfigurasi openssl.cnf yang mendefinisikan parameter CA:
sudo tee /etc/ssl/CA/openssl.cnf <<'EOF'
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /etc/ssl/CA
certs = $dir/certs
crl_dir = $dir/crl
new_certs_dir = $dir/newcerts
database = $dir/index.txt
serial = $dir/serial
private_key = $dir/private/ca.key.pem
certificate = $dir/certs/ca.cert.pem
default_days = 3650
default_md = sha256
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
string_mask = utf8only
default_md = sha256
x509_extensions = v3_ca
[ req_distinguished_name ]
CN = My Root CA
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
EOF4. Membuat Sertifikat Self-Signed Root CA
Sertifikat Root CA ini akan menjadi anchor of trust untuk seluruh infrastruktur:
# Buat sertifikat Root CA yang berlaku selama 10 tahun
sudo openssl req -config /etc/ssl/CA/openssl.cnf \
-key /etc/ssl/CA/private/ca.key.pem \
-new -x509 -days 3650 -sha256 \
-extensions v3_ca \
-out /etc/ssl/CA/certs/ca.cert.pem \
-subj "/C=ID/ST=Jakarta/L=Jakarta/O=MyOrg/OU=IT/CN=My Root CA"5. Membuat Server Private Key dan CSR
Buat private key dan Certificate Signing Request (CSR) untuk server yang akan menggunakan sertifikat:
# Buat server private key
openssl genrsa -out /etc/ssl/CA/private/server.key.pem 2048
# Buat file konfigurasi untuk CSR (termasuk Subject Alternative Name)
# CATATAN: Chrome memerlukan SAN meskipun server hanya memiliki satu nama
tee /etc/ssl/CA/server_csr.cnf <<'EOF'
[req]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
CN = server.local
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = server.local
DNS.2 = www.server.local
IP.1 = 192.168.1.100
EOF
# Buat CSR
openssl req -config /etc/ssl/CA/server_csr.cnf \
-key /etc/ssl/CA/private/server.key.pem \
-new -sha256 -out /etc/ssl/CA/server.csr.pem \
-subj "/C=ID/ST=Jakarta/L=Jakarta/O=MyOrg/OU=IT/CN=server.local"6. Menandatangani CSR dengan Root CA
Proses signing mengubah CSR menjadi sertifikat yang valid dan dipercaya oleh CA Anda:
# Tandatangani CSR menggunakan Root CA
sudo openssl ca -config /etc/ssl/CA/openssl.cnf \
-extensions v3_req \
-days 365 -notext -md sha256 \
-in /etc/ssl/CA/server.csr.pem \
-out /etc/ssl/CA/certs/server.cert.pem \
-batch
# Verifikasi sertifikat
openssl x509 -in /etc/ssl/CA/certs/server.cert.pem -text -nooutMengonfigurasi Browser untuk Mempercayai Root CA
Setelah sertifikat server dibuat, langkah selanjutnya adalah mengimpor sertifikat Root CA ke browser agar tidak muncul peringatan keamanan.
Firefox
Buka Settings → Privacy & Security
Scroll ke bawah dan klik View Certificates
Pada tab Authorities, klik Import
Pilih file
ca.cert.pemdan centang Trust this CA to identify websites
Brave / Chrome
Buka Settings → Privacy & Security → Security
Klik Manage certificates
Pada tab Authorities, klik Import
Pilih file
ca.cert.pemdan berikan kepercayaan penuh
Pertimbangan Keamanan dan Best Practices
Berdasarkan pengalaman kami dalam mengelola infrastruktur PKI, berikut beberapa best practices yang perlu diperhatikan:
Simpan Root CA secara offline: Root CA sebaiknya tidak terhubung ke jaringan setelah proses signing selesai. Gunakan Intermediary CA untuk operasional harian.
Gunakan passphrase yang kuat: Private key Root CA harus dilindungi dengan passphrase minimal 20 karakter.
Rotasi sertifikat secara berkala: Meskipun sertifikat bisa dibuat dengan masa berlaku panjang, pertimbangkan untuk memperbaruinya setiap 1-2 tahun sesuai standar industri.
Catat semua penerbitan: File
index.txtberisi log semua sertifikat yang diterbitkan — jaga file ini untuk audit trail.Perhatikan dukungan SAN: Browser modern seperti Chrome tidak akan menerima sertifikat tanpa Subject Alternative Name (SAN), meskipun server hanya memiliki satu hostname.
Kesimpulan
Membangun CA Server dengan OpenSSL memberikan kontrol penuh atas infrastruktur keamanan jaringan internal Anda. Dengan mengikuti panduan ini, Anda dapat menghilangkan ketergantungan pada sertifikat self-signed yang berisiko dan membangun sistem PKI yang terstruktur. Proses ini memang memerlukan investasi waktu di awal, tetapi manfaatnya dalam jangka panjang — mulai dari keamanan yang lebih baik hingga kemudahan manajemen sertifikat — sangat signifikan. Mulailah dari Root CA yang solid, dan bangun hierarki kepercayaan yang scalable sesuai kebutuhan organisasi Anda.
FAQ
Apa perbedaan antara Root CA dan Intermediate CA?
Root CA adalah otoritas tertama dalam hierarki PKI yang sertifikatnya self-signed dan disimpan secara offline. Intermediate CA (atau Subordinate CA) diterbitkan oleh Root CA dan digunakan untuk operasional harian — menerbitkan sertifikat untuk server dan layanan. Jika Intermediate CA dikompromi, Root CA dapat mencabutnya tanpa mempengaruhi seluruh infrastruktur.
Mengapa sertifikat saya tetap ditolak oleh Chrome?
Chrome memerlukan ekstensi Subject Alternative Name (SAN) pada setiap sertifikat, bahkan jika server hanya memiliki satu hostname. Pastikan Anda menyertakan SAN dalam konfigurasi CSR menggunakan parameter req_extensions = v3_req dengan section [alt_names].
Berapa lama sertifikat Root CA sebaiknya berlaku?
Root CA umumnya dibuat dengan masa berlaku 10-20 tahun karena proses rotasinya kompleks. Sertifikat server yang diterbitkan sebaiknya memiliki masa berlaku lebih pendek (1-3 tahun) untuk mengurangi risiko jika terjadi kompromi.
Apakah aman menjalankan CA Server di virtual machine?
Ya, menjalankan CA Server di VM memberikan fleksibilitas dalam backup dan snapshot. Namun, pastikan VM tersebut memiliki akses jaringan yang sangat terbatas, gunakan enkripsi disk, dan pertimbangkan untuk menyimpan private key Root CA di perangkat terpisah yang tidak terhubung ke jaringan (air-gapped).
Bagaimana cara mencabut sertifikat yang sudah diterbitkan?
Gunakan perintah berikut untuk mencabut sertifikat dan membuat Certificate Revocation List (CRL):
# Cabut sertifikat
sudo openssl ca -config /etc/ssl/CA/openssl.cnf \
-revoke /etc/ssl/CA/newcerts/1000.pem
# Buat CRL baru
sudo openssl ca -config /etc/ssl/CA/openssl.cnf \
-gencrl -out /etc/ssl/CA/crl/ca.crl.pem