다음을 통해 공유


SQL Server에 대한 인증서 요구 사항

이 문서에서는 SQL Server에 대한 인증서 요구 사항 및 인증서가 이러한 요구 사항을 충족하는지 확인하는 방법을 설명합니다.

SQL Server 암호화에 대한 인증서 요구 사항

SQL Server 암호화에 TLS(전송 계층 보안)를 사용하는 경우 다음 조건을 충족하는 인증서(세 가지 디지털 형식 중 하나)를 프로비전해야 합니다.

  • 인증서는 로컬 컴퓨터 인증서 저장소 또는 SQL Server 서비스 계정 인증서 저장소에 있어야 합니다. SQL Server 시작 계정 변경으로 인증서를 다시 구성할 수 없으므로 로컬 컴퓨터 인증서 저장소를 사용하는 것이 좋습니다.

  • SQL Server 서비스 계정에는 TLS 인증서에 액세스하는 데 필요한 권한이 있어야 합니다. 자세한 내용은 연결을 암호화하기 위한 SQL Server 데이터베이스 엔진 구성을 참조하세요.

  • 현재 시스템 시간은 인증서의 유효 시작 속성의 값 이후여야 하며, 유효 종료 속성의 값 이전이어야 합니다. 자세한 내용은 만료된 인증서를 참조하세요.

    비고

    인증서는 서버 인증용이어야 합니다. 이렇게 하려면 인증서의 고급 키 사용 속성이서버 인증(1.3.6.1.5.5.7.3.1)을 지정해야 합니다.

  • 해당 인증서는 KeySpecAT_KEYEXCHANGE 옵션을 사용하여 만들어야 합니다. 이렇게 하려면 레거시 암호화 스토리지 공급자 를 사용하여 프라이빗 키를 저장하는 인증서가 필요합니다. 일반적으로 인증서의 키 사용 속성(KEY_USAGE)에는 키 암호화() 및 디지털 서명(CERT_KEY_ENCIPHERMENT_KEY_USAGECERT_DIGITAL_SIGNATURE_KEY_USAGE)도 포함됩니다.

  • 주체 대체 이름에는 클라이언트가 SQL Server 인스턴스에 연결하는 데 사용할 수 있는 모든 이름이 포함되어야 합니다.

클라이언트는 서버에서 사용하는 인증서의 소유권을 확인할 수 있어야 합니다. 클라이언트에 서버 인증서에 서명한 인증 기관의 공개 키 인증서가 있는 경우 추가 구성이 필요하지 않습니다. Microsoft Windows에는 많은 인증 기관의 공개 키 인증서가 포함되어 있습니다. 클라이언트에 공개 키 인증서가 없는 공용 또는 프라이빗 인증 기관에서 서버 인증서에 서명한 경우 SQL Server에 연결하려는 각 클라이언트에 서버 인증서에 서명한 인증 기관의 공개 키 인증서를 설치해야 합니다.

중요합니다

인증서가 컴퓨터 저장소에 있는 경우 SQL Server는 시작되지 않지만 위 목록의 일부 요구 사항만 충족하고 SQL Server Configuration Manager 또는 레지스트리 항목을 통해 수동으로 사용하도록 구성된 경우에만 시작됩니다. 모든 요구 사항을 충족하는 다른 인증서를 선택하거나 SQL Server에서 생성된 자체 서명된 인증서에 설명된 대로 요구 사항을 충족하는 인증서를 프로비전하거나 자체 생성된 인증서를 사용할 수 있도록 SQL Server에서 인증서를 제거합니다.

Always On 가용성 그룹

