Episode ini mengelola TLS dan sertifikat di Alpine: OpenSSL 3 sebagai default, instalasi ca-certificates dan update-ca-certificates, pembuatan key dan CSR, pemasangan sertifikat Let's Encrypt dengan certbot atau acme.sh, serta dasar-dasar PKI.

Hampir semua layanan modern berjalan di atas TLS, dan Alpine menyediakan tooling kriptografi yang lengkap. Episode 15 membahas OpenSSL 3 sebagai default Alpine, manajemen bundle CA, pembuatan key dan CSR, penerbitan sertifikat Let's Encrypt, serta dasar-dasar PKI.
Di episode 11, virtual host nginx memakai HTTP di port 80. Episode ini mengubahnya menjadi HTTPS: kalian akan memasang sertifikat, mengamankan konfigurasi nginx, dan memahami cara kerja rantai kepercayaan.
Sejak Alpine 3.14, OpenSSL 3 menjadi default — membawa API baru dan kebijakan keamanan yang lebih ketat. Bundle sertifikat CA dikelola lewat paket ca-certificates:
apk add openssl ca-certificates
openssl version
update-ca-certificatesPenjelasan:
openssl version menampilkan versi OpenSSL 3.update-ca-certificates membangun ulang bundle CA dari direktori /usr/share/ca-certificates dan /etc/ssl/certs.Cek bahwa bundle CA valid:
ls -la /etc/ssl/certs/ca-certificates.crt
getent hosts alpinelinux.orgBundle ca-certificates.crt adalah file yang dipakai aplikasi untuk memverifikasi sertifikat server.
Saat perlu sertifikat untuk internal atau pengujian, buat key dan Certificate Signing Request (CSR):
mkdir -p /etc/ssl/private
openssl genrsa -out /etc/ssl/private/example.key 4096
openssl req -new -key /etc/ssl/private/example.key \
-out /etc/ssl/example.csr \
-subj "/CN=example.com/O=Example Org/C=ID"Kemudian ajukan CSR ke CA internal atau publik, dan gabungkan sertifikat yang diterima:
openssl x509 -req -in /etc/ssl/example.csr \
-signkey /etc/ssl/private/example.key \
-out /etc/ssl/example.crt -days 365openssl x509 -req -in ... -signkey ... membuat sertifikat self-signed untuk pengujian cepat. Jangan pernah memakai self-signed di produksi publik.
Untuk sertifikat publik yang dipercaya semua browser, gunakan Let's Encrypt. Alpine menyediakan certbot dan acme.sh di repository:
apk add certbot certbot-nginx
certbot --nginx -d example.comcertbot --nginx -d example.com menerbitkan sertifikat dan mengonfigurasi nginx secara otomatis. Alternatif ringan memakai acme.sh:
apk add acme.sh
acme.sh --issue --standalone -d example.comSertifikat yang dihasilkan berada di direktori instalasi acme.sh, lalu pasang di nginx.
Memahami PKI (Public Key Infrastructure) membantu kalian membaca konfigurasi TLS:
Periksa sertifikat yang terpasang:
openssl x509 -in /etc/ssl/example.crt -text -noout | head -20
openssl s_client -connect example.com:443 </dev/null 2>/dev/null | openssl x509 -noout -datesopenssl s_client -connect example.com:443 membaca sertifikat langsung dari server, berguna untuk memeriksa masa berlaku dari luar.
Perbarui virtual host dari episode 11 dengan blok SSL:
server {
listen 443 ssl;
server_name example.com;
root /var/www/app;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
}Validasi dan muat ulang:
nginx -t
rc-service nginx reloadPastikan renew otomatis berjalan — sertifikat Let's Encrypt berlaku 90 hari:
certbot renew --dry-run
crontab -lJadwal certbot renew --dry-run memverifikasi bahwa renew otomatis bekerja.
Warning
Jangan pernah membagikan private key. Simpan di /etc/ssl/private dengan izin root-only, dan pastikan direktori ini tidak bisa dibaca proses lain.
Episode 15 mengelola TLS dan sertifikat di Alpine: OpenSSL 3 dan ca-certificates, pembuatan key dan CSR, penerbitan sertifikat Let's Encrypt dengan certbot dan acme.sh, dasar-dasar PKI, serta penerapan HTTPS di nginx.
Inti yang harus dibawa pulang:
Di episode 16 selanjutnya kita akan membahas container runtime: Docker dan Podman — menginstall Docker di Alpine, memakai Podman yang daemonless, membangun image dari base alpine, dan teknik multi-stage build dengan apk --no-cache.