다음을 통해 공유


SCHANNEL_CRED 구조체(schannel.h)

메모

SCHANNEL_CRED 구조체는 더 이상 사용되지 않습니다. 대신 SCH_CREDENTIALS 사용해야 합니다.

SCHANNEL_CRED 구조에는 Schannel 자격 증명에 대한 데이터가 포함됩니다.

통사론

typedef struct _SCHANNEL_CRED {
  DWORD          dwVersion;
  DWORD          cCreds;
  PCCERT_CONTEXT *paCred;
  HCERTSTORE     hRootStore;
  DWORD          cMappers;
  _HMAPPER       **aphMappers;
  struct         _HMAPPER;
  DWORD          cSupportedAlgs;
  ALG_ID         *palgSupportedAlgs;
  DWORD          grbitEnabledProtocols;
  DWORD          dwMinimumCipherStrength;
  DWORD          dwMaximumCipherStrength;
  DWORD          dwSessionLifespan;
  DWORD          dwFlags;
  DWORD          dwCredFormat;
} SCHANNEL_CRED, *PSCHANNEL_CRED;

회원

dwVersion

SCHANNEL_CRED_VERSION 설정합니다.

cCreds

paCred 배열의 구조 수입니다.

paCred

CERT_CONTEXT 구조체에 대한 포인터 배열입니다. 각 포인터는 애플리케이션을 인증하는 데 사용할 프라이빗 키 포함하는 인증서를 지정합니다. 일반적으로 이 배열에는 애플리케이션에서 지원하는 각 키 교환 메서드에 대해 하나의 구조가 포함됩니다.

클라이언트 애플리케이션은 종종 빈 목록을 전달하고 Schannel에 의존하여 적절한 인증서를 찾거나 필요한 경우 나중에 인증서를 만듭니다.

hRootStore

선택적. 서버 애플리케이션에만 유효합니다. 애플리케이션에서 신뢰하는 CA(인증 기관)에 대한 자체 서명된 루트 인증서가 포함된 인증서 저장소에 대한 핸들입니다. 이 멤버는 클라이언트 인증이 필요한 서버 쪽 애플리케이션에서만 사용됩니다.

cMappers

예약.

aphMappers

예약.

_HMAPPER

cSupportedAlgs

palgSupportedAlgs 배열의 알고리즘 수입니다.

palgSupportedAlgs

선택적. 이 구조를 사용하여 획득한 자격 증명으로 만든 연결에서 지원하는 알고리즘을 나타내는 ALG_ID 알고리즘 식별자 배열에 대한 포인터입니다. cSupportedAlgs 0이거나 palgSupportedAlgs NULL경우 Schannel은 시스템 기본값을 사용합니다.

현재 알고리즘 식별자는 CALG_AES, CALG_AES_128CALG_AES_256 지원되지 않습니다.

grbitEnabledProtocols

선택적. 이 구조를 사용하여 획득한 자격 증명으로 만든 연결에서 지원하는 프로토콜을 나타내는 비트 문자열을 포함하는 DWORD. 이 멤버가 0이면 Schannel이 프로토콜을 선택합니다. 새 개발의 경우 애플리케이션은 grbitEnabledProtocols 0으로 설정하고 기본적으로 시스템에서 사용하도록 설정된 프로토콜 버전을 사용해야 합니다.

이 멤버는 Microsoft Unified Security Protocol Provider 보안 패키지.

전역 시스템 레지스트리 설정이 이 값보다 우선합니다. 예를 들어 레지스트리에서 SSL3을 사용하지 않도록 설정한 경우 이 멤버를 사용하여 사용하도록 설정할 수 없습니다.

이 멤버는 다음 플래그를 포함할 수 있습니다.

의미
SP_PROT_PCT1_SERVER
0x00000001
Private Communications Technology 1.0 서버 쪽.
참고 사용되지 않습니다.
 
SP_PROT_PCT1_CLIENT
0x00000002
프라이빗 통신 기술 1.0 클라이언트 쪽.
참고 사용되지 않습니다.
 