SQL Server 인스턴스가 Always On 가용성 그룹의 일부인 경우 다음 방법 중 하나를 사용하여 인증서를 만들 수 있습니다.

  • 방법 1: 가용성 그룹의 모든 복제본에서 하나의 인증서를 사용합니다. 일반적인 이름은 임의로 지정할 수 있는 자리 표시자 값입니다. 가용성 그룹에 있는 모든 SQL Server 복제본의 호스트 이름 및 FQDN 및 가용성 그룹 수신기 이름은 인증서의 주체 대체 이름 에 포함되어야 합니다. 원래 인증서가 생성된 후 가용성 그룹에 추가된 경우 인증서는 모든 복제본의 이름으로 다시 생성되고 각 복제본에 다시 적용 되어야 합니다. 공용 또는 CA(공식 인증 기관)에서 인증서를 서명하지 않는 한 가용성 그룹 복제본 또는 가용성 그룹 수신기에 연결하는 모든 클라이언트의 인증서 저장소로 인증서를 가져와야 합니다. 인증서에 가용성 그룹 복제본 및 수신기 이름을 포함하지 않는 경우 가용성 그룹에 연결할 때 연결 문자열 값에 HostNameInCertificate 값 중 하나 또는 인증서 ServerCertificate 경로를 포함해야 합니다. 인증서에서 이름을 지정하는 것이 좋습니다.

    다음은 test1.<your company>.comtest2.<your company>.com이라는 두 서버와 aglistener.<your company>.com이라는 가용성 그룹 수신기가 있는 가용성 그룹에 대해 올바르게 구성된 인증서를 정의하는 속성의 예입니다.

    CN = <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name = aglistener.<your company>.com 
    DNS Name = test1.<your company>.com
    DNS Name = test2.<your company>.com
    DNS Name = aglistener
    DNS Name = test1
    DNS Name = test2
    
  • 방법 2: 가용성 그룹의 각 복제본에 대해 별도의 인증서를 사용합니다. 인증서가 생성된 후 가용성 그룹에 복제본을 추가하는 것은 모든 기존 복제본에서 모든 인증서를 수정하는 대신 새 복제본에 대한 인증서를 생성하기만 하면 되므로 별도의 인증서를 사용하는 경우 더 쉽습니다. 일반적인 이름은 임의로 선택될 수 있으며, 자리 표시자 값이 될 수 있습니다. 각 SQL Server 인스턴스의 호스트 이름 및 FQDN 및 가용성 그룹 수신기 이름은 각 복제본에 대한 인증서의 주체 대체 이름에 포함되어야 합니다. 각 인증서를 해당 복제본으로 가져오고, 공용 또는 CA(공식 인증 기관)에서 인증서에 서명하지 않는 한 모든 인증서를 복제본 또는 가용성 그룹 수신기에 연결하는 모든 클라이언트의 모든 인증서 저장소로 가져옵니다.

    다음은 이름이 test1.<your company>.comtest2.<your company>.com인 두 개의 인스턴스와 aglistener.<your company>.com라는 가용성 그룹 수신기가 있는 가용성 그룹에 대해 올바르게 구성된 인증서를 정의하는 속성의 예입니다.

    test1의 인증서:

    CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name= test1.<your company>.com 
    DNS Name= aglistener.<your company>.com
    DNS Name= aglistener
    DNS Name= test1
    

    test2의 인증서:

    CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager>
    DNS Name= test2.<your company>.com 
    DNS Name= aglistener.<your company>.com 
    DNS Name= aglistener
    DNS Name= test2 
    

장애 조치 클러스터 인스턴스

SQL Server가 장애 조치(failover) 클러스터 인스턴스로 구성된 경우 장애 조치(failover) 클러스터의 모든 노드에 가상 서버의 호스트 이름 또는 FQDN(정규화된 DNS 이름)을 사용하여 서버 인증서를 설치해야 합니다. 및 인증서는 장애 조치(failover) 클러스터의 모든 노드에서 프로비전되어야 합니다. 예를 들어 노드 이름이 지정 test1.<your company>.com 되고 test2.<your company>.comvirtsql이라는 가상 서버가 있는 두 노드 클러스터가 있는 경우 두 노드에 대한 인증서를 virtsql.<your company>.com 설치해야 합니다.

연결을 암호화하기 위해 SQL Server 데이터베이스 엔진 구성에 설명된 순서대로 인증서를 장애 조치(failover) 클러스터로 가져옵니다.

다음은 장애 조치(failover) 클러스터 인스턴스에 대해 올바르게 구성된 인증서를 정의하는 속성의 예입니다.

CN = virtsql.<your company>.com
DNS Name = virtsql.<your company>.com
DNS Name = virtsql

SQL 클러스터에 대한 자세한 내용은 장애 조치(failover) 클러스터링을 설치하기 전에 참조하세요.

인증서가 요구 사항을 충족하는지 확인

