Episode ini menjelaskan cara mengaktifkan HTTP/2 dan HTTP/3, membatasi ssl_protocols dan ssl_ciphers, serta menerapkan HSTS, OCSP stapling, dan custom DH parameters untuk TLS yang kokoh.

Memiliki HTTPS itu wajib, tapi tidak cukup. Episode 9 membuat kalian aman; episode 10 ini membuat kalian kuat dan cepat. Kita membahas SSL/TLS security hardening, ditambah protokol modern HTTP/2 dan HTTP/3.
Kalian akan mengaktifkan HTTP/2 yang memultipleks koneksi, menyiapkan HTTP/3 berbasis UDP/QUIC, membatasi protokol TLS hanya ke versi terkuat, memilih cipher suite yang tepat, serta menyalakan HSTS, OCSP stapling, dan custom DH parameters. Di akhir episode, konfigurasi TLS kalian siap menghadapi audit keamanan.
HTTP/2 memungkinkan banyak request berjalan paralel dalam satu koneksi TCP, menghilangkan masalah head-of-line blocking versi HTTP/1.1:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}Modifier http2 pada listen cukup untuk mengaktifkannya. Browser modern otomatis bernegosiasi HTTP/2 melalui ALPN saat handshake TLS.
HTTP/3 dibangun di atas QUIC yang berjalan di UDP. Ia menawarkan latensi lebih rendah dan perpindahan koneksi lebih mulus:
server {
listen 443 ssl http2;
listen 443 quic reuseport;
server_name example.com;
http3 on;
ssl_early_data on;
add_header Alt-Svc 'h3=":443"';
}listen 443 quic reuseport; membuka listener UDP untuk QUIC, dan http3 on; mengaktifkan protokolnya. Header Alt-Svc memberi tahu browser bahwa HTTP/3 tersedia di port 443.
TLS 1.0 dan TLS 1.1 sudah lama tidak aman. Hanya izinkan versi modern:
server {
listen 443 ssl http2;
server_name example.com;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
}ssl_protocols TLSv1.2 TLSv1.3; memblokir protokol lama. Cipher yang dipilih hanya berbasis ECDHE dan AES-GCM, kombinasi tercepat sekaligus terkuat untuk hardware modern.
Diffie-Hellman parameters memengaruhi kekuatan pertukaran kunci. Hasilkan parameter custom 2048-bit:
sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048Lalu referensikan di server block:
server {
listen 443 ssl http2;
server_name example.com;
ssl_dhparam /etc/nginx/dhparam.pem;
}openssl dhparam -out /etc/nginx/dhparam.pem 2048 memakan waktu beberapa menit, tapi hasilnya parameter kuat yang unik untuk server kalian.
HSTS memberitahu browser untuk tidak pernah memakai HTTP untuk domain tersebut selama periode tertentu:
server {
listen 443 ssl http2;
server_name example.com;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
}Strict-Transport-Security dengan max-age=63072000 (dua tahun), includeSubDomains, dan preload menyingkirkan kemungkinan serangan downgrade ke HTTP. Karena header ini dikirim oleh server HTTPS, jangan aktifkan preload sebelum seluruh subdomain yakin memakai HTTPS.
OCSP stapling membuat server menyertakan bukti kevalidan sertifikat langsung saat handshake, sehingga browser tidak perlu bertanya ke CA:
server {
listen 443 ssl http2;
server_name example.com;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
}ssl_stapling on; mengaktifkan fitur ini dan resolver menentukan DNS server untuk menemukan OCSP responder.
Satu server block yang merangkum semua praktik terbaik:
server {
listen 443 ssl http2;
listen 443 quic reuseport;
server_name example.com;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
http3 on;
ssl_early_data on;
add_header Alt-Svc 'h3=":443"';
}Uji konfigurasi dengan nginx -t, reload, dan gunakan curl -I https://example.com untuk memastikan HTTP/2 dan Alt-Svc muncul di respons.
Episode 10 menuntaskan lapisan keamanan TLS: kalian mengaktifkan HTTP/2 dan HTTP/3, membatasi protokol dan cipher ke yang terkuat, memasang custom DH parameters, menyalakan HSTS dan OCSP stapling, serta merangkumnya dalam satu konfigurasi yang kokoh.
Inti yang harus dibawa pulang:
listen 443 ssl http2; mengaktifkan HTTP/2; http3 on; mengaktifkan HTTP/3.ssl_protocols TLSv1.2 TLSv1.3; memblokir protokol usang.ssl_dhparam memperkuat pertukaran kunci Diffie-Hellman.Di episode 11 selanjutnya kita akan membahas security hardening dan rate limiting — menyembunyikan versi NGINX, kontrol akses berbasis IP, rate limiting request dan koneksi, security headers, serta batas ukuran body untuk mitigasi DDoS dan brute-force.