Blog

Active Directory’de LDAPS ve NTDS Store: Sertifika Seçim Mekanizmasına Derin Bakış

Active Directory ortamlarında LDAPS (LDAP over SSL/TLS) yapılandırması yapılırken çoğu yönetici sertifikanın doğru şekilde yüklendiğini gördüğünde işin tamamlandığını düşünür. Ancak gerçek hayatta yaşanan birçok LDAPS problemi, sertifikanın geçersiz olmasından değil, Domain Controller’ın beklenenden farklı bir sertifikayı kullanmasından kaynaklanır.

Özellikle yıllardır çalışan ortamlarda otomatik sertifika kayıtları (Auto Enrollment), sertifika yenilemeleri, servis sertifikaları ve farklı PKI projeleri sonucunda bir Domain Controller üzerinde birden fazla Server Authentication sertifikası bulunabilir. Böyle durumlarda Windows yalnızca bir sertifika seçer ve istemcilere onu sunar. Sorun da tam burada başlar.

Bu makalede Windows’un LDAPS sertifikasını nasıl seçtiğini, NTDS Store’un neden kritik öneme sahip olduğunu, GUI ve PowerShell kullanarak sertifikanın NTDS Store’a nasıl yerleştirileceğini ve son olarak kullanılan sertifikanın nasıl doğrulanacağını detaylı şekilde inceleyeceğiz.

Windows LDAPS Sertifikasını Nasıl Seçer?

Bir istemci 636 numaralı port üzerinden bir Domain Controller’a bağlandığında TLS el sıkışması (TLS Handshake) başlar. Bu aşamada Domain Controller istemciye hangi sertifikayı sunacağına karar vermek zorundadır.

Bu seçim işlemi iki aşamada gerçekleşir:

  • Validation (Doğrulama)
  • Selection (Seçim)

Validation Aşaması

İlk aşamada Windows yalnızca LDAPS gereksinimlerini karşılayan sertifikaları değerlendirir.

Bir sertifikanın LDAPS için uygun kabul edilmesi için aşağıdaki şartları sağlaması gerekir:

  • Private Key içermesi
  • Server Authentication EKU’suna sahip olması
  • EKU OID değerinin 1.3.6.1.5.5.7.3.1 olması
  • Subject veya SAN alanlarında Domain Controller isminin bulunması

Bu gereksinimleri karşılamayan sertifikalar doğrudan elenir.

Selection Aşaması

Validation aşamasını geçen birden fazla sertifika olabilir. En çok yanlış anlaşılan konu buradadır. Windows rastgele seçim yapmaz. Birden fazla uygun sertifika bulunduğunda Windows aşağıdaki kriteri kullanır: Geçerlilik süresi en uzun olan sertifika seçilir. Başka bir ifadeyle: NotAfter tarihi en ileri olan sertifika kullanılacaktır.

Örneğin aynı sunucuda iki geçerli LDAPS sertifikası varsa ve biri 2027 yılında, diğeri 2029 yılında sona eriyorsa Windows 2029 yılında sona erecek sertifikayı tercih edecektir.

NTDS Store ve Computer Store Arasındaki Fark

Çoğu admin yalnızca aşağıdaki sertifika deposunu bilir:

Local Computer\Personal

Ancak Domain Controller’larda ek olarak aşağıdaki özel sertifika deposu bulunur:

NTDS\Personal

Bu depo doğrudan Active Directory Domain Services tarafından kullanılır.

LDAPS sertifika seçiminde Windows aşağıdaki öncelik sırasını uygular:

  1. NTDS\Personal
  2. Local Computer\Personal

Yani NTDS Store içerisinde uygun bir sertifika varsa Windows başka hiçbir sertifikaya bakmaz.

Bu nedenle Microsoft uzun yıllardır kritik LDAPS senaryolarında kullanılacak sertifikanın NTDS Store içerisinde tutulmasını önermektedir.

