Karşılıklı TLS (mTLS) Sunucu Kurulumu - Corelux

Karşılıklı TLS (mTLS) Sunucu Kurulumu - Corelux - Corelux
31 May 2026
Paylaş:

Karşılıklı TLS (mTLS) Sunucu Kurulumu ve Yönetimi

Son Güncelleme: Mayıs 2026

mTLS (Mutual TLS / karşılıklı kimlik doğrulama), sunucu ile istemci arasında her iki tarafın da sertifika ile doğrulandığı bir güvenlik mekanizmasıdır. Bu rehberde mTLS temel kavramları, OpenSSL ile sertifika otorisi (CA) oluşturma, Nginx ve Apache konfigürasyon örnekleri, otomasyon ve pratik kullanım senaryoları adım adım açıklanmaktadır.

İçindekiler

mTLS Nedir?

mTLS, standart TLS (Transport Layer Security / Taşıma Katmanı Güvenliği) el sıkışmasına ek olarak istemcinin de sunucuya bir sertifika ile kimliğini kanıtlamasını gerektiren bir yöntemdir. Standart TLS’de sadece sunucu doğrulanırken, mTLS ile her iki taraf da doğrulanır; böylece yetkisiz istemcilerin erişimi engellenir.

Neden mTLS Kullanılmalı?

  • Güvenlik: Yetkisiz erişimlerin sertifika düzeyinde engellenmesi.
  • Kimlik: Kullanıcı adı/parola yerine güçlü sertifika tabanlı kimlik doğrulama.
  • İzlenebilirlik: Hangi istemcinin hangi isteği gönderdiğinin kesin olarak bilinmesi.
  • Uyumluluk: PCI DSS, HIPAA gibi ek güvenlik gereksinimlerini destekler.

Bileşenler ve Terminoloji

mTLS kurulumu yaparken tanışacağınız temel terimler ve Türkçe karşılıkları:

  • CA (Certificate Authority): Sertifika Otoritesi (Sertifika veren kurum).
  • CSR (Certificate Signing Request): Sertifika İmzalama Talebi.
  • Client Cert (İstemci Sertifikası): İstemcinin kimliğini doğrulayan sertifika.
  • Server Cert (Sunucu Sertifikası): Sunucunun kimliğini doğrulayan sertifika.
  • PKI (Public Key Infrastructure): Açık Anahtar Altyapısı.

Sertifika Üretimi (OpenSSL Örneği)

Aşağıdaki örnek, küçük ölçekli bir PKI için openssl kullanarak bir CA, bir sunucu sertifikası ve bir istemci sertifikası üretimini gösterir. Komutlar Linux/Unix (ör. Ubuntu, CentOS) üzerinde çalıştırılabilir.

Adımlar:

  1. CA anahtarı ve kendinden imzalı kök sertifika oluşturma:
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj "/C=TR/ST=Istanbul/L=Istanbul/O=CoreluxCA/OU=IT/CN=corelux.local"
  1. Sunucu anahtarı ve CSR oluşturma:
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/C=TR/ST=Istanbul/L=Istanbul/O=Corelux/OU=Web/CN=example.corelux.local"
  1. Sunucu sertifikasını imzalama (CA ile):
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 825 -sha256
  1. İstemci anahtarı ve CSR oluşturma:
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -subj "/C=TR/ST=Istanbul/L=Istanbul/O=CoreluxClient/OU=Clients/CN=client1"
  1. İstemci sertifikasını imzalama:
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 825 -sha256
# PKCS#12 dosyası (istemci uygulamalarında kullanmak için)
openssl pkcs12 -export -out client.p12 -inkey client.key -in client.crt -certfile ca.crt -passout pass:Parola123

Not: Üretim ortamında ca.key güvenli bir HSM (Hardware Security Module / Donanım Güvenlik Modülü) veya ayrı, güvenli bir sunucuda saklanmalıdır.

Nginx Konfigürasyonu

Nginx ile mTLS sağlamak için ssl_client_certificate ve ssl_verify_client direktifleri kullanılır. Aşağıdaki örnek, istemci sertifikasını doğrulayan temel bir server bloğu gösterir.

server {
    listen 443 ssl;
    server_name example.corelux.local;

    ssl_certificate /etc/ssl/certs/server.crt;
    ssl_certificate_key /etc/ssl/private/server.key;
    ssl_client_certificate /etc/ssl/certs/ca.crt; # CA sertifikası
    ssl_verify_client on; # isteğe bağlı olarak optional_no_ca

    location / {
        proxy_pass http://127.0.0.1:8080;
        # İstemci sertifikasından CN almak için header ekleme
        proxy_set_header X-Client-Cert $ssl_client_cert;
    }
}

Alternatif doğrulama seviyeleri:

  • on: İstemci sertifikası zorunludur ve doğrulanır.
  • optional: Sertifika isteyip doğrular; sertifika yoksa bağlantıya izin verir.
  • optional_no_ca: Sertifika sunulmuşsa doğrular ama sadece sizin CA'nız tarafından imzalanma zorunluluğu aramaz.

Apache (httpd) Konfigürasyonu

Apache’de mod_ssl kullanılarak mTLS etkinleştirilebilir. Aşağıdaki örnek VirtualHost içinde gösterilmiştir.


    ServerName example.corelux.local

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
    SSLCACertificateFile /etc/ssl/certs/ca.crt

    # İstemci doğrulaması zorunlu
    SSLVerifyClient require
    SSLVerifyDepth 2

    # İstemci sertifika bilgilerini environment olarak aktarma
    SSLOptions +StdEnvVars

    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

Apache ile istemci sertifikasının Common Name (CN) bilgisine SSL_CLIENT_S_DN_CN environment değişkeni ile erişebilirsiniz.