SP_PROT_SSL2_SERVER
0x00000004
Secure Sockets Layer 2.0 서버 쪽. SP_PROT_TLS1_SERVER 대체됩니다.
중요 보안 소켓 계층 2.0 및 전송 계층 보안 1.2 플래그는 상호 배타적입니다.
 
Windows 10 버전 1607 및 Windows Server 2016.: 지원이 종료됩니다.
SP_PROT_SSL2_CLIENT
0x00000008
Secure Sockets Layer 2.0 클라이언트 쪽. SP_PROT_TLS1_CLIENT 대체됩니다.
중요 보안 소켓 계층 2.0 및 전송 계층 보안 1.2 플래그는 상호 배타적입니다.
 
Windows 10 버전 1607 및 Windows Server 2016.: 지원이 종료됩니다.
SP_PROT_SSL3_SERVER
0x00000010
Secure Sockets Layer 3.0 서버 쪽.
SP_PROT_SSL3_CLIENT
0x00000020
Secure Sockets Layer 3.0 클라이언트 쪽.
SP_PROT_TLS1_SERVER
0x00000040
전송 계층 보안 1.0 서버 쪽.
SP_PROT_TLS1_CLIENT
0x00000080
전송 계층 보안 1.0 클라이언트 쪽.
SP_PROT_TLS1_0_SERVER
SP_PROT_TLS1_SERVER
전송 계층 보안 1.0 서버 쪽.
SP_PROT_TLS1_0_CLIENT
SP_PROT_TLS1_CLIENT
전송 계층 보안 1.0 클라이언트 쪽.
SP_PROT_TLS1_1_SERVER
0x00000100
전송 계층 보안 1.1 서버 쪽.
SP_PROT_TLS1_1_CLIENT
0x00000200
전송 계층 보안 1.1 클라이언트 쪽.
SP_PROT_TLS1_2_SERVER
0x00000400
전송 계층 보안 1.2 서버 쪽.
중요 보안 소켓 계층 2.0 및 전송 계층 보안 1.2 플래그는 상호 배타적입니다.
 
SP_PROT_TLS1_2_CLIENT
0x00000800
전송 계층 보안 1.2 클라이언트 쪽.
중요 보안 소켓 계층 2.0 및 전송 계층 보안 1.2 플래그는 상호 배타적입니다.
 
SP_PROT_TLS1_3_SERVER
0x00001000
전송 계층 보안 1.3 서버 쪽.
중요 보안 소켓 계층 2.0 및 전송 계층 보안 1.2 플래그는 상호 배타적입니다.
 
SP_PROT_TLS1_3_CLIENT
0x00002000
전송 계층 보안 1.3 클라이언트 쪽.
중요 보안 소켓 계층 2.0 및 전송 계층 보안 1.3 플래그는 상호 배타적입니다.
 
SP_PROT_DTLS_SERVER
0x00010000
데이터그램 전송 계층 보안 서버 쪽.

Windows 8 및 Windows Server 2012: 지원이 추가되었습니다.

SP_PROT_DTLS_CLIENT
0x00020000
데이터그램 전송 계층 보안 클라이언트 쪽.

Windows 8 및 Windows Server 2012: 지원이 추가되었습니다.

SP_PROT_DTLS1_0_SERVER
SP_PROT_DTLS1_SERVER
데이터그램 전송 계층 보안 1.0 서버 쪽.

Windows 8 및 Windows Server 2012: 지원이 추가되었습니다.

SP_PROT_DTLS1_0_CLIENT
SP_PROT_DTLS1_CLIENT
Datagram 전송 계층 보안 1.0 클라이언트 쪽.

Windows 8 및 Windows Server 2012: 지원이 추가되었습니다.

SP_PROT_DTLS1_2_SERVER
0x00040000
Datagram 전송 계층 보안 1.2 서버 쪽.

Windows 10 버전 1607 및 Windows Server 2016.: 지원이 추가되었습니다.

SP_PROT_DTLS1_2_CLIENT
0x00080000
Datagram 전송 계층 보안 1.2 클라이언트 쪽.

Windows 10 버전 1607 및 Windows Server 2016.: 지원이 추가되었습니다.

