Mengamankan layanan dengan TLS di OpenBSD: mengenal LibreSSL sebagai fork OpenSSL yang lebih bersih, memakai openssl CLI untuk inspeksi dan pembuatan kunci, mengotomatiskan sertifikat Let's Encrypt dengan acme-client, dan melakukan TLS termination di httpd dan relayd.

Di episode 9 sebelumnya, kalian melihat httpd memakai file sertifikat untuk HTTPS — tetapi dari mana sertifikat itu datang dan bagaimana mengelolanya? Episode ini menjawabnya: TLS dan infrastruktur sertifikat di OpenBSD.
OpenBSD tidak memakai OpenSSL. Ia memakai LibreSSL, fork yang dibuat oleh proyek OpenBSD karena frustrasi terhadap OpenSSL yang lambat merespons kerentanan (ingat Heartbleed 2014). LibreSSL mempertahankan kompatibilitas API SSL_* namun dengan kode yang dibersihkan dan praktik keamanan modern. Kalian akan belajar memakainya lewat CLI openssl, lalu mengotomatiskan sertifikat dengan acme-client.
LibreSSL adalah fork OpenSSL yang di-maintain bersama OpenBSD. Yang membedakannya:
libcrypto dipisah dari frontend.SSL_*, EVP_*, dan X509_* tetap bekerja.Ketika menjalankan openssl di OpenBSD, kalian sebenarnya memakai binary LibreSSL. Verifikasi dengan:
openssl versionHasilnya akan menampilkan LibreSSL X.Y.Z, bukan versi OpenSSL.
openssl adalah alat serbaguna. Operasi yang paling sering dipakai:
openssl genrsa -out server.key 4096
openssl req -x509 -new -key server.key -days 365 -out selfsigned.crt
openssl x509 -in example.com.crt -text -nooutgenrsa membuat kunci RSA (untuk praktik; untuk produksi pertimbangkan ECDSA).req -x509 membuat sertifikat self-signed untuk pengujian lokal.x509 -text menampilkan rincian sertifikat — cara memeriksa masa berlaku dan CN.Inspeksi koneksi juga penting:
openssl s_client -connect example.com:443 -servername example.com
openssl s_client -starttls smtp -connect example.com:25s_client menunjukkan sertifikat yang disajikan dan cipher yang dinegosiasikan. Opsi -starttls smtp memeriksa STARTTLS untuk mail — relevan di episode 17.
acme-client adalah klien ACME bawaan OpenBSD untuk menerbitkan sertifikat dari Let's Encrypt atau CA lain. Konfigurasinya di /etc/acme-client.conf:
authority letsencrypt {
api url "https://acme-v02.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-privkey.pem"
}
domain example.com {
domain key "/etc/ssl/private/example.com.key"
domain full chain certificate "/etc/ssl/example.com.crt"
sign with letsencrypt
alternative names { blog.example.com }
}Blok authority mendefinisikan CA, dan blok domain menentukan domain, lokasi kunci, dan sertifikat. alternative names menambah SAN.
Untuk menerbitkan sertifikat pertama kali:
acme-client -v example.comPerintah ini menegosiasikan dengan Let's Encrypt, memverifikasi kepemilikan domain lewat HTTP challenge (yang dijawab httpd pada episode 9), lalu menulis kunci dan sertifikat.
Sertifikat Let's Encrypt berlaku 90 hari, jadi renewal harus otomatis. OpenBSD menyediakan skrip /etc/weekly.local yang dijalankan cron secara berkala:
acme-client example.com
rcctl reload httpd
rcctl reload relaydDengan ini, setiap minggu acme-client memeriksa dan memperbarui sertifikat yang hampir kedaluwarsa, lalu memuat ulang layanan yang memakainya. Otomatisasi tanpa alat pihak ketiga.
Danger
Setelah sertifikat diperbarui, daemon yang memuatnya (httpd, relayd, smtpd) harus di-reload agar memakai kunci baru. Lupa reload berarti layanan tetap melayani sertifikat lama — termasuk di episode 16 saat relayd melakukan TLS termination.
TLS termination berarti daemon menangani enkripsi di pintu depan, lalu meneruskan trafik plaintext ke backend. httpd melakukannya lewat blok tls (episode 9). relayd juga mendukung ini — dan di episode 16 kalian akan melihat relayd menggabungkan termination TLS dengan load balancing.
Praktik terbaik yang konsisten di kedua daemon:
/etc/ssl/ (publik) dan kunci privat di /etc/ssl/private/ dengan permission 600.Setelah semuanya berjalan, uji dari luar:
openssl s_client -connect example.com:443 </dev/null | openssl x509 -noout -dates -subjectIni menampilkan tanggal berlaku dan subjek sertifikat yang benar-benar disajikan server. Jika tanggal tidak berubah setelah renew, ada masalah reload.
Di episode 10 ini kalian mengamankan layanan dengan TLS: mengenal LibreSSL sebagai fork OpenSSL yang bersih, memakai openssl CLI untuk membuat dan memeriksa kunci serta sertifikat, mengotomatiskan sertifikat Let's Encrypt dengan acme-client, dan melakukan TLS termination di httpd dan relayd.
Inti yang harus dibawa pulang:
openssl version membuktikannya.acme-client menerbitkan dan memperbarui sertifikat dari /etc/acme-client.conf./etc/weekly.local dan harus diikuti reload daemon./etc/ssl/private/ dengan permission ketat.Di episode 11 selanjutnya, kita akan mengelola data dan backup — merawat filesystem dengan fsck, memakai dump dan restore, memanfaatkan snapshot FFS, dan mengombinasikan tar, cpio, dan rsync untuk strategi backup base system yang benar-benar bisa dipulihkan.