Włączanie protokołu LDAP przez SSL za pomocą niezależnego urzędu certyfikacji

W tym artykule opisano sposób włączania protokołu Lightweight Directory Access Protocol (LDAP) za pośrednictwem protokołu Secure Sockets Layer (SSL) za pomocą niezależnego urzędu certyfikacji.

Dotyczy: Windows Server 2012 R2
Oryginalny numer KB: 321051

Podsumowanie

Protokół LDAP jest używany do odczytu i zapisu w usłudze Active Directory. Domyślnie ruch LDAP jest przesyłany bez zabezpieczeń. Można zabezpieczyć ruch LDAP i sprawić, że będzie poufny, używając technologii SSL /TLS (Transport Layer Security). Protokół LDAP włącza się przez SSL (LDAPS), instalując właściwie sformatowany certyfikat urzędu certyfikacji (CA) Microsoft lub niezależnego urzędu ceryfikacji zgodnie z zaleceniami przedstawionymi w tym artykule.

Nie istnieje żaden interfejs użytkownika do konfigurowania protokołu LDAPS. Zainstalowanie ważnego certyfikatu na kontrolerze domeny umożliwia usłudze LDAP nasłuchiwanie i automatyczne akceptowanie połączeń SSL zarówno dla protokołu LDAP, jak i ruchu globalnego.

Wymagania dotyczące certyfikatu LDAPS

Aby włączyć protokół LDAPS, należy zainstalować certyfikat, który spełnia następujące wymagania:

  • Certyfikat LDAPS jest umieszczony w osobistym magazynie certyfikatów komputera lokalnego (w programowaniu znanym jako Mój magazyn certyfikatów).

    Uwaga

    Jeśli w magazynie usług katalogowych NT (NTDS) znajduje się certyfikat, kontroler domeny użyj certyfikatu w magazynie NTDS.

  • Klucz prywatny, który pasuje do certyfikatu, znajduje się w magazynie komputera lokalnego i jest poprawnie skojarzony z tym certyfikatem. Klucz prywatny nie powinien mieć włączonej silnej ochrony klucza prywatnego.

  • Rozszerzenie użycia klucza rozszerzonego zawiera identyfikator obiektu uwierzytelniania serwera (1.3.6.1.5.5.7.3.1) (znany także jako OID).

  • W pełni kwalifikowana nazwa domeny Active Directory kontrolera domeny (na przykład dc01.contoso.com) musi pojawiać się w jednym z następujących miejsc:

    • Nazwa pospolita (CN) w polu Podmiot.
    • Wpis DNS w rozszerzeniu alternatywnej nazwy podmiotu.
  • Certyfikat został wydany przez urząd certyfikacji, któremu ufają kontroler domeny i klienci LDAPS. Zaufanie ustanawia się, konfigurując klientów i serwer, tak aby ufały głównemu urzędowi certyfikacji, z którym łączy się wystawiający urząd certyfikacji.

  • Do wygenerowania klucza należy użyć dostawcy usług kryptograficznych (CSP) Schannel.

Tworzenie żądania certyfikatu

Każdy program narzędziowy lub aplikacja, która tworzy prawidłowe żądanie PKCS #10, może być używana do tworzenia żądania certyfikatu SSL. Do tworzenia żądania użyj programu Certreq.

Program Certreq.exe wymaga tekstowego pliku instrukcji do wygenerowania odpowiedniego żądania certyfikatu X.509 dla kontrolera domeny. Plik ten tworzy się, używając preferowanego edytora tekstów ASCII. Plik należy zapisać z rozszerzeniem .inf w dowolnym folderze na dysku twardym.

