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) 을 지정해야 합니다.

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

  • 인증서의 주체 속성은 CN(일반 이름)이 서버 컴퓨터의 호스트 이름이나 FQDN(정규화된 도메인 이름)과 동일함을 나타내야 합니다. 호스트 이름을 사용하는 경우 인증서에 DNS 접미사를 지정해야 합니다. SQL Server가 장애 조치(Failover) 클러스터에서 실행 중일 경우 일반 이름은 가상 서버의 호스트 이름이나 FQDN과 일치해야 하며 인증서는 장애 조치 클러스터의 모든 노드에 프로비전되어야 합니다. 예를 들어 노드가 2개인 클러스터가 있고 노드의 이름이 test1.*<your company>*.comtest2.*<your company>*.com이며 virtsql이라는 가상 서버가 있는 경우 두 노드에 virtsql.*<your company>*.com에 대한 인증서를 설치해야 합니다. SQL 클러스터에 대한 자세한 내용은 장애 조치(failover) 클러스터링을 설치하기 전에를 참조하세요.

  • 가용성 그룹 수신기에 연결할 때 장애 조치(failover) 클러스터의 각 참여 서버 노드에 대해 프로비전되는 인증서에는 인증서의 주체 대체 이름에 설정된 모든 가용성 그룹 수신기 목록도 있어야 합니다. 자세한 내용은 수신기 및 TLS/SSL 인증서를 참조하세요. SQL Always On 대한 자세한 내용은 Always On 가용성 그룹 수신기에 연결을 참조하세요.

  • 주체 대체 이름에는 클라이언트가 SQL Server 인스턴스에 연결하는 데 사용할 수 있는 모든 이름이 포함되어야 합니다. 가용성 그룹을 사용하는 경우 주체 대체 이름에는 localhost와 만든 수신기의 NetBIOS 및 FQDN(정규화된 도메인 이름)이 포함되어야 합니다.

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

Important

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

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

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