Neden NTDS Store Kullanılmalı?

Kurumsal ortamlarda zaman içerisinde aşağıdaki durumlar yaşanır:

  • Auto Enrollment ile yeni sertifikalar gelir.
  • Sertifikalar yenilenir.
  • Yeni PKI altyapıları kurulur.
  • Eski sertifikalar silinmez.
  • Servis sertifikaları yüklenir.

Sonuç olarak bir Domain Controller üzerinde birden fazla Server Authentication sertifikası birikir. Bu durumda Windows bazen beklenmeyen bir sertifikayı seçebilir. NTDS Store kullanıldığında ise bu belirsizlik tamamen ortadan kalkar.

Çünkü: NTDS Store içindeki sertifika her zaman önceliklidir. Dolayısıyla LDAPS davranışı tamamen kontrol altına alınmış olur.

NTDS Store Kullanmanın Dezavantajı

Her teknolojide olduğu gibi bunun da bir bedeli vardır. Bir sertifika NTDS Store içerisine taşındığında Auto Enrollment artık bu sertifikayı yönetmez.

Bunun anlamı:

  • Sertifika otomatik yenilenmez.
  • Süre sonuna yaklaşınca manuel işlem gerekir.
  • Her Domain Controller ayrıca takip edilmelidir.

Yani NTDS Store daha fazla kontrol sağlar ancak ek operasyonel yük oluşturur.

Sertifika Template’inin Oluşturulması

İlk adım olarak NTDS Store için özel bir sertifika template’i oluşturulmalıdır.

CA sunucusunda:

Certification Authority
 Certificate Templates
 Manage

menüsü açılır.

Buradan:

Kerberos Authentication

template’i duplicate edilir.

General Sekmesi

Yeni template için örnek isim:

NTDS Store Kerberos Authentication

Compatibility Sekmesi

Hem istemci hem sunucu tarafında mümkün olan en yüksek sürümler seçilir.

Makalede minimum Windows Server 2012 R2 önerilmektedir.

Security Sekmesi

Aşağıdaki grupların Autoenroll yetkileri kaldırılır:

Enterprise Read-only Domain Controllers
Domain Controllers
Enterprise Domain Controllers

Amaç sertifikanın otomatik dağıtılmasını engellemektir.

Request Handling Sekmesi

Aşağıdaki seçenek etkinleştirilir:

Allow private key to be exported

Bu seçenek ileride PFX export işlemi yapabilmek için gereklidir.

Subject Name Sekmesi

Aşağıdaki seçenek seçilir:

Supply in the request

Ayrıca:

Use subject information from existing certificates for auto-enrollment renewal requests

işaretlenmez. Zaten Auto Enrollment kullanılmayacaktır.

Issuance Requirements Sekmesi

Aşağıdaki seçenek aktif edilir:

CA Certificate Manager Approval

Böylece sertifika talepleri manuel onaya düşer.

Yöntem 1: GUI Kullanarak NTDS Store’a Sertifika Yükleme

Makalenin ilk yöntemi GUI kullanılarak yapılmaktadır. Yazar özellikle şu notu düşmektedir: Bu yöntem Windows Server Core üzerinde çalışmaz. Çünkü gerekli sertifika yönetim araçları Server Core üzerinde bulunmamaktadır.

Sertifika Talebi Oluşturma

Domain Controller üzerinde:

certlm.msc

açılır.

Daha sonra:

Personal
All Tasks
Request New Certificate

sihirbazı başlatılır.

Enrollment sırasında aşağıdaki bilgiler girilir:

Subject Name

CN=DC FQDN

SAN Alanları

DC FQDN

Bu örnekler makaledeki laboratuvar ortamına aittir. Siz kendi FQDN bilgilerinizi kullanmalısınız.

Sertifikanın Onaylanması

CA sunucusunda:

Certification Authority > Pending Requests

bölümü açılır.

İlgili talep seçilir ve:

