타사 인증 기관을 사용하여 SSL을 통한 LDAP 사용 설정

이 문서에서는 타사 인증 기관에서 SSL(Secure Sockets Layer)을 통해 LDAP(Lightweight Directory Access Protocol)를 사용 설정하는 방법을 설명합니다.

적용 대상: Windows Server 2012 R2
원본 KB 번호: 321051

요약

Active Directory에서 읽고 쓰는 데 LDAP를 사용합니다. 기본적으로 LDAP 트래픽은 보안되지 않은 상태로 전송됩니다. SSL/TLS(전송 계층 보안) 기술을 사용하면 LDAP 트래픽을 안전한 기밀 상태로 설정할 수 있습니다. 이 문서에 나와 있는 지침에 따라 Microsoft CA(인증 기관) 또는 타사 CA에서 발급한 적절한 형식의 인증서를 설치하면 LDAPS(SSL을 통한 LDAP)를 사용하도록 설정할 수 있습니다.

LDAPS를 구성할 수 있는 사용자 인터페이스는 없습니다. 도메인 컨트롤러에 유효한 인증서를 설치하면 LDAP 서비스가 LDAP 트래픽과 글로벌 카탈로그 트래픽을 위한 SSL 연결을 수신 대기하고 자동으로 수락할 수 있습니다.

LDAPS 인증서 설치를 위한 요구 사항

LDAPS를 사용하도록 설정하려면 다음 요구 사항을 충족하는 인증서를 설치해야 합니다.

  • LDAPS 인증서가 로컬 컴퓨터의 개인 인증서 저장소(프로그래밍 용어로는 컴퓨터의 내 인증서 저장소라고 함)에 있어야 합니다.

    참고

    NTDS(NT Directory Services) 저장소에 인증서가 있는 경우 DC는 대신 NTDS 저장소에서 인증서를 사용합니다.

  • 인증서와 일치하는 개인 키가 로컬 컴퓨터의 저장소에 있어야 하며 인증서와 올바르게 연결되어 있어야 합니다. 개인 키에서 강력한 개인 키 보호가 사용하도록 설정되어 있어서는 안 됩니다.

  • 확장된 키 사용 확장에 서버 인증(1.3.6.1.5.5.7.3.1) 개체 식별자(OID라고도 함)가 포함되어 있어야 합니다.

  • 도메인 컨트롤러의 Active Directory 정규화된 도메인 이름(예: dc01.contoso.com)이 다음 위치 중 하나에 표시되어야 합니다.

    • 제목 필드의 CN(일반 이름)
    • 주체 대체 이름 확장의 DNS 항목
  • 인증서가 도메인 컨트롤러 및 LDAPS 클라이언트가 신뢰하는 CA에서 발급된 것이어야 합니다. 인증서를 발급하는 CA가 연결되어 있는 루트 CA를 신뢰하도록 클라이언트와 서버를 구성하는 방식으로 신뢰 관계를 설정합니다.

  • Schannel CSP(암호화 서비스 공급자)를 사용하여 키를 생성합니다.

인증서 요청 만들기

유효한 PKCS #10 요청을 만드는 모든 유틸리티나 응용 프로그램을 사용하여 SSL 인증서 요청을 작성할 수 있습니다. 여기서는 Certreq를 사용하여 요청을 작성합니다.

certreq.exe를 실행하려면 도메인 컨트롤러에 대해 적절한 X.509 인증서 요청을 생성하기 위한 텍스트 지침 파일이 필요합니다. 원하는 ASCII 텍스트 편집기를 사용하여 이 파일을 만들 수 있습니다. 하드 드라이브의 원하는 폴더에 이 파일을 .inf 파일로 저장합니다.

LDAPS에 적합한 서버 인증 인증서를 요청하려면 다음 단계를 수행합니다.

  1. .inf 파일을 만듭니다. 인증서 요청을 만드는 데 사용할 수 있는 .inf 파일의 예는 다음과 같습니다.

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

    [Version]

    Signature="$Windows NT$

    [NewRequest]

    Subject = "CN=<DC fqdn>" ; 를 DC의 FQDN으로 바꿉니다.
    KeySpec = 1
    KeyLength = 1024
    ; 1024, 2048, 4096, 8192 또는 16384일 수 있습니다.
    ; 키 크기가 클수록 보안성도 우수하지만
    ; 성능에도 더 큰 영향을 줍니다.
    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 ; this is for Server Authentication

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

    샘플 파일을 복사하여 Request.inf라는 새 텍스트 파일에 붙여넣습니다. 요청에서 도메인 컨트롤러의 정규화된 DNS 이름을 제공합니다.

    Subject 매개 변수에서 추가 정보를 요구하는 타사 인증 기관도 있습니다. 이러한 정보로는 전자 메일 주소(E), 조직 구성 단위(OU), 조직(O), 구/군/시(L), 시/도(S), 국가/지역(C) 등이 있습니다. Request.inf 파일의 주체 이름(CN)에 이 정보를 추가할 수 있습니다. 예를 들면 다음과 같습니다.

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

  2. 명령 프롬프트에서 다음 명령을 실행하여 요청 파일을 만듭니다.

    certreq -new request.inf request.req
    

    Request.req라는 새 파일이 작성됩니다. 이 파일은 Base64로 인코딩된 요청 파일입니다.

  3. CA에 요청을 제출합니다. Microsoft CA 또는 타사 CA에 요청을 제출할 수 있습니다.

  4. 발급된 인증서를 검색하여 다음 단계를 따라 요청 파일과 같은 폴더에 Certnew.cer로 저장합니다.

    1. Certnew.cer이라는 새 파일을 만듭니다.
    2. 메모장에서 파일을 열고 인코딩된 인증서를 파일에 붙여넣은 후에 파일을 저장합니다.

    참고

    저장한 인증서는 Base64로 인코딩되어 있어야 합니다. 발급된 인증서를 전자 메일 메시지의 Base64로 인코딩된 텍스트로 요청자에게 반환하는 타사 CA도 있습니다.

  5. 명령 프롬프트에서 다음 명령을 실행하여 발급된 인증서를 수락합니다.

    certreq -accept certnew.cer
    
  6. 다음 단계를 따라 인증서가 컴퓨터의 개인 저장소에 설치되었는지 확인합니다.

    1. MMC(Microsoft Management Console)를 시작합니다.
    2. 로컬 컴퓨터의 인증서를 관리하는 인증서 스냅인을 추가합니다.
    3. 인증서(로컬 컴퓨터), 개인, 인증서를 차례로 확장합니다. 개인 저장소에 새 인증서가 있어야 합니다. 인증서 속성 대화 상자에서 인증서의 용도로 서버 인증이 표시되어야 합니다. 이 인증서는 컴퓨터의 정규화된 호스트 이름에 발급된 것입니다.
  7. 도메인 컨트롤러를 다시 시작합니다.

