Mutual TLS (mTLS) iki tarafın birbirini sertifikayla doğruladığı TLS oturumudur. Mikroservisler, API ağ geçitleri ve şirketler arası entegrasyonlarda, ağ konumuna güvenmek yerine her çağrıyı kimlikle bağlamak için kullanılır.
Nasıl çalışır?
- İstemci sunucu sertifikasını doğrular (normal TLS).
- Sunucu istemciden sertifika ister (CertificateRequest).
- İstemci kendi sertifikasını ve imzayı gönderir; sunucu güvendiği CA ile doğrular.
- Başarılıysa kimlik (örn. Subject veya SAN) yetkilendirmede kullanılır.
Sunucu tarafı (Nginx)
server {
listen 443 ssl;
ssl_certificate /etc/pki/servis.crt;
ssl_certificate_key /etc/pki/servis.key;
ssl_client_certificate /etc/pki/ic-ca.crt;
ssl_verify_client on;
}
Nginx'in arka uca mTLS ile bağlanması
location /api/ {
proxy_pass https://arka-uc.ic:8443;
proxy_ssl_certificate /etc/pki/gateway.crt;
proxy_ssl_certificate_key /etc/pki/gateway.key;
proxy_ssl_trusted_certificate /etc/pki/ic-ca.crt;
proxy_ssl_verify on;
}
Test
curl --cacert ic-ca.crt --cert istemci.crt --key istemci.key https://servis.ic/saglik
openssl s_client -connect servis.ic:443 -cert istemci.crt -key istemci.key -CAfile ic-ca.crt
Sertifikasız denemede bağlantının reddedildiğini de doğrulayın.
Operasyonel ipuçları
- Kısa ömürlü istemci sertifikaları kullanın ve yenilemeyi otomatikleştirin; iptal yönetimi yükünü azaltır.
- Sunucu sertifikasının SAN'ında istemcilerin bağlandığı ad bulunsun.
- Özel anahtarlar iş yükünden çıkmasın; mümkünse gizli yönetim aracı kullanın.
- Service mesh kullanıyorsanız mTLS çoğu zaman mesh tarafından otomatik sağlanır.
Sonuç
mTLS, parola paylaşımından daha güçlü ve otomasyona uygun bir kimlik doğrulamadır; ancak sertifika yaşam döngüsü yönetimi gerektirir. Dışa açık uç noktalar için SSL sertifikaları sayfamıza, yapılandırma kontrolü için SSL Checker aracına bakabilirsiniz.