All Tasks > Issue

ile sertifika onaylanır.

Sertifikanın İndirilmesi

Makaledeki önemli bir not:

GUI üzerinden issued edilmiş sertifikayı geri alma yöntemi bulunmamaktadır.

Bu nedenle aşağıdaki komut kullanılır:

certutil -pulse

Bu komut CA ile iletişime geçerek sertifikayı indirir ve Local Computer\My Store içerisine yükler.

Sertifikanın PFX Olarak Export Edilmesi

Daha sonra sertifika:

Personal > Certificates > Export

adımları ile dışarı aktarılır.

Export sırasında:

Yes, export the private key

seçilmelidir.

Ek olarak:

Delete the private key if the export is successful
Enable certificate privacy

işaretlenir. Şifreleme türü olarak:

AES256-SHA256

önerilmektedir.

NTDS Store’un Açılması

MMC çalıştırılır:

mmc.exe

Ardından:

File > Add/Remove Snap-in > Certificates > Service Account > Local Computer > Active Directory Domain Services

seçilerek NTDS Store görünür hale getirilir.

Sertifikanın NTDS Store’a Import Edilmesi

NTDS\Personal > All Tasks > Import

seçilerek oluşturulan PFX dosyası içeri aktarılır. Import işlemi tamamlandığında sertifika artık Active Directory servis sertifika deposuna yüklenmiş oluyor.

Test

Aşağıdaki fonksiyonu kullanarak test ediyoruz.

function Get-CertificateFromTlsHandshake {
    param(
        [Parameter(Mandatory=$true, Position=0)]
        [string] $HostName,
        [int] $Port = 443,
        [string] $Destination
    )

    $tcp = New-Object System.Net.Sockets.TcpClient($HostName, $Port)
    $state = @{}
    $ssl = New-Object System.Net.Security.SslStream($tcp.GetStream(), $false, {
        param($Sender, $Certificate, $Chain, $SslPolicyErrors)
        $state.cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($Certificate)
        return $true
    })

    $ssl.AuthenticateAsClient($HostName)
    $ssl.Dispose()
    $tcp.Dispose()

    if (-Not [string]::IsNullOrEmpty($Destination)) {
        $AsByteStream = if ($PSEdition -eq 'Core') { @{AsByteStream = $true} } else { @{'Encoding' = 'Byte'} }
        Set-Content -Path $Destination -Value $cert.GetRawCertData() @AsByteStream
    }

    return $state.cert
}

Çıktıda, artık LDAPS için kullanılacak olan sertifikanın thumbprint listelenecektir.

Get-CertificateFromTlsHandshake -HostName DC FQDN -Port 636

LDAPS yapılandırması yalnızca geçerli bir sertifika üretmekten ibaret değildir.

Asıl önemli olan:

  • Windows’un sertifika seçim mantığını anlamak
  • Store önceliklerini bilmek
  • Sertifika yaşam döngüsünü yönetmek
  • Otomatik yenileme etkilerini değerlendirmek
  • Doğru sertifikanın gerçekten kullanıldığını doğrulamaktır

NTDS Store kullanımı sayesinde LDAPS davranışı tamamen öngörülebilir hale gelir. Ancak bunun karşılığında otomatik sertifika yönetiminden vazgeçilmiş olur. Bu nedenle kurumların kendi operasyonel süreçlerini göz önünde bulundurarak karar vermesi gerekir.

Sonuç olarak birden fazla LDAPS sertifikasının bulunduğu ortamlarda NTDS Store, Active Directory’nin hangi sertifikayı kullanacağını kesin olarak belirlemenin en güvenilir yöntemlerinden biridir. Doğru planlandığında LDAPS artık karmaşık ve öngörülemez bir yapı olmaktan çıkar, yönetilebilir ve sürdürülebilir bir servis haline gelir.

İlgili Makaleler

Bir yanıt yazın

Başa dön tuşu