Otomasyon ve Yönetim

Büyük ölçekli dağıtımlarda manuel sertifika yönetimi hataya açıktır. Otomasyon ve Life-cycle yönetimi için öneriler:

  • ACME veya otomatik yenileme: İstemci sertifikaları için özel ACME sunucuları ya da Vault kullanımı.
  • Vault: HashiCorp Vault veya benzer bir PKI çözümü ile merkezi sertifika yönetimi.
  • Sertifika rotasyonu: Anahtar değişimini düzenli planlayın (ör. 90-180 gün).
  • Monitoring: Sertifika sona erme (expiration) için uyarılar kurun.

Kullanıcı (İstemci) Provizyonlama

İstemci sertifikaları dağıtımı için seçenekler:

  • PKCS#12 dosyası: Masaüstü uygulamalar veya tarayıcılara .p12 dosyası ile aktarım.
  • Yönetilen istemci sertifikaları: Mobil cihaz yönetimi (MDM) veya şirket içi yazılılarla otomatik kurulum.
  • Scoped sertifikalar: Her uygulama/servis için ayrı subject veya SAN (Subject Alternative Name) kullanın.

Uygulama Senaryoları

mTLS aşağıdaki senaryolarda etkili olur:

  • API sunucuları: İç API’ler arası güvenli iletişim için ideal.
  • Microservice iletişimi: Hizmetler arası güveni güçlendirir.
  • Yönetim panelleri: Sadece yetkili makinelerin erişimi için kullanın.
  • VPN alternatifi: Belirli servisler için hafif, sertifika tabanlı erişim kontrolü.

TLS vs mTLS Karşılaştırma

Özellik TLS mTLS
Kimlik Doğrulama Sunucu doğrulanır Sunucu ve istemci doğrulanır
Güvenlik Seviyesi Yüksek Daha yüksek (sertifika bazlı)
Yönetim Maliyeti Düşük-Orta Orta-Yüksek (sertifika yönetimi gerektirir)
Kullanım Alanı Genel HTTPS trafiği API, microservice ve yönetim arayüzleri

Sorun Giderme ve En Yaygın Hatalar

  • Sertifika zinciri hataları: CA sertifikasını doğru yerde (sunucu tarafında) tanımlayın.
  • Tarayıcı uyumluluğu: Bazı tarayıcılar client.p12 yüklerken ek ayar isteyebilir.
  • CN/SAN uyuşmazlığı: Sunucu sertifikasının CN veya SAN alanları ile erişilen hostname eşleşmelidir.
  • Doğrulama seviyesi yanlış ayarı: optional yerine on/require kullanımı fark yaratır.

Pratik Örnekler

Örnek 1: İç API'ler için Nginx önünde mTLS, arka uç servislerine proxy pass ile güvenli bağlantı sağlanması. Bu yapı, sadece yetkili hizmetlerin API'ye erişmesine izin verir.

Örnek 2: Yönetim panelleri (ör. cPanel/WHM benzeri) için ek bir doğrulama katmanı olarak mTLS kullanımı; sadece şirket makinelerinin erişimine izin verilir.

Sıkça Sorulan Sorular

mTLS ile API anahtarı (API key) birlikte kullanılabilir mi?

Evet. mTLS istemci kimliğini doğrularken, API anahtarı uygulama seviyesinde ek yetkilendirme (authorization) sağlamak için kullanılabilir. Bu kombinasyon iki katmanlı güvenlik sunar.

İstemci sertifikasını tarayıcıya nasıl yüklerim?

Oluşturduğunuz .p12 (PKCS#12) dosyasını tarayıcıya import ederek yükleyebilirsiniz. Mobil cihazlarda MDM çözümleri ile otomatik dağıtım tercih edilir.

mTLS performansı negatif etkiler mi?

El sıkışma (handshake) sürecinde ek doğrulama adımları olduğundan küçük bir ek maliyet vardır. Ancak modern donanım ve TLS offloading/terminasyon çözümleri ile bu yük minimaldir.

Load balancer arkasında mTLS nasıl uygulanır?

Load balancer (yük dengeleyici) üzerinde mTLS terminasyonu yapılabilir veya terminasyon sonrası backend'lere de mTLS ile bağlanma uygulanabilir. Önemli nokta CA zincirinin tüm katmanlarda tutarlı olmasıdır.

Sertifika kaybolursa ne yapmalıyım?

Kayıp veya kompromize olmuş bir istemci sertifikası tespit edilirse, ilgili sertifikanın seri numarası ile CRL (Certificate Revocation List) veya OCSP ile iptal (revoke) edilmelidir. Üretim ortamında hızlı iptal mekanizmaları kurun.

Sonuç

Özetle, mTLS sunucu ve istemci arasındaki güveni artıran, özellikle iç API'ler, microservice mimarileri ve yönetim panelleri için güçlü bir çözümdür. Uygulama öncesi PKI yönetimi, sertifika rotasyonu ve otomasyon konularını planlayın. Gereksinimlerinize göre mTLS uygulamasını Corelux altyapısı üzerinde test edebilir, ölçeklendirme ihtiyaçlarınız için Türkiye VPS Sunucu veya yüksek performanslı çözümler için Kiralık Sunucu hizmetlerimizi değerlendirebilirsiniz. Sertifika ve yönetim ihtiyaçlarınız için SSL Sertifikası hizmetimize göz atın ve kritik verileriniz için Yedekleme Hizmeti ile birlikte uygulayın.

Bu rehber uygulama odaklıdır; üretim ortamına geçmeden önce test ortamlarında (staging) doğrulama ve güvenlik kontrolleri yapmayı unutmayın.

Yazar

Boran BAR

Chat on WhatsApp