인증서 요청을 만드는 방법에; 대한 자세한 내용은 다음의 고급 인증서 등록 및 관리 백서를 참조하세요. 이 백서를 보려면 고급 인증서 등록 및 관리를 참조하세요.

LDAPS 연결 확인

인증서를 설치한 후에는 다음 단계를 수행하여 LDAPS가 사용하도록 설정되었는지 확인합니다.

  1. Active Directory 관리 도구(Ldp.exe)를 시작합니다.

  2. 연결 메뉴에서 연결을 클릭합니다.

  3. 연결하려는 도메인 컨트롤러의 이름을 입력합니다.

  4. 포트 번호로 636을 입력합니다.

  5. 확인을 클릭합니다.

    정상적인 연결을 나타내는 RootDSE 정보가 오른쪽 창에 인쇄되어야 합니다.

가능성이 있는 문제

  • TLS 확장 요청 시작

    LDAPS 통신이 TCP 636 포트를 통해 수행됩니다. 글로벌 카탈로그 서버에 대한 LDAPS 통신은 TCP 3269를 통해 수행됩니다. 포트 636 또는 3269에 연결할 때는 LDAP 트래픽을 교환하기 전에 SSL/TLS를 협상합니다.

  • 여러 SSL 인증서

    Microsoft SSL 공급자인 Schannel은 로컬 컴퓨터 저장소에서 처음으로 발견되는 유효한 인증서를 선택합니다. 로컬 컴퓨터 저장소에 사용 가능한 유효 인증서가 여러 개 있으면 Schannel이 올바른 인증서를 선택하지 못할 수 있습니다.

  • SP3 이전의 SSL 인증서 캐싱 문제

    갱신 프로세스를 수행하거나 발급 CA가 변경되어 기존 LDAPS 인증서를 다른 인증서로 바꾸는 경우에는 서버를 다시 시작해야 Schannel에서 새 인증서를 사용합니다.

개선 기능

이 문서에서 원래 권장했던 방식은 로컬 컴퓨터의 개인 저장소에 인증서를 저장하는 것이었습니다. 이 옵션이 지원되기는 하지만, Windows Server 2008 이상 버전의 AD DS(Active Directory Domain Services)에서는 NTDS 서비스의 개인 인증서 저장소에 인증서를 저장할 수도 있습니다. NTDS 서비스의 개인 인증서 저장소에 인증서를 추가하는 방법에 대한 자세한 내용을 확인하려면 Event ID 1220 - SSL을 통해 LDAP를 참조하세요.

AD DS는 기본적으로 로컬 컴퓨터의 저장소보다 이 저장소에서 먼저 인증서를 찾습니다. 따라서 AD DS가 원하는 인증서를 사용하도록 보다 쉽게 구성할 수 있습니다. 로컬 컴퓨터의 개인 저장소에는 인증서가 여러 개 있어서 어떤 인증서가 선택될지를 예측하기가 어려울 수 있기 때문입니다.

AD DS는 인증서 저장소에 추가되는 새 인증서를 검색한 다음 AD DS나 도메인 컨트롤러를 다시 시작하지 않고 SSL 인증서 업데이트를 트리거합니다.

renewServerCertificate이라는 새 rootDse 작업을 사용하면 AD DS나 도메인 컨트롤러를 다시 시작하지 않고도 AD DS가 해당 SSL 인증서를 업데이트하도록 수동으로 트리거할 수 있습니다. 이 특성은 adsiedit.msc를 사용하여 업데이트할 수도 있고 ldifde.exe를 통해 LDIF(LDAP Directory Interchange Format)로 변경 내용을 가져오는 방법으로 업데이트할 수도 있습니다. LDIF를 사용하여 이 특성을 업데이트하는 방법에 대한 자세한 내용은 renewServerCertificate를 참조하세요.

마지막으로 Windows Server 2008 이상 버전 도메인 컨트롤러가 해당 저장소에서 여러 인증서를 찾으면 이러한 인증서 중 하나를 임의로 선택합니다.

이러한 모든 기증은 Windows Server 2008 AD DS 및 2008 AD LDS(Active Directory Lightweight Directory Services)에서 작동합니다. AD LDS의 경우 NTDS 서비스가 아닌 AD LDS 인스턴스에 해당하는 서비스의 개인 인증서 저장소에 인증서를 추가하세요.