이 문서에서는 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)을 지정해야 합니다.
해당 인증서는
KeySpec
의AT_KEYEXCHANGE
옵션을 사용하여 만들어야 합니다. 이렇게 하려면 레거시 암호화 스토리지 공급자 를 사용하여 프라이빗 키를 저장하는 인증서가 필요합니다. 일반적으로 인증서의 키 사용 속성(KEY_USAGE)에는 키 암호화() 및 디지털 서명(CERT_KEY_ENCIPHERMENT_KEY_USAGE
CERT_DIGITAL_SIGNATURE_KEY_USAGE
)도 포함됩니다.인증서의 Subject 속성은 CN(일반 이름)이 서버 컴퓨터의 호스트 이름 또는 FQDN(정규화된 도메인 이름)과 동일함을 나타내야 합니다. 호스트 이름을 사용하는 경우 인증서에 DNS 접미사를 지정해야 합니다. SQL Server가 장애 조치(failover) 클러스터에서 실행 중인 경우 일반 이름은 가상 서버의 호스트 이름 또는 FQDN과 일치해야 하며, 인증서는 장애 조치(failover) 클러스터의 모든 노드에서 프로비전되어야 합니다. 예를 들어 노드 이름이 지정
test1.*<your company>*.com
되고test2.*<your company>*.com
virtsql이라는 가상 서버가 있는 2노드 클러스터가 있는 경우 두 노드에 대한 인증서를virtsql.*<your company>*.com
설치해야 합니다. SQL 클러스터에 대한 자세한 내용은 장애 조치(failover) 클러스터링을 설치하기 전에 참조하세요.가용성 그룹 수신기에 연결할 때 장애 조치(failover) 클러스터의 각 참여 서버 노드에 대해 프로비전되는 인증서에는 인증서의 주체 대체 이름 에 설정된 모든 가용성 그룹 수신기 목록도 있어야 합니다. 자세한 내용은 수신기 및 TLS/SSL 인증서를 참조하세요. SQL Always On에 대한 자세한 내용은 Always On 가용성 그룹 수신기에 연결을 참조하세요.
주체 대체 이름에는 클라이언트가 SQL Server 인스턴스에 연결하는 데 사용할 수 있는 모든 이름이 포함되어야 합니다. 가용성 그룹을 사용하는 경우 주체 대체 이름에는 localhost 및 만든 수신기의 NetBIOS 및 FQDN(정규화된 도메인 이름)이 포함되어야 합니다.
클라이언트는 서버에서 사용하는 인증서의 소유권을 확인할 수 있어야 합니다. 클라이언트에 서버 인증서에 서명한 인증 기관의 공개 키 인증서가 있는 경우 추가 구성이 필요하지 않습니다. Microsoft Windows에는 많은 인증 기관의 공개 키 인증서가 포함되어 있습니다. 클라이언트에 공개 키 인증서가 없는 공용 또는 프라이빗 인증 기관에서 서버 인증서에 서명한 경우 SQL Server에 연결하려는 각 클라이언트에 서버 인증서에 서명한 인증 기관의 공개 키 인증서를 설치해야 합니다.
중요합니다
인증서가 컴퓨터 저장소에 있는 경우 SQL Server는 시작되지 않지만 위 목록의 일부 요구 사항만 충족하고 SQL Server Configuration Manager 또는 레지스트리 항목을 통해 수동으로 사용하도록 구성된 경우에만 시작됩니다. 모든 요구 사항을 충족하는 다른 인증서를 선택하거나 SQL Server에서 생성된 자체 서명된 인증서에 설명된 대로 요구 사항을 충족하는 인증서를 프로비전하거나 자체 생성된 인증서를 사용할 수 있도록 SQL Server에서 인증서를 제거합니다.
인증서가 요구 사항을 충족하는지 확인
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는 구성 시 인증서의 유효성만 검사합니다. 예를 들어 SQL Server 2019(15.x) 이상 버전에서는 Configuration Manager를 사용하여 만료된 인증서를 프로비전할 수 없습니다. 인증서가 이미 프로비전된 후 만료되는 경우 SQL Server는 문제 없이 계속 실행됩니다. 그러나 Power BI와 같은 일부 클라이언트 애플리케이션은 각 연결에서 인증서의 유효성을 확인하고 SQL Server 인스턴스가 암호화에 만료된 인증서를 사용하도록 구성된 경우 오류를 발생합니다. SQL Server 암호화에 만료된 인증서를 사용하지 않는 것이 좋습니다.