Aby zażądać certyfikatu uwierzytelnienia serwera, który jest odpowiedni dla LDAPS, wykonaj następujące kroki:

  1. Utwórz plik .inf. Do utworzenia żądania certyfikatu można użyć następującego przykładowego pliku .inf.

    ;----------------- request.inf -----------------

    [Version]

    Signature="$Windows NT$

    [NewRequest]

    Subject = "CN=<DC fqdn>" ; zastąp ciąg nazwą FQDN kontrolera domeny
    KeySpec = 1
    KeyLength = 1024
    ; Dopuszczalne wartości 1024, 2048, 4096, 8192 lub 16384.
    ; Dłuższe klucze są bezpieczniejsze, ale mają
    ; większy wpływ na wydajność.
    Exportable = TRUE
    MachineKeySet = TRUE
    SMIME = False
    PrivateKeyArchive = FALSE
    UserProtected = FALSE
    UseExistingKeySet = FALSE
    ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
    ProviderType = 12
    RequestType = PKCS10
    KeyUsage = 0xa0

    [EnhancedKeyUsageExtension]

    OID=1.3.6.1.5.5.7.3.1 ; to jest potrzebne do uwierzytelnienia serwera

    ;-----------------------------------------------

    Wytnij i wklej przykładowy plik do nowego pliku tekstowego o nazwie Request.inf. Podaj w pełni kwalifikowaną nazwę serwera DNS kontrolera domeny w żądaniu.

    Niektóre niezależne urzędy certyfikacji mogą wymagać dodatkowych informacji w parametrze Subject. Takie informacje obejmują adres e-mail (E), jednostkę organizacyjną (OU), organizację (O), miejscowość lub miasto (L), stan lub prowincję (S) oraz kraj lub region (C). Można dołączyć te informacje do nazwy podmiotu (CN) w pliku Request.inf. Przykład:

    Subject="E=admin@contoso.com, CN=<DC fqdn>, OU=Servers, O=Contoso, L=Redmond, S=Washington, C=US."

  2. Utwórz plik żądania, uruchamiając następujące polecenie w wierszu polecenia:

    certreq -new request.inf request.req
    

    Zostanie utworzony nowy plik Request.req. Jest to plik żądania kodowany w standardzie base64.

  3. Prześlij żądanie do urzędu certyfikacji CA. Żądanie można przesłać do urzędu certyfikacji Microsoft lub niezależnego urzędu certyfikacji.

  4. Pobierz wystawiony certyfikat, a następnie zapisz go jako Certnew.cer w tym samym folderze, co plik żądania, wykonując poniższe kroki:

    1. Utwórz nowy plik o nazwie Certnew.cer.
    2. Otwórz plik w Notatniku, wklej zakodowany certyfikat do pliku, a następnie zapisz plik.

    Uwaga

    Zapisany certyfikat musi być zakodowany w standardzie base64. Niektóre niezależne urzędy certyfikacji zwracają wystawiony certyfikat do żądającego w postaci zakodowanego w standardzie base64 tekstu w wiadomości e-mail.

  5. Zaakceptuj wystawiony certyfikat, uruchamiając następujące polecenie w wierszu polecenia:

    certreq -accept certnew.cer
    
  6. Sprawdź, czy certyfikat jest zainstalowany w osobistym magazynie komputera, wykonując poniższe kroki:

    1. Uruchom konsolę Microsoft Management Console (MMC).
    2. Dodaj przystawkę Certyfikaty, która zarządza certyfikatami na komputerze lokalnym.
    3. Rozwiń gałąź Certyfikaty (Komputer lokalny), gałąź Osobiste, a następnie gałąź Certyfikaty. Nowy certyfikat powinien istnieć w magazynie osobistym. W oknie dialogowym Właściwości certyfikatu zamierzone przeznaczenie jest wyświetlane w polu Uwierzytelnienie serwera. Certyfikat jest wystawiony na w pełni kwalifikowaną nazwę hosta komputera.
  7. Uruchom ponownie kontroler domeny.

Więcej informacji o tworzeniu żądania certyfikatu można znaleźć w dokumencie Advanced Certificate Enrollment and Management. Aby wyświetlić ten oficjalny dokument, zobacz Zaawansowane rejestrowanie certyfikatów i zarządzanie nimi.

Sprawdzanie połączenia LDAPS