SQL Server 2019(15.x) 이상 버전에서 SQL Server Configuration Manager는 구성 단계 자체에서 모든 인증서 요구 사항의 유효성을 자동으로 검사합니다. 인증서를 구성한 후 SQL Server가 성공적으로 시작되면 SQL Server에서 해당 인증서를 사용할 수 있음을 나타냅니다. 그러나 일부 클라이언트 애플리케이션에는 암호화에 사용할 수 있는 인증서에 대한 다른 요구 사항이 있을 수 있으며 사용 중인 애플리케이션에 따라 다른 오류가 발생할 수 있습니다. 이 시나리오에서는 클라이언트 애플리케이션의 지원 설명서에서 주제에 대한 자세한 내용을 확인해야 합니다.

다음 방법 중 하나를 사용하여 SQL Server에서 사용할 인증서의 유효성을 확인할 수 있습니다.

  • sqlcheck 도구: sqlcheck 현재 컴퓨터 및 서비스 계정 설정을 검사하고 다양한 연결 오류 문제를 해결하는 데 유용한 텍스트 보고서를 콘솔 창에 생성하는 명령줄 도구입니다. 출력에는 인증서에 대한 다음 정보가 있습니다.

    Details for SQL Server Instance: This Certificate row in this section provides more details regarding the certificate being used by SQL Server (Self-generated, hard-coded thumbprint value, etc.).
    
    Certificates in the Local Computer MY Store: This section shows detailed information regarding all the certificates found in the computer certificate store.
    

    도구의 기능 및 다운로드 지침에 대한 자세한 내용은 CSS_SQL_Networking_Tools wiki 시작 항목을 참조하세요.

  • certutil 도구: certutil.exe 인증서 서비스의 일부로 설치된 명령줄 프로그램입니다. certutil.exe 사용하여 인증서 정보를 덤프하고 표시할 수 있습니다. 이 -v 옵션을 사용하여 자세한 정보를 가져옵니다. 자세한 내용은 certutil을 참조하세요.

  • 인증서 스냅인: 인증서 스냅인 창을 사용하여 컴퓨터의 다양한 인증서 저장소에 있는 인증서에 대한 자세한 정보를 볼 수도 있습니다. 그러나 이 도구는 KeySpec 정보를 표시하지 않습니다. MMC 스냅인을 사용하여 인증서를 보는 방법에 대한 자세한 내용은 방법: MMC 스냅인을 사용하여 인증서 보기를 참조하세요.

다른 이름의 인증서를 호스트 이름으로 가져오기

현재 인증서의 주체 이름이 컴퓨터의 호스트 이름과 일치하는 경우에만 SQL Server 구성 관리자를 사용하여 인증서를 가져올 수 있습니다.

다른 주체 이름의 인증서를 사용하려면 다음 단계를 수행합니다.

  1. 인증서 스냅인을 사용하여 로컬 컴퓨터 인증서 저장소로 인증서를 가져옵니다.

  2. SQL Server 구성 관리자에서 SQL Server 네트워크 구성을 확장하고 SQL Server 인스턴스를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택하여 instance_name< 속성에 대한 >프로토콜 대화 상자를 엽니다.

  3. 인증서 탭의 인증서 드롭다운 목록에서 인증서 저장소로 가져온 인증서 를 선택합니다.

    SQL Server 구성 관리자의 속성 대화 상자 인증서 탭 스크린샷

다른 이름의 인증서를 호스트 이름으로 가져오면 다음과 같은 오류 메시지가 표시됩니다.

The selected certificate name does not match FQDN of this hostname. This property is required by SQL Server
Certificate name: random-name
Computer name: sqlserver.___domain.com 

만료된 인증서

SQL Server는 구성 시 인증서의 유효성만 검사합니다. 예를 들어 SQL Server 2019(15.x) 이상 버전에서는 SQL Server Configuration Manager를 사용하여 만료된 인증서를 프로비전할 수 없습니다. 인증서가 이미 프로비전된 후 만료되는 경우 SQL Server는 문제 없이 계속 실행됩니다. 그러나 Power BI와 같은 일부 클라이언트 애플리케이션은 각 연결에서 인증서의 유효성을 확인하고 SQL Server 인스턴스가 암호화에 만료된 인증서를 사용하도록 구성된 경우 오류를 발생합니다. SQL Server 암호화에 만료된 인증서를 사용하지 않는 것이 좋습니다.

다음 단계