다음을 통해 공유


SCH_CREDENTIALS 구조체(schannel.h)

SCH_CREDENTIALS 구조에는 Schannel 자격 증명에 대한 초기화 정보가 포함되어 있습니다.

구문

typedef struct _SCH_CREDENTIALS {
  DWORD           dwVersion;
  DWORD           dwCredFormat;
  DWORD           cCreds;
  PCCERT_CONTEXT  *paCred;
  HCERTSTORE      hRootStore;
  DWORD           cMappers;
  _HMAPPER        **aphMappers;
  struct          _HMAPPER;
  DWORD           dwSessionLifespan;
  DWORD           dwFlags;
  DWORD           cTlsParameters;
  PTLS_PARAMETERS pTlsParameters;
} SCH_CREDENTIALS, *PSCH_CREDENTIALS;

멤버

dwVersion

를 SCH_CREDENTIALS_VERSION.

dwCredFormat

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

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

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

cCreds

paCred 배열의 구조체 수입니다.

paCred

CERT_CONTEXT 구조체에 대한 포인터 배열입니다. 각 포인터는 애플리케이션을 인증하는 데 사용할 프라이빗 키가 포함된 인증서를 지정합니다.

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

hRootStore

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

cMappers

예약되어 있습니다.

aphMappers

예약되어 있습니다.

_HMAPPER

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)을 호출하는 동안 지정된 자격 증명의 유효성을 검사할 때 Schannel에 CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 플래그를 CertGetCertificateChain 함수에 전달하도록 지시합니다.

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의 취약성이 정보 공개를 허용할 수 있음"을 http://support.microsoft.com/kb/2643584참조하세요.

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
Schannel에 알려진 약한 암호화 알고리즘, 암호화 도구 모음 및 상호 운용성을 높이기 위해 사용하도록 설정할 수 있는 SSL/TLS 프로토콜 버전을 사용하지 않도록 설정합니다.
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
Schannel에게 PSK 암호 그룹만 선택하고 다른 모든 암호 그룹을 사용하지 않도록 설정하도록 지시합니다.

cTlsParameters

pTlsParameters 배열의 항목 수입니다.

SCH_CRED_MAX_SUPPORTED_PARAMETERS 이상을 지정하는 것은 오류입니다.

pTlsParameters

TLS 매개 변수 제한(있는 경우)을 나타내는 TLS_PARAMETERS 구조체에 대한 포인터의 배열입니다. 제한을 지정하지 않으면 시스템 기본값이 사용됩니다. 애플리케이션은 시스템 기본값을 사용하는 것이 좋습니다.

cAlpnIds == 0 및 rgstrAlpnIds == NULL을 사용하여 둘 이상의 TLS_PARAMETERS 구조를 포함하는 것은 오류입니다.

설명

SCH_CREDENTIALS 구조를 사용하려면 UNICODE_STRING 및 PUNICODE_STRING 함께 SCHANNEL_USE_BLACKLISTS 정의합니다. 또는 Ntdef.h, SubAuth.h 또는 Winternl.h를 포함합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 1809 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 1809 [데스크톱 앱만 해당]
머리글 schannel.h

추가 정보

CRYPTO_SETTINGS

TLS_PARAMETERS