Po zainstalowaniu certyfikatu wykonaj następujące kroki, aby sprawdzić, czy protokół LDAPs jest włączony:

  1. Uruchom narzędzie Active Directory Tool (Ldp.exe).

  2. W menu Connection kliknij polecenie Connect.

  3. Wpisz nazwę kontrolera domeny, z którym chcesz się połączyć.

  4. Wpisz 636 jako numer portu.

  5. Kliknij przycisk OK.

    Informacje RootDSE powinny być umieszczone w prawym okienku, wskazując pomyślne połączenie.

Możliwe problemy

  • Rozszerzone żądanie Start TLS

    Komunikacja LDAPS odbywa się za pośrednictwem portu TCP 636. Komunikacja LDAPS z serwerem wykazu globalnego odbywa się za pośrednictwem portu TCP 3269. Podczas łączenia z portem 636 lub 3269, przed zainicjowaniem wymiany ruchu LDAP następuje negocjacja w protokole SSL/TLS.

  • Wielokrotne certyfikaty SSL

    Schannel, dostawca protokołu Microsoft SSL, wybiera pierwszy ważny certyfikat znajdowany w magazynie komputera lokalnego. Jeśli istnieje kilka ważnych certyfikatów dostępnych w magazynie komputera lokalnego, Schannel może nie znaleźć poprawnego certyfikatu.

  • Problem buforowania certyfikatu Pre-SP3 SSL

    Jeśli istniejący certyfikat LDAPS zostanie zastąpiony przez inny certyfikat w wyniku procesu odnawiania lub z powodu zmiany wystawiającego urzędu certyfikacji, należy ponownie uruchomić serwer, aby dostawca Schannel użył nowego certyfikatu.

Ulepszenia

Pierwotnie w tym artykule zalecano umieszczenie certyfikatów w osobistym magazynie lokalnym komputera. Chociaż opcja ta jest obsługiwana, certyfikaty można umieszczać także w magazynie certyfikatów usługi NTDS w systemie Windows Server 2008 oraz w nowszych wersjach usług domenowych w usłudze Active Directory (AD DS). Aby uzyskać więcej informacji na temat sposobu dodawania certyfikatów do osobistego magazynu certyfikatów usługi NTDS, zobacz Event ID 1220 - LDAP over SSL.

Usługi AD DS w pierwszej kolejności szukają certyfikatów w tym magazynie, a następnie w magazynie komputera lokalnego. Ułatwia to konfigurację usług AD DS na potrzeby stosowania wybranego certyfikatu. W magazynie osobistym komputerów lokalnych może znajdować się wiele certyfikatów, więc określenie wybranego certyfikatu może być trudne.

Usługi AD DS wykrywają moment wyświetlania nowego certyfikatu w magazynie, a następnie inicjują aktualizację certyfikatu SSL bez konieczności ponownego uruchamiania tych usług AD DS lub kontrolera domeny.

W celu ręcznego zainicjowania aktualizacji certyfikatów SSL przez usługi AD DS baz konieczności ponownego uruchamiania tych usług AD DS lub kontrolera domeny można użyć nowej operacji rootDse o nazwie renewServerCertificate. Atrybut ten można zaktualizować za pomocą polecenia adsiedit.msc lub importując zmianę w formacie LDAP Directory Interchange Format (LDIF) za pomocą polecenia ldifde.exe. Aby uzyskać więcej informacji na temat korzystania z LDIF do aktualizacji tego atrybutu, zobacz renewServerCertificate.

Na koniec, jeśli kontroler domeny systemu Windows Server 2008 lub nowszej wersji znajdzie wiele certyfikatów w swoim magazynie, zostanie wybrany losowo jeden z tych certyfikatów.

Opisana procedura działa w usługach Windows Server 2008 AD DS oraz Active Directory Lightweight Directory Services (AD LDS) 2008. W przypadku usług AD LDS certyfikaty należy umieścić w osobistym magazynie certyfikatów usługi odpowiadającej wystąpieniu usług AD LDS zamiast usług NTDS.