SP_PROT_DTLS1_X_SERVER
Datagram 전송 계층 보안은 지원되는 모든 버전 서버 쪽입니다.

Windows 10 버전 1607 및 Windows Server 2016.: 지원이 추가되었습니다.

SP_PROT_DTLS1_X_CLIENT
Datagram 전송 계층 보안은 지원되는 모든 버전 클라이언트 쪽입니다.

Windows 10 버전 1607 및 Windows Server 2016.: 지원이 추가되었습니다.

dwMinimumCipherStrength

연결에 허용되는 최소 대량 암호화 강도(비트)입니다.

이 멤버가 0이면 Schannel은 시스템 기본값을 사용합니다. 이 멤버가 –1이면 SSL3/TLS MAC 전용 암호 그룹(NULL 암호라고도 함)만 사용하도록 설정됩니다.

dwMaximumCipherStrength

연결에 허용되는 최대 대량 암호화 강도(비트)입니다.

이 멤버가 0이면 Schannel은 시스템 기본값을 사용합니다.

이 멤버가 –1이면 SSL3/TLS MAC 전용 암호 그룹(NULL 암호라고도 함)만 사용하도록 설정됩니다. 이 경우 dwMinimumCipherStrength -1로 설정해야 합니다.

dwSessionLifespan

Schannel이 세션을 세션 캐시에 유지하는 시간(밀리초)입니다. 이 시간이 지나면 클라이언트와 서버 간의 새 연결에 새 Schannel 세션이 필요합니다. 기본값인 360000000밀리초(10시간)를 사용하려면 이 멤버의 값을 0으로 설정합니다.

dwFlags

Schannel의 동작을 제어하는 비트 플래그를 포함합니다. 이 멤버는 0이거나 다음 값의 조합일 수 있습니다.

의미
SCH_CRED_AUTO_CRED_VALIDATION
0x00000020
클라이언트 전용입니다.

이 플래그는 SCH_CRED_MANUAL_CRED_VALIDATION 반대이며 Schannel의 기본 동작의 일부입니다.

SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE
0x00020000
AcquireCredentialsHandle(Schannel)호출하는 동안 지정된 자격 증명의 유효성을 검사할 때 CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 플래그를 CertGetCertificateChain 함수에 전달하도록 Schannel에 지시합니다.

Windows Server 2003 및 Windows XP/2000: 이 플래그는 지원되지 않습니다.

SCH_CRED_DISABLE_RECONNECTS
0x00000080
서버 전용입니다.

이 플래그를 설정하면 이 자격 증명으로 수행된 전체 핸드셰이크가 다시 연결할 수 없습니다. 캐시 항목이 만들어지므로 나중에 ApplyControlToken 함수를 사용하여 세션을 다시 시작 가능하게 만들 수 있습니다.

SCH_CRED_IGNORE_NO_REVOCATION_CHECK
0x00000800
해지된 인증서를 확인할 때는 CRYPT_E_NO_REVOCATION_CHECK 오류를 무시합니다. 추가 제한 사항은 비고를 참조하세요.
SCH_CRED_IGNORE_REVOCATION_OFFLINE
0x00001000
해지된 인증서를 확인할 때는 CRYPT_E_REVOCATION_OFFLINE 오류를 무시합니다. 추가 제한 사항은 비고를 참조하세요.
SCH_CRED_MANUAL_CRED_VALIDATION
0x00000008
클라이언트 전용입니다.

Schannel이 수신된 서버 인증서 체인의 유효성을 검사하지 못하도록 합니다.

SCH_CRED_NO_DEFAULT_CREDS
0x00000010
클라이언트 전용입니다.

Schannel이 클라이언트 인증을 위해 인증서 체인을 자동으로 제공하지 못하도록 합니다.

SCH_CRED_NO_SERVERNAME_CHECK
0x00000004
클라이언트 전용입니다.

Schannel이 제공된 대상 이름을서버 인증서의 주체 이름과 비교하지 못하도록 합니다.

SCH_CRED_NO_SYSTEM_MAPPER
0x00000002
서버 전용입니다.

Schannel이 기본 제공 시스템 인증서 매핑 함수를 사용하여 클라이언트 인증서를 사용자 계정에 매핑하지 못하도록 합니다.

