Episode ini membuka fase TLS: TLS termination versus TLS passthrough, pengaturan versi TLS dan cipher suites lewat TLSOption, sumber sertifikat dari file, Let's Encrypt, dan custom CA, serta default certificate dan peran SNI dalam memilih sertifikat yang tepat.

Episode 14 menandai peralihan besar: dari HTTP plaintext menuju HTTPS. Fase TLS ini berisi empat episode yang berturut-turut memperkuat keamanan transport. Di episode ini, kita membangun pemahaman dasar TLS di Traefik: apa itu TLS termination, apa itu passthrough, bagaimana mengatur versi dan cipher suite, dari mana sertifikat berasal, dan bagaimana SNI menentukan sertifikat mana yang dipakai.
Konsep yang paling penting di sini: TLS termination adalah default Traefik. Traefik memegang sertifikat, menangani handshake dengan klien, lalu meneruskan request dalam plaintext (atau re-encrypted) ke backend. Ini memusatkan semua pengelolaan sertifikat di satu titik — salah satu alasan Traefik sangat disukai.
Dalam TLS termination, handshake TLS terjadi di Traefik. Traefik memegang sertifikat privat key, mendekripsi trafik, dan bisa melakukan routing berdasarkan request. Karena trafik sudah didekripsi, semua middleware HTTP — headers, rate limit, auth — bekerja normal. Ini mode default.
Dalam TLS passthrough, Traefik hanya melewatkan koneksi TLS utuh ke backend tanpa mendekripsi. Traefik hanya melihat SNI untuk routing, tidak bisa menerapkan middleware HTTP. Backend yang memegang sertifikatnya sendiri. Ini digunakan untuk protokol non-HTTP atau persyaratan end-to-end encryption.
tcp:
routers:
db-tcp:
rule: "HostSNI(`db.example.com`)"
entrypoints:
- db
service: db-svc
tls:
passthrough: true
services:
db-svc:
loadBalancer:
servers:
- address: "10.0.0.60:5432"TLS passthrough pada router TCP membuka koneksi langsung ke database tanpa Traefik pernah melihat isinya. Kita bedah TCP routing lebih dalam di episode 18.
TLSOption adalah resource yang mengatur perilaku TLS: versi minimum dan maksimum, cipher suites, curve preferences, dan autentikasi klien. Contoh standar yang aman:
http:
tlsOptions:
hardened:
minVersion: VersionTLS12
maxVersion: VersionTLS13
cipherSuites:
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
curvePreferences:
- CurveP256
- CurveP384
sniStrict: trueminVersion: VersionTLS12: menolak TLS 1.0 dan 1.1 yang sudah usang.cipherSuites: membatasi algoritma enkripsi yang diterima. Untuk TLS 1.3, hanya AEAD suites yang tersedia.curvePreferences: urutan preferensi kurva elliptic.sniStrict: true: menolak koneksi yang SNI-nya tidak cocok dengan sertifikat apa pun.TLSOption dihubungkan ke router lewat nama:
http:
routers:
app:
rule: "Host(`app.example.com`)"
entrypoints:
- websecure
service: app-svc
tls:
options: hardenedSertifikat untuk Traefik bisa datang dari tiga sumber:
Semua sertifikat disimpan di certificate store dengan nama default. Ketika request masuk, Traefik mencocokkan SNI klien dengan sertifikat yang tersedia. Jika tidak ada yang cocok, Traefik memakai default certificate sebagai fallback.
Default certificate adalah jaring pengaman: jika Traefik tidak menemukan sertifikat yang cocok dengan SNI, dia mengirim default certificate ini. Tanpa pengaturan apa pun, Traefik memakai sertifikat internal yang dihasilkan sendiri (self-signed). Untuk production, definisikan sendiri:
tls:
stores:
default:
defaultCertificate:
certFile: /certs/default.crt
keyFile: /certs/default.keySNI adalah ekstensi TLS tempat klien menyebutkan nama host yang dituju sebelum handshake selesai. Inilah yang memungkinkan Traefik menghidangkan banyak domain dari satu IP: klien bilang "saya ingin app.example.com", Traefik memilih sertifikat app.example.com.
openssl s_client -connect app.example.com:443 -servername app.example.com -showcertsPerintah openssl s_client di atas menunjukkan seluruh rantai sertifikat yang dikirim Traefik berdasarkan SNI. Gunakan -servername berbeda untuk memverifikasi bahwa setiap domain menerima sertifikat yang benar — debugging standar masalah TLS multi-domain.
Warning
Tanpa SNI yang benar, klien lama atau alat yang tidak mengirim SNI akan menerima default certificate dan gagal verifikasi. Pastikan semua klien modern mengirim SNI — praktik sejak TLS 1.0.
Inti yang harus dibawa pulang:
Di episode 15 selanjutnya kita akan membahas Let's Encrypt & ACME — protokol ACME, konfigurasi certificate resolver dengan email dan storage, tiga jenis challenge, dan pengelolaan siklus hidup sertifikat termasuk renewal otomatis. Inilah fitur yang membuat HTTPS di Traefik hampir tanpa usaha.