API gateway, istemcilerle arka uç servisleri arasındaki tek giriş noktasıdır; bu yüzden TLS yapılandırması hatasının bedeli yüksektir. Amaç, dışarıda güçlü şifreleme sunarken içeride de trafiği gereksiz yere açıkta bırakmamaktır.
TLS sonlandırma modelleri
- Edge termination: TLS gateway'de biter, arka uca düz HTTP gider. Basittir ancak iç ağın güvenilir olduğunu varsayar.
- Re-encryption: Gateway TLS'i çözer, yetkilendirme ve yönlendirmeyi yapar, arka uca yeniden TLS ile bağlanır. Düzenlemeye tabi veriler için daha uygundur.
- Passthrough: Gateway trafiği çözmeden iletir; yönlendirme yalnızca SNI'ye göre yapılabilir, başlık tabanlı kurallar çalışmaz.
Gateway tarafında önerilen ayarlar
server {
listen 443 ssl http2;
server_name api.ornek.com;
ssl_certificate /etc/ssl/api.ornek.com.fullchain.pem;
ssl_certificate_key /etc/ssl/api.ornek.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
location / {
proxy_pass https://backend.internal:8443;
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /etc/ssl/internal-ca.pem;
proxy_ssl_server_name on;
}
}
Buradaki proxy_ssl_verify on satırı kritiktir; varsayılan olarak Nginx arka uç sertifikasını doğrulamaz.
Dikkat edilecekler
- Sertifikayı tam zincirle (fullchain) sunun; eksik ara sertifika bazı istemcilerde hataya yol açar.
- Servisten servise çağrılarda karşılıklı TLS (mTLS) kullanmayı değerlendirin; istemci sertifikası gateway'de
ssl_verify_clientile doğrulanabilir. - Yetkilendirme belirteçlerini (JWT, API anahtarı) günlüklere yazmayın.
- Sertifika bitiş tarihlerini izleyin; gateway sertifikasının dolması tüm API'leri aynı anda düşürür.
- Birden çok alt alan adı için wildcard SSL yönetimi kolaylaştırır, ancak özel anahtarı paylaşılan her düğümde korumanız gerekir.
Doğrulama
Dışarıdan openssl s_client -connect api.ornek.com:443 -tls1_2 ile el sıkışmayı, SSL Checker ile zinciri ve süreyi kontrol edin.
Özetle gateway'de modern protokoller, tam zincir ve doğrulamalı arka uç bağlantısı birlikte uygulanmalıdır.