SCH_CRED_REVOCATION_CHECK_CHAIN
0x00000200
인증서 체인의 유효성을 검사할 때 모든 인증서에서 해지를 확인합니다. 추가 제한 사항은 비고를 참조하세요.
SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
0x00000400
인증서 체인의 유효성을 검사할 때 루트에서 해지를 확인하지 마세요. 추가 제한 사항은 비고를 참조하세요.
SCH_CRED_REVOCATION_CHECK_END_CERT
0x00000100
인증서 체인의 유효성을 검사할 때 마지막 인증서만 해지해야 합니다. 추가 제한 사항은 비고를 참조하세요.
SCH_CRED_USE_DEFAULT_CREDS
0x00000040
클라이언트 전용입니다.

Schannel은 클라이언트 인증을 위해 인증서 체인을 자동으로 제공하려고 시도합니다. 이 값은 SCH_CRED_NO_DEFAULT_CREDS 반대입니다.

SCH_SEND_AUX_RECORD
0x00200000
암호화 블록 체인 모드를 사용하는 대칭 암호 그룹과 함께 사용할 때 SSL/TLS 프로토콜에 있는 약점에 대응하기 위해 데이터를 두 개의 별도 레코드로 분할하도록 Schannel에 지시합니다. 자세한 내용은 SSL/TLS의 취약성을 참조하여 정보 공개허용합니다.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP 및 Windows XP/2000: 이 플래그는 지원되지 않습니다.

SCH_SEND_ROOT_CERT
0x00040000
Schannel은 인증서 메시지의 일부로 루트 인증서를 보냅니다.
참고 Schannel 클라이언트 또는 서버에서 네트워크를 통해 보낸 루트 인증서를 신뢰할 수 없습니다. 루트 인증서의 신뢰할 수 있는 해시에 대해 유효성을 검사해야 합니다.
 
SCH_USE_STRONG_CRYPTO
0x00400000
더 나은 상호 운용성을 위해 사용할 수 있는 알려진 약한 암호화 알고리즘, 암호 그룹 및 SSL/TLS 프로토콜 버전을 사용하지 않도록 Schannel에 지시합니다.
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
Schannel에 PSK 암호 그룹만 선택하고 다른 모든 암호 그룹을 사용하지 않도록 설정하도록 지시합니다.

dwCredFormat

커널 모드 Schannel은 다음 값을 지원합니다.

Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP 및 Windows XP/2000: 이 플래그는 지원되지 않으며 0이어야 합니다.

의미
SCH_CRED_FORMAT_CERT_HASH
0x00000001
전달된 SCHANNEL_CRED 구조체의 paCred 멤버는 인증서 지문이 포함된 길이 20의 바이트 배열에 대한 포인터여야 합니다. 인증서는 로컬 컴퓨터의 "MY" 저장소에 있는 것으로 간주됩니다.
SCH_CRED_FORMAT_CERT_HASH_STORE
0x00000002
SCHANNEL_CRED 구조체의 paCred 멤버는 SCHANNEL_CERT_HASH_STORE 구조를 가리킵니다.

발언

다음 인증서 해지 플래그는 상호 배타적입니다.

  • SCH_CRED_REVOCATION_CHECK_CHAIN
  • SCH_CRED_REVOCATION_CHECK_END_CERT
  • SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT

Schannel에 대한 인증서 해지 오류 보고를 사용자 지정하려면 다음 플래그를 사용합니다.

  • SCH_CRED_IGNORE_NO_REVOCATION_CHECK
  • SCH_CRED_IGNORE_REVOCATION_OFFLINE

Schannel이 인증서 체인의 해지 상태를 확인하는 경우 이러한 플래그는 각각 CRYPT_E_NO_REVOCATION_CHECK 무시하도록 지시하고 오류를 CRYPT_E_REVOCATION_OFFLINE. 인증서 해지 플래그가 설정되지 않은 경우 이러한 플래그는 무시됩니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 8.1 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 R2 [데스크톱 앱만 해당]
헤더 schannel.h(Schnlsp.h 포함)

참고 항목

QuerySecurityContextToken